Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

style.css

Blame
  • fabfile.py 1.77 KiB
    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',
        )