dockerimg: restore sketch_context docker label
The sketch_context label was removed in commit 2a5bd6d (switch to debian base image)
but the code that reads this label in findOrBuildDockerImage was left intact.
This was causing Docker to always rebuild images since the label it was checking
for no longer existed in the Dockerfile template.
Restore the label and updates the template.Execute call to pass the required
InitFilesHash parameter.
Updates #43
diff --git a/dockerimg/testdata/testcreatedockerfile_python_misery.httprr b/dockerimg/testdata/testcreatedockerfile_python_misery.httprr
index be45494..ab18318 100644
--- a/dockerimg/testdata/testcreatedockerfile_python_misery.httprr
+++ b/dockerimg/testdata/testcreatedockerfile_python_misery.httprr
@@ -1,9 +1,9 @@
httprr trace v1
-2675 1873
+2720 1878
POST https://api.anthropic.com/v1/messages HTTP/1.1
Host: api.anthropic.com
User-Agent: Go-http-client/1.1
-Content-Length: 2478
+Content-Length: 2523
Anthropic-Version: 2023-06-01
Content-Type: application/json
@@ -15,7 +15,7 @@
"content": [
{
"type": "text",
- "text": "\nCall the dockerfile tool to create a Dockerfile.\nThe parameters to dockerfile fill out the From and ExtraCmds\ntemplate variables in the following Go template:\n\n```\nFROM golang:1.24-bookworm\n\nRUN set -eux; \\\n\tapt-get update; \\\n\tapt-get install -y --no-install-recommends \\\n\t\tgit jq sqlite3 npm nodejs gh ripgrep fzf python3 curl vim\n\nENV PATH=\"$GOPATH/bin:$PATH\"\n\nRUN go install golang.org/x/tools/cmd/goimports@latest\nRUN go install golang.org/x/tools/gopls@latest\nRUN go install mvdan.cc/gofumpt@latest\n\nENV GOTOOLCHAIN=auto\n\nRUN mkdir -p /root/.cache/sketch/webui\n\nARG GIT_USER_EMAIL\nARG GIT_USER_NAME\n\nRUN git config --global user.email \"$GIT_USER_EMAIL\" \u0026\u0026 \\\n git config --global user.name \"$GIT_USER_NAME\"\n\nCOPY . /app\n\nWORKDIR /app{{.SubDir}}\nRUN if [ -f go.mod ]; then go mod download; fi\n\n{{.ExtraCmds}}\n\nCMD [\"/bin/sketch\"]\n\n```\n\nIn particular:\n- Assume it is primarily a Go project.\n- Python env setup is challenging and often no required, so any RUN commands involving python tooling should be written to let docker build continue if there is a failure.\n- Include any tools particular to this repository that can be inferred from the given context.\n- Append || true to any apt-get install commands in case the package does not exist.\n- MINIMIZE the number of extra_cmds generated. Straightforward environments do not need any.\n- Do NOT expose any ports.\n- Do NOT generate any CMD or ENTRYPOINT extra commands.\nHere is the content of several files from the repository that may be relevant:\n\n"
+ "text": "\nCall the dockerfile tool to create a Dockerfile.\nThe parameters to dockerfile fill out the From and ExtraCmds\ntemplate variables in the following Go template:\n\n```\nFROM golang:1.24-bookworm\n\nRUN set -eux; \\\n\tapt-get update; \\\n\tapt-get install -y --no-install-recommends \\\n\t\tgit jq sqlite3 npm nodejs gh ripgrep fzf python3 curl vim\n\nENV PATH=\"$GOPATH/bin:$PATH\"\n\nRUN go install golang.org/x/tools/cmd/goimports@latest\nRUN go install golang.org/x/tools/gopls@latest\nRUN go install mvdan.cc/gofumpt@latest\n\nENV GOTOOLCHAIN=auto\n\nRUN mkdir -p /root/.cache/sketch/webui\n\nARG GIT_USER_EMAIL\nARG GIT_USER_NAME\n\nRUN git config --global user.email \"$GIT_USER_EMAIL\" \u0026\u0026 \\\n git config --global user.name \"$GIT_USER_NAME\"\n\nLABEL sketch_context=\"{{.InitFilesHash}}\"\nCOPY . /app\n\nWORKDIR /app{{.SubDir}}\nRUN if [ -f go.mod ]; then go mod download; fi\n\n{{.ExtraCmds}}\n\nCMD [\"/bin/sketch\"]\n\n```\n\nIn particular:\n- Assume it is primarily a Go project.\n- Python env setup is challenging and often no required, so any RUN commands involving python tooling should be written to let docker build continue if there is a failure.\n- Include any tools particular to this repository that can be inferred from the given context.\n- Append || true to any apt-get install commands in case the package does not exist.\n- MINIMIZE the number of extra_cmds generated. Straightforward environments do not need any.\n- Do NOT expose any ports.\n- Do NOT generate any CMD or ENTRYPOINT extra commands.\nHere is the content of several files from the repository that may be relevant:\n\n"
},
{
"type": "text",
@@ -54,23 +54,23 @@
Anthropic-Organization-Id: 3c473a21-7208-450a-a9f8-80aebda45c1b
Anthropic-Ratelimit-Input-Tokens-Limit: 200000
Anthropic-Ratelimit-Input-Tokens-Remaining: 200000
-Anthropic-Ratelimit-Input-Tokens-Reset: 2025-04-30T22:04:18Z
+Anthropic-Ratelimit-Input-Tokens-Reset: 2025-05-01T01:25:24Z
Anthropic-Ratelimit-Output-Tokens-Limit: 80000
Anthropic-Ratelimit-Output-Tokens-Remaining: 80000
-Anthropic-Ratelimit-Output-Tokens-Reset: 2025-04-30T22:04:21Z
+Anthropic-Ratelimit-Output-Tokens-Reset: 2025-05-01T01:25:27Z
Anthropic-Ratelimit-Requests-Limit: 4000
Anthropic-Ratelimit-Requests-Remaining: 3999
-Anthropic-Ratelimit-Requests-Reset: 2025-04-30T22:04:18Z
+Anthropic-Ratelimit-Requests-Reset: 2025-05-01T01:25:21Z
Anthropic-Ratelimit-Tokens-Limit: 280000
Anthropic-Ratelimit-Tokens-Remaining: 280000
-Anthropic-Ratelimit-Tokens-Reset: 2025-04-30T22:04:18Z
+Anthropic-Ratelimit-Tokens-Reset: 2025-05-01T01:25:24Z
Cf-Cache-Status: DYNAMIC
-Cf-Ray: 938a55847cf9cf05-SJC
+Cf-Ray: 938b7c0b3c2b9e5c-SJC
Content-Type: application/json
-Date: Wed, 30 Apr 2025 22:04:21 GMT
-Request-Id: req_011CNfg45vZqeRUpncm8aMJG
+Date: Thu, 01 May 2025 01:25:27 GMT
+Request-Id: req_011CNfwPMwWSkNQonwYtebtX
Server: cloudflare
Via: 1.1 google
X-Robots-Tag: none
-{"id":"msg_01VzFn44Swuuo4pHL5q2HXNi","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"Based on the information provided, I see that this is primarily a Go project, but also requires Python 3.11 and the DVC tool according to the README.md. I'll create a Dockerfile with appropriate extra commands to set up these requirements."},{"type":"tool_use","id":"toolu_01UhMAHuapY5DwfyQB1iNAez","name":"dockerfile","input":{"extra_cmds":"# Install Python 3.11 and ensure it's the default python3\nRUN apt-get update && apt-get install -y --no-install-recommends python3.11 python3.11-venv python3-pip || true\nRUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1\n\n# Install DVC tool\nRUN pip3 install dvc || true"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":900,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":211}}
\ No newline at end of file
+{"id":"msg_01X4EW9PpfxCdujwVQFTfFNW","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"Based on the README.md, I can see that this project requires Python 3.11 and the DVC tool, which should be included in the Dockerfile. I'll call the dockerfile tool with appropriate extra commands to set up these requirements."},{"type":"tool_use","id":"toolu_01WSaqTV4yGpqQzBnPSPMfJS","name":"dockerfile","input":{"extra_cmds":"# Install Python 3.11\nRUN apt-get update && apt-get install -y --no-install-recommends python3.11 python3.11-dev python3.11-venv python3-pip || true\n\n# Set up Python environment\nRUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 || true\n\n# Install DVC tool\nRUN pip3 install dvc || true"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":915,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":215}}
\ No newline at end of file