diff --git a/ckanext/dgu/controllers/data.py b/ckanext/dgu/controllers/data.py
index 8e713adc9..f07ce4740 100644
--- a/ckanext/dgu/controllers/data.py
+++ b/ckanext/dgu/controllers/data.py
@@ -33,12 +33,25 @@ def __before__(self, action, **env):
def linked_data_admin(self):
"""
+ Instructions for installing Ruby via RVM:
+
+ \curl -sSL https://get.rvm.io | bash -s stable
+ # Comment out lines in .bashrc and .bash_profile
+ source "$HOME/.rvm/scripts/rvm"
+ rvm autolibs distable
+ rvm install 1.9.3
+ rvm use 1.9.3
+ rvm gemset create ukgovld
+ rvm alias create ukgovldwg 1.9.3@ukgovld
+ cd /vagrant/src/ckanext-dgu/
+ ~/.rvm/wrappers/ukgovldwg/bundle
+ rvm wrapper ukgovldwg jekyll
"""
import git
if not dgu_helpers.is_sysadmin() and not c.user in ['user_d24373', 'user_d102361']:
- abort(403)
+ abort(401)
prefix = 'dgu.jekyll.ukgovld.'
c.repo_url = pylons.config.get(prefix + "repo.url", None)
@@ -47,6 +60,14 @@ def linked_data_admin(self):
build_path = pylons.config.get(prefix + "local.build", None)
deploy_path = pylons.config.get(prefix + "local.deploy", None)
+ if not os.path.exists(source_repo_path) and source_repo_path.startswith('/tmp/'):
+ # Directories in /tmp won't survive a reboot
+ os.makedirs(source_repo_path)
+
+ if not os.path.exists(build_path) and build_path.startswith('/tmp/'):
+ # Directories in /tmp won't survive a reboot
+ os.makedirs(build_path)
+
if not all([c.repo_url, c.repo_branch, source_repo_path, build_path,
deploy_path]) or \
not os.path.exists(source_repo_path):
@@ -65,6 +86,7 @@ def linked_data_admin(self):
# Get updates from the repo
repo.git.fetch()
repo.git.checkout(c.repo_branch)
+ repo.git.rebase()
repo.git.branch("--set-upstream", "gh-pages", "origin/gh-pages")
# Get the repo's current commit (we call it: repo_status)
@@ -73,8 +95,9 @@ def linked_data_admin(self):
c.repo_status = '"%s" %s (%s)' % (latest_remote_commit.message,
latest_when, str(latest_remote_commit)[:8])
- index_html_filepath = os.path.join(build_path, 'index.html')
+ index_html_filepath = os.path.join(deploy_path, 'index.html')
repo_status_filepath = os.path.join(build_path, 'repo_status.txt')
+ status_filepath = os.path.join(deploy_path, 'repo_status.txt')
if request.method == "POST":
def get_exitcode_stdout_stderr(cmd):
@@ -90,10 +113,8 @@ def get_exitcode_stdout_stderr(cmd):
out, err = proc.communicate()
exitcode = proc.returncode
return exitcode, out, err
- config_paths = ','.join((os.path.join(source_repo_path, '_config.yml'),
- os.path.join(source_repo_path, '_config_dgu.yml')))
- cmd_line = 'bundle exec jekyll build --config "%s" --source "%s" --destination "%s"'\
- % (config_paths, source_repo_path, build_path)
+ cmd_line = '/home/co/.rvm/wrappers/ukgovldwg/jekyll build --source "%s" --destination "%s"'\
+ % (source_repo_path, build_path)
c.exitcode, out, err = get_exitcode_stdout_stderr(cmd_line)
c.stdout = cmd_line + '
' + out.replace('\n','
')
c.stderr = err.replace('\n','
')
@@ -107,14 +128,6 @@ def get_exitcode_stdout_stderr(cmd):
# e.g. permission error, when running in paster
log.exception(e)
- c.last_deploy = 'Never'
- if os.path.exists(index_html_filepath):
- s = os.stat(index_html_filepath)
- c.last_deploy = datetime.datetime.fromtimestamp(int(s.st_mtime)).strftime('%H:%M %d-%m-%Y')
- if os.path.exists(repo_status_filepath):
- with open(repo_status_filepath, 'r') as f:
- c.deploy_status = f.read()
-
if c.exitcode == 0 and deploy_path and os.path.exists(deploy_path):
# Use distutils to copy the entire tree, shutil will likely complain
import distutils.core
@@ -124,6 +137,14 @@ def get_exitcode_stdout_stderr(cmd):
log.exception(e)
c.deploy_error = 'Site not deployed - error with deployment: %r' % e.args
+ c.last_deploy = 'Never'
+ if os.path.exists(index_html_filepath):
+ s = os.stat(index_html_filepath)
+ c.last_deploy = datetime.datetime.fromtimestamp(int(s.st_mtime)).strftime('%H:%M %d-%m-%Y')
+ if os.path.exists(status_filepath):
+ with open(status_filepath, 'r') as f:
+ c.deploy_status = f.read()
+
if c.exitcode == 1:
c.deploy_error = "Site not deployed, Jekyll did not complete successfully."
diff --git a/pip-requirements-local.txt b/pip-requirements-local.txt
index 856352296..3c3f1138c 100644
--- a/pip-requirements-local.txt
+++ b/pip-requirements-local.txt
@@ -20,3 +20,6 @@ pastescript
beautifulsoup4
nltk
+
+# Git Python for UK Gov Linked Data
+GitPython==0.3.2.RC1