Commit 5fb6ecc8 authored by Léo-Paul Géneau's avatar Léo-Paul Géneau 👾

software/html5as: split download and extraction

See merge request !1268
parent bad7c710
Pipeline #24053 failed with stage
in 0 seconds
...@@ -21,7 +21,7 @@ md5sum = 23c15a579b66cef866b30a2f53b1b737 ...@@ -21,7 +21,7 @@ md5sum = 23c15a579b66cef866b30a2f53b1b737
[instance_html5as] [instance_html5as]
_update_hash_filename_ = instance_html5as.cfg.in _update_hash_filename_ = instance_html5as.cfg.in
md5sum = 743f7ec8718de67f31720a68258a5ff2 md5sum = fc1dd9faf99a4f75e3727b80bb2d59fb
[template_nginx_conf] [template_nginx_conf]
_update_hash_filename_ = templates/nginx_conf.in _update_hash_filename_ = templates/nginx_conf.in
......
...@@ -90,7 +90,7 @@ path_access_log = ${basedirectory:log}/nginx.access.log ...@@ -90,7 +90,7 @@ path_access_log = ${basedirectory:log}/nginx.access.log
path_error_log = ${basedirectory:log}/nginx.error.log path_error_log = ${basedirectory:log}/nginx.error.log
path_tmp = ${tempdirectory:tmp} path_tmp = ${tempdirectory:tmp}
# Docroot # Docroot
docroot = ${downloader:location} docroot = ${docroot:location}
default_index = ${:docroot}/index.html default_index = ${:docroot}/index.html
# Config files # Config files
path_nginx_conf = ${directory:etc}/nginx.conf path_nginx_conf = ${directory:etc}/nginx.conf
...@@ -127,42 +127,39 @@ output = ${html5as:bin_launcher} ...@@ -127,42 +127,39 @@ output = ${html5as:bin_launcher}
context = context =
section param_html5as html5as section param_html5as html5as
# Command to put content in the docroot # Command to download archive from provided url
[downloader] [downloader]
recipe = slapos.recipe.build:download
# We add: or '', otherwise jinja2 will render a 'None' string
url = {{ parameter_dict['download_url'] or '' }}
# Allow to use slapos.recipe.build:download which can only be used in "online" mode
offline = false
# Command to put content in the docroot
[docroot]
recipe = slapos.recipe.build recipe = slapos.recipe.build
# Path where the recipe stores any produced file, # Path where the recipe stores any produced file,
# it will be automatically removed at the beginning of "install". # it will be automatically removed at the beginning of "install".
location = ${directory:srv}/html5as location = ${directory:srv}/html5as
# All the keys in this section will be available as a dict called "self.options" # All the keys in this section will be available as a dict called "self.options"
# We add: or '', otherwise jinja2 will render a 'None' string archive = {{ '${downloader:destination}' if parameter_dict['download_url'] else '' }}
url = {{ parameter_dict['download_url'] or '' }}
default_index_html = ${default_index_html:output} default_index_html = ${default_index_html:output}
# If a tarball is passed as a parameter in download url # If a tarball is passed as a parameter in download url
# it's content will be served by the instance. # it's content will be served by the instance.
# If the parameter is not provided it fallback to the default template # If the parameter is not provided it fallback to the default template
install = install =
import os, shutil import os, shutil
buildout_offline = self.buildout['buildout']['offline'] if self.options['archive']:
try: # Create a directory and extract the file that are compressed inside
# Allow to do self.download() which can only be used in "online" mode extract_dir = self.extract(self.options['archive'])
self.buildout['buildout']['offline'] = 'false' # Return the right directory path
if self.options['url']: workdir = guessworkdir(extract_dir)
# Use fonctions from the slapos.recipe.build repository # Recursively copy directory
# Download a file from a URL to a temporary path self.copyTree(workdir, location)
file = self.download(self.options['url']) else:
# Create a directory and extract the file that are compressed inside # Create directory and copy the default template inside
extract_dir = self.extract(file) os.makedirs(location)
# Return the right directory path shutil.copy(self.options['default_index_html'], location)
workdir = guessworkdir(extract_dir)
# Recursively copy directory
self.copyTree(workdir, location)
else:
# Create directory and copy the default template inside
os.makedirs(location)
shutil.copy(self.options['default_index_html'], location)
finally:
# reset the parameter
self.buildout['buildout']['offline'] = buildout_offline
[default_index_html] [default_index_html]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment