diff --git a/gulpfile.js b/gulpfile.js index ea48569c..e167009b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -199,14 +199,9 @@ const defaultTask = parallel( copy.html5shiv, copy.images, scss.compile, - series( - parallel( - javascripts.details, - javascripts.sharingButton, - javascripts.relativeDates - ), - restoreOriginalJavascriptFiles, - ) + javascripts.details, + javascripts.sharingButton, + javascripts.relativeDates ); exports.default = defaultTask; diff --git a/lib/utils.py b/lib/utils.py index bd707404..26efcf47 100644 --- a/lib/utils.py +++ b/lib/utils.py @@ -1,5 +1,5 @@ -import hashlib import os +import re from pathlib import Path from jinja2 import Markup, escape @@ -20,7 +20,14 @@ def paragraphize(value, classes="govuk-body-l govuk-!-margin-bottom-4"): def file_fingerprint(path, root=DIST): - contents = open(str(root) + path, 'rb').read() - hash = hashlib.sha256(contents).hexdigest()[:8] - filename, extension = os.path.splitext(path) - return f'{filename}-{hash}{extension}' + path = Path(path).relative_to('/') # path comes in as absolute, rooted to the dist folder + path_regex = re.compile(f'^{path.stem}-[0-9a-z]{{8}}{path.suffix}$') # regexp based on the filename + a 8 char hash + matches = [ + filename for filename + in os.listdir(str(root / path.parent)) + if path_regex.search(filename)] + + if len(matches) == 0: + raise OSError(f'{str(root / path.parent / path.stem)}-[hash]{path.suffix} referenced but not available') + + return f'/{path.parent}/{matches[0]}'