Implement project templates for file generation
This commit is contained in:
@@ -1 +1,153 @@
|
|||||||
"""Templates package."""
|
"""Templates package for generating project files."""
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from tracker.models import Project
|
||||||
|
|
||||||
|
|
||||||
|
def get_readme_template(project: Optional[Project] = None) -> str:
|
||||||
|
"""Get the README.md template for a project.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
project: Optional project instance for personalization.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
README.md template string.
|
||||||
|
"""
|
||||||
|
name = project.name if project else "Project Name"
|
||||||
|
description = project.description if project else "_No description_"
|
||||||
|
status = project.status if project else "inbox"
|
||||||
|
|
||||||
|
return f"""# {name}
|
||||||
|
|
||||||
|
{description}
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
_TODO: Define objective_
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
**Current Status:** {status}
|
||||||
|
|
||||||
|
<!-- AUTOGEN:STATUS_START -->
|
||||||
|
Status: {status}
|
||||||
|
<!-- AUTOGEN:STATUS_END -->
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
_Current context and background_
|
||||||
|
|
||||||
|
## Stack / Tools
|
||||||
|
|
||||||
|
- _Tool 1_
|
||||||
|
- _Tool 2_
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
_Brief architecture description_
|
||||||
|
|
||||||
|
## Technical Decisions
|
||||||
|
|
||||||
|
_No decisions recorded yet_
|
||||||
|
|
||||||
|
## Risks / Blockers
|
||||||
|
|
||||||
|
_No blockers_
|
||||||
|
|
||||||
|
<!-- AUTOGEN:NEXT_STEPS_START -->
|
||||||
|
<!-- AUTOGEN:NEXT_STEPS_END -->
|
||||||
|
|
||||||
|
## Recent Sessions
|
||||||
|
|
||||||
|
<!-- AUTOGEN:SESSIONS_START -->
|
||||||
|
<!-- AUTOGEN:SESSIONS_END -->
|
||||||
|
|
||||||
|
_Last updated: {datetime.now().strftime('%Y-%m-%d')}_
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def get_log_template() -> str:
|
||||||
|
"""Get the LOG.md template.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
LOG.md template string.
|
||||||
|
"""
|
||||||
|
return """# Log
|
||||||
|
|
||||||
|
_Project activity log_
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def get_changelog_template() -> str:
|
||||||
|
"""Get the CHANGELOG.md template.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
CHANGELOG.md template string.
|
||||||
|
"""
|
||||||
|
return """# Changelog
|
||||||
|
|
||||||
|
_Project changes_
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def get_tasks_template() -> str:
|
||||||
|
"""Get the TASKS.md template.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
TASKS.md template string.
|
||||||
|
"""
|
||||||
|
return """# Tasks
|
||||||
|
|
||||||
|
## Inbox
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
## In Progress
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
## Blocked
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
## Waiting
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
## Done
|
||||||
|
|
||||||
|
-
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def get_meta_template(project: Project) -> dict:
|
||||||
|
"""Get the meta/project.yaml template data.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
project: Project instance.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Dictionary suitable for YAML serialization.
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
"id": project.id,
|
||||||
|
"name": project.name,
|
||||||
|
"slug": project.slug,
|
||||||
|
"description": project.description,
|
||||||
|
"type": project.type,
|
||||||
|
"status": project.status,
|
||||||
|
"tags": project.tags,
|
||||||
|
"root_path": str(project.root_path),
|
||||||
|
"repo_path": str(project.repo_path) if project.repo_path else None,
|
||||||
|
"created_at": project.created_at.isoformat(),
|
||||||
|
"updated_at": project.updated_at.isoformat(),
|
||||||
|
"last_session_at": None,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user