1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
"""Helpers for Docker image generation."""
def _docker_image_impl(ctx):
importer = ctx.actions.declare_file(ctx.label.name)
importer_content = [
"#!/bin/bash",
"set -euo pipefail",
"source_file='%s'" % ctx.file.data.path,
"if [[ ! -f \"$source_file\" ]]; then",
" source_file='%s'" % ctx.file.data.short_path,
"fi",
"exec docker import " + " ".join([
"-c '%s'" % attr
for attr in ctx.attr.statements
]) + " \"$source_file\" $1",
"",
]
ctx.actions.write(importer, "\n".join(importer_content), is_executable = True)
return [DefaultInfo(
runfiles = ctx.runfiles([ctx.file.data]),
executable = importer,
)]
docker_image = rule(
implementation = _docker_image_impl,
doc = "Tool to import a Docker image; takes a single parameter (image name).",
attrs = {
"statements": attr.string_list(doc = "Extra Dockerfile directives."),
"data": attr.label(doc = "Image filesystem tarball", allow_single_file = [".tgz", ".tar.gz"]),
},
executable = True,
)
|