@@ -201,11 +201,16 @@ def generate_manpage(parser: argparse.ArgumentParser) -> str:
201201
202202
203203def _get_jinja_env (base : Path ) -> jinja2 .Environment | None :
204- """Create Jinja2 environment looking first in .daemonless/templates, then bundled."""
204+ """Create Jinja2 environment with override priority:
205+ 1. repo root (README.j2 alongside Containerfile.j2)
206+ 2. .daemonless/templates/
207+ 3. bundled dbuild templates
208+ """
205209 if jinja2 is None :
206210 return None
207211
208212 search_paths = [
213+ base ,
209214 base / ".daemonless" / "templates" ,
210215 Path (__file__ ).parent / "templates" ,
211216 ]
@@ -447,13 +452,16 @@ def run(cfg: Config, args: argparse.Namespace) -> int:
447452 log .error ("Could not find dbuild templates." )
448453 return 1
449454
450- # 1. Generate README.md (if docs: manual isn't set)
455+ # 1. Generate README.md (if docs: manual isn't set, or if a local README.j2 exists )
451456 is_manual = (cfg .metadata .docs == "manual" or
452457 (isinstance (cfg .metadata .docs , dict ) and cfg .metadata .docs .get ("manual" , False )))
458+ has_local_readme_j2 = (base / "README.j2" ).exists ()
453459
454- if is_manual :
460+ if is_manual and not has_local_readme_j2 :
455461 log .info ("Skipping README.md generation (docs: manual)" )
456462 else :
463+ if is_manual and has_local_readme_j2 :
464+ log .info ("docs: manual — using local README.j2 override" )
457465 try :
458466 template = env .get_template ("README.j2" )
459467 content = template .render (context , render_mode = "github" )
0 commit comments