|
|
@@ -0,0 +1,71 @@ |
|
|
import os |
|
|
from time import time |
|
|
from fabric.api import sudo, run, task, env, cd, get, local |
|
|
from fabric.context_managers import shell_env |
|
|
|
|
|
env.hosts = ['yourhost'] |
|
|
env.user = 'yoursshuser' |
|
|
env.password = 'yoursshpassword' |
|
|
# env.key_filename = '~/yourkey.pem' |
|
|
|
|
|
REPO_PATH = "/var/www/repopath" |
|
|
THEME_PATH = "{0}/wp-content/themes/yourtheme".format(REPO_PATH) |
|
|
UPLOADS_PATH = "{0}/wp-content/uploads".format(REPO_PATH) |
|
|
|
|
|
LOCAL_DOMAINS = ['http://domain.local', '//localhost:3000'] |
|
|
DEV_DOMAIN = 'http://{0}'.format(env.hosts[0]) |
|
|
|
|
|
POST_EXPORT_PATH = 'posts-exports/' |
|
|
|
|
|
@task |
|
|
def download_files(): |
|
|
local('ssh-add {0}'.format(env.key_filename)) |
|
|
local('rsync -avz --progress {1}@{0}:{2}/* ./wp-content/uploads/'\ |
|
|
.format(env.hosts[0], env.user, UPLOADS_PATH) |
|
|
) |
|
|
|
|
|
@task |
|
|
def upload_files(): |
|
|
local('ssh-add {0}'.format(env.key_filename)) |
|
|
local('rsync -avz --progress --no-perms --omit-dir-times ./wp-content/uploads/* {1}@{0}:{2}/'\ |
|
|
.format(env.hosts[0], env.user, UPLOADS_PATH) |
|
|
) |
|
|
|
|
|
@task |
|
|
def search_replace(): |
|
|
for domain in LOCAL_DOMAINS: |
|
|
run('wp search-replace "{0}" "{1}" --all-tables'.format(domain, DEV_DOMAIN)) |
|
|
|
|
|
@task |
|
|
def update_site(): |
|
|
upload_files() |
|
|
with cd(REPO_PATH): |
|
|
sudo('git pull origin master') |
|
|
search_replace() |
|
|
|
|
|
with cd(THEME_PATH): |
|
|
sudo('gulp dist') |
|
|
run('exit') |
|
|
|
|
|
@task |
|
|
def download_files(): |
|
|
local('ssh-add {0}'.format(env.key_filename)) |
|
|
local('rsync -avz --progress {1}@{0}:{2}/* ./wp-content/uploads/'\ |
|
|
.format(env.hosts[0], env.user, UPLOADS_PATH) |
|
|
) |
|
|
|
|
|
@task |
|
|
def sync_posts(*posts): # Post IDs as arguments example. fab sync_posts:621,79 |
|
|
for post in posts: |
|
|
local('wp export --dir={0} --post__in={1} --filename_format={1}.xml'.format(POST_EXPORT_PATH, post)) |
|
|
local('git add {0}'.format(POST_EXPORT_PATH)) |
|
|
local("git commit -m 'Adding Posts {0}'".format(posts)) |
|
|
local('git push origin master') |
|
|
with cd(REPO_PATH): |
|
|
sudo('git pull origin master') |
|
|
for post in posts: |
|
|
run('wp post delete {0} --force'.format(post)) |
|
|
run('wp import {0}{1}.xml --authors=create'.format(POST_EXPORT_PATH, post)) |
|
|
search_replace() |
|
|
upload_files() |
|
|
|