轻松从一个目录(CommandPath)调用命令

CommandPath 是一个对象,你可以创建它来表示包含可执行文件的目录。然后,你可以使用该对象获取命令对象,然后运行这些对象。

此功能的创建是为了能够创建引用其 bin 目录的“postgres”或“node”或“virtualenv”CommandPath 对象。这些 bin 目录中的命令(例如 postgres / psql)可以运行,并且能够直接调用该目录中的其他命令,而无需引用绝对路径。

从 CommandPath 对象创建的命令对象将自动在 PATH 的开头添加该目录后运行。这意味着它们可以相互直接运行,无需指定目录。

bin_directory/ls

#!/bin/bash
echo hello $1 > output
bin_directory/command1
#!/bin/bash
ls $1
bin_directory/command2
#!/bin/bash
echo hello $1 > output
bin_directory/command_calling_command_in_path
#!/bin/bash
command1 tom
bin_directory/command.with.dots
#!/bin/bash
echo hello dots > output

from commandlib import CommandPath

command_path = CommandPath("./bin_directory")

从 CommandPath 运行命令

command_path.command1("harry").run()

'output' 文件将包含

hello harry

命令可以在 CommandPath 中调用其他命令,而无需指定其路径

command_path.command_calling_command_in_path("tom").run()

'output' 文件将包含

hello tom

命令路径中带有点的命令将转换为下划线

command_path.command_with_dots("tom").run()

'output' 文件将包含

hello dots

引用不存在的命令会引发异常

command_path.non_existent_command
commandlib.exceptions.CommandError:
'non_existent_command' not found in '/path/to/bin_directory'

可执行规范

command-path.story storytests 自动生成的文档。