From 91b8ecfb634a324e788783acd3c9dd43f7e22f57 Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Fri, 12 Sep 2014 14:01:10 -0400 Subject: [PATCH] Fix broken regex for Dockerfile parsing --- tools/reparsedockerfile.py | 18 ++++++++++++++++++ util/dockerfileparse.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tools/reparsedockerfile.py diff --git a/tools/reparsedockerfile.py b/tools/reparsedockerfile.py new file mode 100644 index 000000000..19dce6cd4 --- /dev/null +++ b/tools/reparsedockerfile.py @@ -0,0 +1,18 @@ +from util.dockerfileparse import parse_dockerfile, ParsedDockerfile, serialize_dockerfile + +with open('Dockerfile.test', 'r') as dockerfileobj: + parsed_dockerfile = parse_dockerfile(dockerfileobj.read()) + +quay_reponame = 'something' +env_command = { + 'command': 'ENV', + 'parameters': 'QUAY_REPOSITORY %s' % quay_reponame +} + +for index, command in reversed(list(enumerate(parsed_dockerfile.commands))): + if command['command'] == 'FROM': + new_command_index = index + 1 + parsed_dockerfile.commands.insert(new_command_index, env_command) + break + +print serialize_dockerfile(parsed_dockerfile) diff --git a/util/dockerfileparse.py b/util/dockerfileparse.py index cabaf6b16..398673a5d 100644 --- a/util/dockerfileparse.py +++ b/util/dockerfileparse.py @@ -1,6 +1,6 @@ import re -LINE_CONTINUATION_REGEX = re.compile('\s*\\\s*\n') +LINE_CONTINUATION_REGEX = re.compile(r'(\s)*\\(\s)*\n') COMMAND_REGEX = re.compile('([A-Za-z]+)\s(.*)') COMMENT_CHARACTER = '#'