2013-05-24 2 views
3

Как вы контролируете, как настраиваются пользовательские команды Fabric?Как переименовать команды с именами строк

Я организую свои команды в различных пакетах, как:

mydomain 
    __init__.py 
    db.py 
     @task 
     def create()... 

     @task() 
     def dump()... 

     @task 
     def shell()... 

И когда я бегу fab --list, я вижу ткани обнажает мои команды с префиксом mydomain:

mydomain.db.create 
mydomain.db.dump 
mydomain.db.shell 

Как получить ткань упасть префикс mydomain, сохраняя при этом задачи, организованные в моем пользовательском пространстве имен? Я попытался указать имя в @task(name=...), но это не влияет на пространство имен.

+1

Вы импортируете команды из другого модуля в свой файл, или вы возились с функцией main()? Это два случая, которые это произошло для меня – Greg

ответ

1

У меня есть следующая структура, которая не имеет префикса с именем пакета.

fab --version 
Fabric 1.8.0 
Paramiko 1.12.0 

rootdir/ 
    fabfile.py 
    mydomain/ 
      __init__.py 
      db.py 
      other.py 

fabfile.py

from fabric.api import task 
from mydomain import db, other 

@task 
def boom(): 
    print "boom" 

db.py

from fabric.api import task 

@task 
def create(): 
    print "create" 

@task() 
def dump(): 
    print "dump" 

other.py

from fabric.api import task 

@task 
def do_stuff(): 
    print "doing stuff" 

FAB --list выход

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 

Так посмотрим на то, как ваш импортируют свои пакеты, которые, кажется, что вызывает его