12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- from fabric.api import *
- import fabric.contrib.project as project
- import os
- import sys
- import SimpleHTTPServer
- import SocketServer
- # Local path configuration (can be absolute or relative to fabfile)
- env.deploy_path = 'output'
- DEPLOY_PATH = env.deploy_path
- # Remote server configuration
- production = 'root@localhost:22'
- dest_path = '/var/www'
- # Rackspace Cloud Files configuration settings
- env.cloudfiles_username = 'my_rackspace_username'
- env.cloudfiles_api_key = 'my_rackspace_api_key'
- env.cloudfiles_container = 'my_cloudfiles_container'
- def clean():
- if os.path.isdir(DEPLOY_PATH):
- local('rm -rf {deploy_path}'.format(**env))
- local('mkdir {deploy_path}'.format(**env))
- def build():
- local('pelican -s pelicanconf.py')
- def rebuild():
- clean()
- build()
- def regenerate():
- local('pelican -r -s pelicanconf.py')
- def serve():
- os.chdir(env.deploy_path)
- PORT = 8000
- class AddressReuseTCPServer(SocketServer.TCPServer):
- allow_reuse_address = True
- server = AddressReuseTCPServer(('', PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
- sys.stderr.write('Serving on port {0} ...\n'.format(PORT))
- server.serve_forever()
- def reserve():
- build()
- serve()
- def preview():
- local('pelican -s publishconf.py')
- def cf_upload():
- rebuild()
- local('cd {deploy_path} && '
- 'swift -v -A https://auth.api.rackspacecloud.com/v1.0 '
- '-U {cloudfiles_username} '
- '-K {cloudfiles_api_key} '
- 'upload -c {cloudfiles_container} .'.format(**env))
- @hosts(production)
- def publish():
- local('pelican -s publishconf.py')
- project.rsync_project(
- remote_dir=dest_path,
- exclude=".DS_Store",
- local_dir=DEPLOY_PATH.rstrip('/') + '/',
- delete=True,
- extra_opts='-c',
- )
|