#!/usr/bin/env python from __future__ import print_function import json import tempfile import git from flask import Flask, request import sarge from systemd.journal import JournalHandler DESTINATION = "/var/www/dennogumi-test/" REPO = "dennogumi.org" app = Flask(__name__) @app.route("/", methods=["POST"]) def push_hook_to_server(): app.logger.info("New data received. Processing...") handler = JournalHandler() app.logger.addHandler(handler) data = json.loads(request.data) repository = data["repository"] if repository["name"] != REPO: app.logger.warning("Repository not found.") return "OK" repo_url = repository["url"] temp = tempfile.mkdtemp() app.logger.info("Cloning repository...") git.Repo.clone_from(repo_url, temp) cmd = "/home/einar/bin/jekyll_clone_repo.sh {0} {1}" cmd = sarge.shell_format(cmd, temp, DESTINATION) app.logger.info("Deploying Jekyll...") pid = sarge.run(cmd, async=True) return "OK" if __name__ == "__main__": app.run()