Как проверить, существует ли путь с помощью Fabric2.x - PullRequest
0 голосов
/ 23 ноября 2018

Я использую версию Fabric2 и не вижу, чтобы в ней был метод, позволяющий проверить, существует ли путь к папке на удаленном сервере.Пожалуйста, дайте мне знать, как я могу добиться этого в Fabric 2 http://docs.fabfile.org/en/stable/.

Я видел похожий вопрос Проверьте, существует ли путь с использованием Fabric , но это для версии 1.x *

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018
folder = '/path/to/folder'
    if c.run('test -d {}'.format(folder), warn=True).failed:
        c.run('mkdir {}'.format(folder))
0 голосов
/ 30 января 2019

exists метод из fabric.contrib.files был перемещен в patchwork.files с небольшим изменением подписи, поэтому вы можете использовать его следующим образом:

from fabric2 import Connection
from patchwork.files import exists

conn = Connection('host')
if exists(conn, SOME_REMOTE_DIR):
   do_something()
0 голосов
/ 23 ноября 2018

Привет. Это не так сложно, вы должны использовать традиционный код Python, чтобы проверить, существует ли путь.

from pathlib import Path
from fabric import Connection as connection, task
import os


@task
def deploy(ctx):
    parent_deploy_dir = '/var/www'
    deploy_dir ='/var/www/my_folder'
    host = 'REMOTE_HOST'
    user = 'USER'
    with connection(host=host, user=user) as c:
                with c.cd(parent_deploy_dir):
                if not os.path.isdir(Path(deploy_dir)):
                    c.run('mkdir -p ' + deploy_dir)
...