Skip to content

Instantly share code, notes, and snippets.

@koenverburg
Last active July 4, 2018 14:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save koenverburg/79af6e1247597c89e8855afe5a2bc2c3 to your computer and use it in GitHub Desktop.
Save koenverburg/79af6e1247597c89e8855afe5a2bc2c3 to your computer and use it in GitHub Desktop.
Deploy scripts
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import os
import logging
import requests
import threading
from ftplib import FTP
logging.basicConfig(level=logging.INFO, format='[%(name)s][%(levelname)s] %(message)s')
logger = logging.getLogger(__name__)
class Deploy(object):
def __init__(self, _host, _user, _pass, _dist):
self.ftp = FTP(_host)
self.ftp.login(_user, _pass)
self.localDist = _dist
self.themeDirs = []
self.files = []
def _readDist(self):
for root, dirs, files in os.walk(self.localDist):
for file in files:
self.files.append(os.path.join(root.replace('./dist/', ''), file))
print(os.path.join(root.replace('./dist/', ''), file))
for dir in dirs:
self.themeDirs.append(dir)
def _uploadFile(self, file):
with open(os.path.join(self.localDist, file), 'r') as f:
print(os.path.join(self.localDist, file))
self.ftp.storbinary('STOR %s' % '/wp-content/themes/test/{0}'.format(file), f)
def _preServer(self):
for dir in self.themeDirs:
self.ftp.mkd('/wp-content/themes/test/{0}'.format(dir))
# logger
def start(self):
print(self.ftp.getwelcome())
# loop through files in dist folder
self._readDist()
self._preServer()
self.upload()
# self.close()
# upload the folders to the new folder on the server
# create new folder on the server
# swith the folders
# clean up
# flash hue lights green - nice to have
def upload(self):
for i in range(len(self.files)):
logger.info("[uploading] {0}".format(self.files[i]))
self._uploadFile(self.files[i])
def close(self):
self.ftp.quit()
threads = []
def bootstrap():
deployer = Deploy('host', 'user', 'pass', './dist')
deployer.start()
def main():
bootstrap()
# for i in range(len(__URLS__)):
# site = threading.Thread(target=bootstrap(__URLS__[i]))
# threads.append(site)
# site.start()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment