如何控制自定义Fabric命令的显示方式?
我在各种包中组织我的命令,如:
mydomain
__init__.py
db.py
@task
def create()...
@task()
def dump()...
@task
def shell()...
当我运行fab --list
时,我看到Fabric公开了以mydomain
为前缀的命令:
mydomain.db.create
mydomain.db.dump
mydomain.db.shell
如何让Fabric删除mydomain
前缀,同时仍然将任务组织在我的自定义命名空间中?我已尝试在@task(name=...)
中指定名称,但这对命名空间没有影响。
答案 0 :(得分:1)
我有以下结构,它没有包名称的前缀。
fab --version
Fabric 1.8.0
Paramiko 1.12.0
rootdir/
fabfile.py
mydomain/
__init__.py
db.py
other.py
from fabric.api import task
from mydomain import db, other
@task
def boom():
print "boom"
from fabric.api import task
@task
def create():
print "create"
@task()
def dump():
print "dump"
from fabric.api import task
@task
def do_stuff():
print "doing stuff"
fab --list
Available commands:
boom
db.create
db.dump
other.do_stuff
我注意到如果我用
导入import mydomain.db
import mydomain.other
然后输出是:
fab --list
Available commands:
boom
mydomain.db.create
mydomain.db.dump
mydomain.other.do_stuff
那么看一下你导入包的方式,这似乎是导致它的原因