如果為自己的服務提供命令行工具

當我們寫好了一個服務,或者是api或者是rpc服務,最快的最直接給用戶使用的方式,就是給用戶提供一個命令行工具,可以直接通過命令行,管理我們創建的服務。

這裡我們就基於python的cli庫fire,來編寫一套針對之前寫好的todo的api服務的命令行工具。fire是由google開發的一套快速開發命令行工具的庫。接下來,我們就開始準備開發自己的命令行工具。

首先需要安裝fire,非常簡單。

pip install fire

這裡我們因為需要連接api,要存儲一些配置信息,需要第三方的庫configparser,這個是用來解析配置文件的工具庫,同時為了在命令行可以很好的展示用戶查詢的結果,我們需要table展示查詢的結果,所以需要安裝tabulate。

pip install configparser
pip install tabulate

ok,現在所需要的依賴包都已經安裝好了,我們就開始開發自己的程序了。

如果為自己的服務提供命令行工具

看一下我們的代碼目錄結構,main.py是命令行工具的主程序,components下面是命令行工具所有支持的子命令的實現。utils裡面我們寫一些自己common的庫。

從我們的main程序看一下。

如果為自己的服務提供命令行工具

非常簡單,定義一個class,初始化函數里面,設定所有支持的子命令的類。就可以了,我們可以通過main.py的help看到支持哪些子命令。

如果為自己的服務提供命令行工具

main.py

可以看到,有兩個子命令config, todo, 然後每個子命令可以通過-- --help來顯示幫助信息。

1. config命令

主要是對我們的命令行工作,做一些配置的操作,可以設置,和顯示。

如果為自己的服務提供命令行工具

我們可以看到裡面存儲了api的地址和用戶名,密碼信息,看一下代碼的實現。

如果為自己的服務提供命令行工具

如果為自己的服務提供命令行工具

如果為自己的服務提供命令行工具

set主要是把配置信息,寫到了用戶家目錄下面的一個隱藏目錄下面。這樣,每次啟動的時候,都會去配置文件裡面讀取配置信息。

2. todo命令

這個就是調用我們api服務的子命令了。主要是支持todo的create,get,list,delete操作。

如果為自己的服務提供命令行工具

這個就是todo所有的命令操作的過程,是不是很簡單的就可以給我們的用戶提供命令行的操作了。內部的實現,也是非常的簡單,就是直接調用api顯示結果。

如果為自己的服務提供命令行工具

todo list

這裡我們簡單展示一下list的命令的實現,首先獲取token,然後把token放到headers裡面,請求調用,把結果通過tabulate展示出來。上面的註釋,都是會被fire展示在命令行的help裡面的。

如果為自己的服務提供命令行工具

可以看到執行help的時候,會顯示出todo create的幫助信息,包括用途,以及每個參數的描述。開發一個這樣的命令行,是不是超級簡單。謝謝大家。


分享到:


相關文章: