一种动态可扩展的命令shell
cloudmesh-cmd5的Python项目详细描述
CloudMesh CMD5
安装和文档
请注意,有几个包裹在 安装文件。
Links | |
---|---|
Documentation | https://cloudmesh.github.io/cloudmesh-cloud |
Code | https://github.com/cloudmesh/cloudmesh-cloud |
Installation Instructions | https://github.com/cloudmesh/get |
一个动态可扩展的命令shell。适用范围广泛 文档请参见
在这里我们还记录了如何使用pyenv virtualenv。
要求
- python大于等于3.7.3
- python大于等于2.7.15
cloudmesh能够在早期版本的python上运行,但是我们更喜欢 在最新版本上测试。
建议在安装cloudmesh之前先使用pyenv或venv。这个 将确保在用户空间中安装了CMD5的版本。
使用virtualenv或pyenv设置virtualenv。 我们有一个关于cloudmesh类的教程,用于 皮恩夫。pyenv很容易通过
$ curl https://pyenv.run | bash
将以下行添加到.bashrc或.bash_配置文件中
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
有关更多信息,请参见我们的手册
CMD5外壳和命令行
要运行shell,可以使用cms命令激活它。CMS看台 对于CloudMesh外壳:
$ cms
它将打印横幅并输入外壳:
+-------------------------------------------------------+
| ____ _ _ _ |
| / ___| | ___ _ _ __| |_ __ ___ ___ ___| |__ |
| | | | |/ _ \| | | |/ _` | '_ ` _ \ / _ \/ __| '_ \ |
| | |___| | (_) | |_| | (_| | | | | | | __/\__ \ | | | |
| \____|_|\___/ \__,_|\__,_|_| |_| |_|\___||___/_| |_| |
+-------------------------------------------------------+
| Cloudmesh CMD5 Shell |
+-------------------------------------------------------+
cms>
要查看命令列表,您可以说:
cms> help
要查看特定命令的手册页,请使用::
help COMMANDNAME
CMD 5插件机制
CMD5有一个复杂的插件机制。命令可以很容易 根据sys命令设计。
sys命令可以从源(如前所述)安装,也可以 通过PIP
$ pip install cloudmesh-sys
安装后,执行cms help sys
查看用法。现在你
只需在新目录中执行sys命令,如下所示
mycommnad
不是要实现的命令的名称。
$ mkdir mycommand $ cd mycommand $ cms sys command generate mycommand
将生成名为cloudmesh-mycommand
的目录,其中包含
命令的模板。您可以输入此模板并修改
在文件夹中实现cloudmesh/mycommand/api
和
cloudmesh/mycommand/command
使用
$ pip install .
该命令将添加到cms命令中>;
bar命令的示例如下:
它显示了命令定义的简单程度(bar.py):
from __future__ import print_function from cloudmesh.shell.command import command from cloudmesh.shell.command import PluginCommand class BarCommand(PluginCommand): @command def do_bar(self, args, arguments): """ :: Usage: command -f FILE command FILE command list This command does some useful things. Arguments: FILE a file name Options: -f specify the file """ print(arguments)
与其他CMD解决方案的一个重要区别是 可以利用(除了标准定义之外),docopts作为 定义手册页。这允许我们使用参数作为dict和 使用simple if条件解释命令。使用docopts有 贡献者被迫考虑命令的优点 以及它的选项并从一开始就记录下来。以前我们用过 不使用docopts,使用argparse。但是我们注意到 一些贡献导致了命令不正确 文档化的或开发人员提供的含糊不清的命令 导致用户混淆和错误使用。因此,我们 建议您使用docopts。
转换由@command
修饰符启用
还有手册页,并为shell创建适当的帮助消息
自动。因此无需单独介绍帮助
方法中通常需要的方法。
功能
提供以下突出显示的功能:
- 通过单独的模块轻松集成命令
- 通过CloudMesh Cloud插件开发的多云环境
- 通过CloudMesh OpenAPI插件集成OpenAPI
- 通用命令,如 manual例如 admin, banner, clear, echo, default, info, pause, plugin, quit, shell, sleep, stopwatch, sys, var, version, open, 以及其他