在代码根目录运行安装,将本地代码包进行安装,安装完成之后可以运行命令行
# 进行安装
pip install -e .
# 执行命令
cobo
# 执行子命令(config),配置参数(number=100)
cobo --enable-debug config set number 100
首先配置 PYTHONPATH,package 目录即为代码根目录(也就是 setup.py 所在目录)
# 配置路径
export PYTHONPATH=$PYTHONPATH:/path/to/your/package
# 执行命令
python -m cobo_cli.commands
# 执行子命令(config),配置参数(number=100)
python -m cobo_cli.commands --enable-debug config set number 100
命令行工具基于 click 来开发的
commands.py 是程序入口,其他 *_commands.py 为子命令
命令使用 env_file 来存储数据,通过 ctx 对象在可以访问其的数据。
ctx.obj 在 commands.py 中由 ctx.ensure_object(CommandContext)
进行初始化,后续可以通过 ctx.obj.env_manager 来调用
CommandContext 另一个参数为 env ,代表所想使用的环境(Dev, Prod)
- 子命令: 如
config
子命令,分为子命令组(config
)和直接的子命令(login
)。默认情况下直接的子命令显示帮助信息,但是像login
这种直接的子命令会直接执行 - 选项: 即 option,例如
keys
命令下的--key-type
指定不同类型;又如 主命令下的--enable-debug
通过添加与否来指定flag - 参数: 即 argument,例如
config
命令下的set
子命令 后跟的key
与value
单元测试中需要注意的有两点
- 使用 CliRunner 来 invoke 相应的命令
- 使用 isolated_filesystem() 方法可以临时创建工作目录,用于文件的保存。 由于本程序使用 .env 文件,所以这步是必要的,防止 dotenv 库无法正常识别和找到 .env 文件
命令执行前假设已经通过 pip install -e .
安装至当前虚拟python环境。
在执行时可以在主命令后追加 --enable-debug
参数显示debug级别日志,
将参数设置到 .env 文件中
cobo config set number 100
cobo config get number
cobo config unset number
生成 API/APP keypair,并存储到 .env 文件中
cobo keys generate --help
Usage: cobo keys generate [OPTIONS]
Options:
--key-type TEXT Specify the key used for API or APP.
--alg TEXT Specify the key generation algorithm.
--force Force to replace existing keys.
--help Show this message and exit.
如果 .env 中已经存在对应的 API/APP 的 key,则需要添加 --force 选项才能进行生成
cobo keys generate --key-type APP --alg ed25519
cobo keys generate --key-type APP --alg ed25519 --force
cobo login --help
Usage: cobo login [OPTIONS] COMMAND [ARGS]...
Options:
-u, --user login action associated with user dimension. default
login_type.
-o, --org login action associated with org dimension.
--org-uuid TEXT Specify the org id used for retrieve token.
--refresh-token Refresh token.
--help Show this message and exit.
获取 org token (org 授权给 App 的 Access Token 和 Refresh Token)
获取 Org Token 的前提是,Org 已经完成了对当前 App 的授权
-
生成 APP_KEY/APP_SECRET,在 Cobo Portal 创建应用过程来配置 APP_KEY
cobo keys generate --key-type APP --alg ed25519
-
将从 Cobo Portal 中注册完应用获取到的 CLIENT_ID 保存到 .env 文件中
cobo config set CLIENT_ID aYkam0BPwJrduDU3Wqu89htGDHy4ATkV
-
Org 对 App 进行授权(Org 安装应用),并进行审核。此步骤需要进行授权的 Org(大概率不是开发者自己的Org) 在 Cobo Portal的后台中进行操作。
理论上开发者可以将自己的 Org 对自己的 App授权,但是开发者开发 App 更多的是为了一般性地供其他 Org 使用。
如果只是为了自己 Org 使用,直接使用 API KEY 相关功能即可。
-
Org 完成应用的安装之后,App 便得到了 Org 的授权,此时可以获取此 Org 相关的 Token
- 获取 Access Token、Refresh Token,并存储
cobo --env sandbox login -o --org-uuid 02273047-5730-4b63-be0e-399e5d3a1054
- 刷新 Token,并存储
cobo --env sandbox login -o --org-uuid 02273047-5730-4b63-be0e-399e5d3a1054 --refresh-token
使用 -u 参数进行用户身份级别的登录,登录完成后会获取到 USER ACCESS TOKEN 用于后续请求
cobo --env sandbox login -u
cobo --enable-debug --env sandbox login -u