popeye-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +25 -0
- package/.prettierrc +8 -0
- package/README.md +320 -0
- package/dist/adapters/claude.d.ts +82 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +230 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/openai.d.ts +48 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/adapters/openai.js +257 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/auth/claude.d.ts +44 -0
- package/dist/auth/claude.d.ts.map +1 -0
- package/dist/auth/claude.js +139 -0
- package/dist/auth/claude.js.map +1 -0
- package/dist/auth/index.d.ts +61 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +141 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/keychain.d.ts +66 -0
- package/dist/auth/keychain.d.ts.map +1 -0
- package/dist/auth/keychain.js +125 -0
- package/dist/auth/keychain.js.map +1 -0
- package/dist/auth/openai-entry.d.ts +9 -0
- package/dist/auth/openai-entry.d.ts.map +1 -0
- package/dist/auth/openai-entry.js +410 -0
- package/dist/auth/openai-entry.js.map +1 -0
- package/dist/auth/openai.d.ts +71 -0
- package/dist/auth/openai.d.ts.map +1 -0
- package/dist/auth/openai.js +212 -0
- package/dist/auth/openai.js.map +1 -0
- package/dist/auth/server.d.ts +32 -0
- package/dist/auth/server.d.ts.map +1 -0
- package/dist/auth/server.js +213 -0
- package/dist/auth/server.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +10 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +162 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +10 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +215 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/create.d.ts +10 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +240 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/index.d.ts +10 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +10 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +18 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +241 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/status.d.ts +18 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +154 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +71 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive.d.ts +9 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +330 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/output.d.ts +182 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +355 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/config/defaults.d.ts +57 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +103 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +138 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +244 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +220 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +141 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/generators/index.d.ts +101 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +200 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/python.d.ts +48 -0
- package/dist/generators/python.d.ts.map +1 -0
- package/dist/generators/python.js +262 -0
- package/dist/generators/python.js.map +1 -0
- package/dist/generators/templates/index.d.ts +6 -0
- package/dist/generators/templates/index.d.ts.map +1 -0
- package/dist/generators/templates/index.js +6 -0
- package/dist/generators/templates/index.js.map +1 -0
- package/dist/generators/templates/python.d.ts +53 -0
- package/dist/generators/templates/python.d.ts.map +1 -0
- package/dist/generators/templates/python.js +454 -0
- package/dist/generators/templates/python.js.map +1 -0
- package/dist/generators/templates/typescript.d.ts +53 -0
- package/dist/generators/templates/typescript.d.ts.map +1 -0
- package/dist/generators/templates/typescript.js +394 -0
- package/dist/generators/templates/typescript.js.map +1 -0
- package/dist/generators/typescript.d.ts +64 -0
- package/dist/generators/typescript.d.ts.map +1 -0
- package/dist/generators/typescript.js +271 -0
- package/dist/generators/typescript.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/state/index.d.ts +168 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +338 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/persistence.d.ts +91 -0
- package/dist/state/persistence.d.ts.map +1 -0
- package/dist/state/persistence.js +201 -0
- package/dist/state/persistence.js.map +1 -0
- package/dist/types/cli.d.ts +132 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +17 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/consensus.d.ts +111 -0
- package/dist/types/consensus.d.ts.map +1 -0
- package/dist/types/consensus.js +29 -0
- package/dist/types/consensus.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +13 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/project.d.ts +73 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +55 -0
- package/dist/types/project.js.map +1 -0
- package/dist/types/workflow.d.ts +236 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +74 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/workflow/consensus.d.ts +89 -0
- package/dist/workflow/consensus.d.ts.map +1 -0
- package/dist/workflow/consensus.js +220 -0
- package/dist/workflow/consensus.js.map +1 -0
- package/dist/workflow/execution-mode.d.ts +82 -0
- package/dist/workflow/execution-mode.d.ts.map +1 -0
- package/dist/workflow/execution-mode.js +346 -0
- package/dist/workflow/execution-mode.js.map +1 -0
- package/dist/workflow/index.d.ts +110 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +283 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/plan-mode.d.ts +83 -0
- package/dist/workflow/plan-mode.d.ts.map +1 -0
- package/dist/workflow/plan-mode.js +241 -0
- package/dist/workflow/plan-mode.js.map +1 -0
- package/dist/workflow/test-runner.d.ts +87 -0
- package/dist/workflow/test-runner.d.ts.map +1 -0
- package/dist/workflow/test-runner.js +273 -0
- package/dist/workflow/test-runner.js.map +1 -0
- package/eslint.config.js +25 -0
- package/package.json +66 -0
- package/src/adapters/claude.ts +298 -0
- package/src/adapters/openai.ts +300 -0
- package/src/auth/claude.ts +166 -0
- package/src/auth/index.ts +171 -0
- package/src/auth/keychain.ts +138 -0
- package/src/auth/openai-entry.ts +410 -0
- package/src/auth/openai.ts +260 -0
- package/src/auth/server.ts +252 -0
- package/src/cli/commands/auth.ts +194 -0
- package/src/cli/commands/config.ts +241 -0
- package/src/cli/commands/create.ts +308 -0
- package/src/cli/commands/index.ts +10 -0
- package/src/cli/commands/resume.ts +304 -0
- package/src/cli/commands/status.ts +189 -0
- package/src/cli/index.ts +90 -0
- package/src/cli/interactive.ts +418 -0
- package/src/cli/output.ts +410 -0
- package/src/config/defaults.ts +114 -0
- package/src/config/index.ts +315 -0
- package/src/config/schema.ts +164 -0
- package/src/generators/index.ts +251 -0
- package/src/generators/python.ts +318 -0
- package/src/generators/templates/index.ts +6 -0
- package/src/generators/templates/python.ts +465 -0
- package/src/generators/templates/typescript.ts +417 -0
- package/src/generators/typescript.ts +340 -0
- package/src/index.ts +13 -0
- package/src/state/index.ts +454 -0
- package/src/state/persistence.ts +230 -0
- package/src/types/cli.ts +146 -0
- package/src/types/consensus.ts +116 -0
- package/src/types/index.ts +64 -0
- package/src/types/project.ts +85 -0
- package/src/types/workflow.ts +149 -0
- package/src/workflow/consensus.ts +299 -0
- package/src/workflow/execution-mode.ts +517 -0
- package/src/workflow/index.ts +396 -0
- package/src/workflow/plan-mode.ts +356 -0
- package/src/workflow/test-runner.ts +345 -0
- package/tests/adapters/openai.test.ts +145 -0
- package/tests/config/config.test.ts +208 -0
- package/tests/generators/generators.test.ts +185 -0
- package/tests/types/consensus.test.ts +152 -0
- package/tests/types/project.test.ts +134 -0
- package/tests/workflow/consensus.test.ts +221 -0
- package/tests/workflow/test-runner.test.ts +214 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +22 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python project templates
|
|
3
|
+
* Provides template files for Python project generation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate pyproject.toml content
|
|
7
|
+
*/
|
|
8
|
+
export function generatePyprojectToml(projectName) {
|
|
9
|
+
return `[build-system]
|
|
10
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
11
|
+
build-backend = "setuptools.build_meta"
|
|
12
|
+
|
|
13
|
+
[project]
|
|
14
|
+
name = "${projectName}"
|
|
15
|
+
version = "0.1.0"
|
|
16
|
+
description = "Generated by Popeye CLI"
|
|
17
|
+
readme = "README.md"
|
|
18
|
+
requires-python = ">=3.11"
|
|
19
|
+
license = {text = "MIT"}
|
|
20
|
+
classifiers = [
|
|
21
|
+
"Development Status :: 3 - Alpha",
|
|
22
|
+
"Intended Audience :: Developers",
|
|
23
|
+
"License :: OSI Approved :: MIT License",
|
|
24
|
+
"Programming Language :: Python :: 3",
|
|
25
|
+
"Programming Language :: Python :: 3.11",
|
|
26
|
+
"Programming Language :: Python :: 3.12",
|
|
27
|
+
]
|
|
28
|
+
dependencies = []
|
|
29
|
+
|
|
30
|
+
[project.optional-dependencies]
|
|
31
|
+
dev = [
|
|
32
|
+
"pytest>=7.0.0",
|
|
33
|
+
"pytest-cov>=4.0.0",
|
|
34
|
+
"pytest-asyncio>=0.21.0",
|
|
35
|
+
"black>=23.0.0",
|
|
36
|
+
"ruff>=0.1.0",
|
|
37
|
+
"mypy>=1.0.0",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[tool.setuptools.packages.find]
|
|
41
|
+
where = ["src"]
|
|
42
|
+
|
|
43
|
+
[tool.pytest.ini_options]
|
|
44
|
+
testpaths = ["tests"]
|
|
45
|
+
asyncio_mode = "auto"
|
|
46
|
+
addopts = "-v --cov=src --cov-report=term-missing"
|
|
47
|
+
|
|
48
|
+
[tool.black]
|
|
49
|
+
line-length = 100
|
|
50
|
+
target-version = ["py311"]
|
|
51
|
+
|
|
52
|
+
[tool.ruff]
|
|
53
|
+
line-length = 100
|
|
54
|
+
select = ["E", "F", "I", "N", "W", "UP"]
|
|
55
|
+
ignore = ["E501"]
|
|
56
|
+
|
|
57
|
+
[tool.mypy]
|
|
58
|
+
python_version = "3.11"
|
|
59
|
+
strict = true
|
|
60
|
+
warn_return_any = true
|
|
61
|
+
warn_unused_ignores = true
|
|
62
|
+
`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate requirements.txt content
|
|
66
|
+
*/
|
|
67
|
+
export function generateRequirementsTxt() {
|
|
68
|
+
return `# Core dependencies
|
|
69
|
+
# Add your dependencies here
|
|
70
|
+
|
|
71
|
+
# Development dependencies
|
|
72
|
+
pytest>=7.0.0
|
|
73
|
+
pytest-cov>=4.0.0
|
|
74
|
+
pytest-asyncio>=0.21.0
|
|
75
|
+
black>=23.0.0
|
|
76
|
+
ruff>=0.1.0
|
|
77
|
+
mypy>=1.0.0
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Generate main __init__.py content
|
|
82
|
+
*/
|
|
83
|
+
export function generateMainInit(projectName) {
|
|
84
|
+
return `"""
|
|
85
|
+
${projectName}
|
|
86
|
+
|
|
87
|
+
Generated by Popeye CLI
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
__version__ = "0.1.0"
|
|
91
|
+
`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generate main.py content
|
|
95
|
+
*/
|
|
96
|
+
export function generateMainPy(projectName) {
|
|
97
|
+
return `"""
|
|
98
|
+
Main entry point for ${projectName}.
|
|
99
|
+
|
|
100
|
+
This module serves as the primary entry point for the application.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
import logging
|
|
104
|
+
|
|
105
|
+
# Configure logging
|
|
106
|
+
logging.basicConfig(
|
|
107
|
+
level=logging.INFO,
|
|
108
|
+
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
|
109
|
+
)
|
|
110
|
+
logger = logging.getLogger(__name__)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def main() -> None:
|
|
114
|
+
"""
|
|
115
|
+
Main function.
|
|
116
|
+
|
|
117
|
+
Entry point for the application.
|
|
118
|
+
"""
|
|
119
|
+
logger.info("Starting ${projectName}")
|
|
120
|
+
# TODO: Implement main functionality
|
|
121
|
+
print("Hello from ${projectName}!")
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
if __name__ == "__main__":
|
|
125
|
+
main()
|
|
126
|
+
`;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Generate conftest.py content
|
|
130
|
+
*/
|
|
131
|
+
export function generateConftest() {
|
|
132
|
+
return `"""
|
|
133
|
+
Pytest configuration and fixtures.
|
|
134
|
+
|
|
135
|
+
This module contains shared fixtures used across all tests.
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
import pytest
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@pytest.fixture
|
|
142
|
+
def sample_data() -> dict:
|
|
143
|
+
"""
|
|
144
|
+
Provide sample data for tests.
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
dict: Sample data dictionary.
|
|
148
|
+
"""
|
|
149
|
+
return {"key": "value", "number": 42}
|
|
150
|
+
`;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Generate test_main.py content
|
|
154
|
+
*/
|
|
155
|
+
export function generateTestMain(projectName) {
|
|
156
|
+
return `"""
|
|
157
|
+
Tests for main module.
|
|
158
|
+
"""
|
|
159
|
+
|
|
160
|
+
import pytest
|
|
161
|
+
|
|
162
|
+
# Import the module to test
|
|
163
|
+
# from src.${projectName.replace(/-/g, '_')}.main import main
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
class TestMain:
|
|
167
|
+
"""Test cases for main module."""
|
|
168
|
+
|
|
169
|
+
def test_placeholder(self) -> None:
|
|
170
|
+
"""
|
|
171
|
+
Placeholder test.
|
|
172
|
+
|
|
173
|
+
This test should be replaced with actual tests.
|
|
174
|
+
"""
|
|
175
|
+
assert True
|
|
176
|
+
|
|
177
|
+
def test_sample_with_fixture(self, sample_data: dict) -> None:
|
|
178
|
+
"""
|
|
179
|
+
Test using sample_data fixture.
|
|
180
|
+
|
|
181
|
+
Args:
|
|
182
|
+
sample_data: Fixture providing sample data.
|
|
183
|
+
"""
|
|
184
|
+
assert sample_data["key"] == "value"
|
|
185
|
+
assert sample_data["number"] == 42
|
|
186
|
+
`;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Generate Dockerfile content
|
|
190
|
+
*/
|
|
191
|
+
export function generateDockerfile(projectName) {
|
|
192
|
+
return `# Python base image
|
|
193
|
+
FROM python:3.11-slim as base
|
|
194
|
+
|
|
195
|
+
# Set environment variables
|
|
196
|
+
ENV PYTHONDONTWRITEBYTECODE=1 \\
|
|
197
|
+
PYTHONUNBUFFERED=1 \\
|
|
198
|
+
PIP_NO_CACHE_DIR=1 \\
|
|
199
|
+
PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
200
|
+
|
|
201
|
+
WORKDIR /app
|
|
202
|
+
|
|
203
|
+
# Install dependencies
|
|
204
|
+
COPY requirements.txt .
|
|
205
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
|
206
|
+
|
|
207
|
+
# Copy source code
|
|
208
|
+
COPY src/ ./src/
|
|
209
|
+
|
|
210
|
+
# Production stage
|
|
211
|
+
FROM base as production
|
|
212
|
+
|
|
213
|
+
# Create non-root user
|
|
214
|
+
RUN adduser --disabled-password --gecos '' appuser
|
|
215
|
+
USER appuser
|
|
216
|
+
|
|
217
|
+
# Run the application
|
|
218
|
+
CMD ["python", "-m", "src.${projectName.replace(/-/g, '_')}.main"]
|
|
219
|
+
|
|
220
|
+
# Development stage
|
|
221
|
+
FROM base as development
|
|
222
|
+
|
|
223
|
+
# Install dev dependencies
|
|
224
|
+
RUN pip install --no-cache-dir pytest pytest-cov black ruff mypy
|
|
225
|
+
|
|
226
|
+
# Copy tests
|
|
227
|
+
COPY tests/ ./tests/
|
|
228
|
+
|
|
229
|
+
CMD ["pytest", "tests/", "-v"]
|
|
230
|
+
`;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Generate docker-compose.yml content
|
|
234
|
+
*/
|
|
235
|
+
export function generateDockerCompose(projectName) {
|
|
236
|
+
return `version: "3.8"
|
|
237
|
+
|
|
238
|
+
services:
|
|
239
|
+
app:
|
|
240
|
+
build:
|
|
241
|
+
context: .
|
|
242
|
+
target: production
|
|
243
|
+
container_name: ${projectName}
|
|
244
|
+
restart: unless-stopped
|
|
245
|
+
env_file:
|
|
246
|
+
- .env
|
|
247
|
+
volumes:
|
|
248
|
+
- ./data:/app/data
|
|
249
|
+
|
|
250
|
+
dev:
|
|
251
|
+
build:
|
|
252
|
+
context: .
|
|
253
|
+
target: development
|
|
254
|
+
container_name: ${projectName}-dev
|
|
255
|
+
volumes:
|
|
256
|
+
- ./src:/app/src
|
|
257
|
+
- ./tests:/app/tests
|
|
258
|
+
command: ["python", "-m", "src.${projectName.replace(/-/g, '_')}.main"]
|
|
259
|
+
`;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Generate .gitignore content
|
|
263
|
+
*/
|
|
264
|
+
export function generateGitignore() {
|
|
265
|
+
return `# Byte-compiled / optimized / DLL files
|
|
266
|
+
__pycache__/
|
|
267
|
+
*.py[cod]
|
|
268
|
+
*$py.class
|
|
269
|
+
|
|
270
|
+
# C extensions
|
|
271
|
+
*.so
|
|
272
|
+
|
|
273
|
+
# Distribution / packaging
|
|
274
|
+
.Python
|
|
275
|
+
build/
|
|
276
|
+
develop-eggs/
|
|
277
|
+
dist/
|
|
278
|
+
downloads/
|
|
279
|
+
eggs/
|
|
280
|
+
.eggs/
|
|
281
|
+
lib/
|
|
282
|
+
lib64/
|
|
283
|
+
parts/
|
|
284
|
+
sdist/
|
|
285
|
+
var/
|
|
286
|
+
wheels/
|
|
287
|
+
*.egg-info/
|
|
288
|
+
.installed.cfg
|
|
289
|
+
*.egg
|
|
290
|
+
|
|
291
|
+
# PyInstaller
|
|
292
|
+
*.manifest
|
|
293
|
+
*.spec
|
|
294
|
+
|
|
295
|
+
# Installer logs
|
|
296
|
+
pip-log.txt
|
|
297
|
+
pip-delete-this-directory.txt
|
|
298
|
+
|
|
299
|
+
# Unit test / coverage reports
|
|
300
|
+
htmlcov/
|
|
301
|
+
.tox/
|
|
302
|
+
.nox/
|
|
303
|
+
.coverage
|
|
304
|
+
.coverage.*
|
|
305
|
+
.cache
|
|
306
|
+
nosetests.xml
|
|
307
|
+
coverage.xml
|
|
308
|
+
*.cover
|
|
309
|
+
*.py,cover
|
|
310
|
+
.hypothesis/
|
|
311
|
+
.pytest_cache/
|
|
312
|
+
|
|
313
|
+
# Translations
|
|
314
|
+
*.mo
|
|
315
|
+
*.pot
|
|
316
|
+
|
|
317
|
+
# Environments
|
|
318
|
+
.env
|
|
319
|
+
.venv
|
|
320
|
+
env/
|
|
321
|
+
venv/
|
|
322
|
+
ENV/
|
|
323
|
+
|
|
324
|
+
# IDE
|
|
325
|
+
.idea/
|
|
326
|
+
.vscode/
|
|
327
|
+
*.swp
|
|
328
|
+
*.swo
|
|
329
|
+
|
|
330
|
+
# mypy
|
|
331
|
+
.mypy_cache/
|
|
332
|
+
|
|
333
|
+
# ruff
|
|
334
|
+
.ruff_cache/
|
|
335
|
+
|
|
336
|
+
# Project specific
|
|
337
|
+
.popeye/
|
|
338
|
+
data/
|
|
339
|
+
*.log
|
|
340
|
+
`;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Generate .env.example content
|
|
344
|
+
*/
|
|
345
|
+
export function generateEnvExample() {
|
|
346
|
+
return `# Environment variables
|
|
347
|
+
# Copy this file to .env and fill in the values
|
|
348
|
+
|
|
349
|
+
# Application settings
|
|
350
|
+
APP_ENV=development
|
|
351
|
+
DEBUG=true
|
|
352
|
+
LOG_LEVEL=INFO
|
|
353
|
+
|
|
354
|
+
# Add your environment variables below
|
|
355
|
+
`;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Generate README.md content
|
|
359
|
+
*/
|
|
360
|
+
export function generateReadme(projectName, description) {
|
|
361
|
+
return `# ${projectName}
|
|
362
|
+
|
|
363
|
+
${description || 'Generated by Popeye CLI'}
|
|
364
|
+
|
|
365
|
+
## Installation
|
|
366
|
+
|
|
367
|
+
\`\`\`bash
|
|
368
|
+
# Create virtual environment
|
|
369
|
+
python -m venv venv
|
|
370
|
+
source venv/bin/activate # On Windows: venv\\Scripts\\activate
|
|
371
|
+
|
|
372
|
+
# Install dependencies
|
|
373
|
+
pip install -e ".[dev]"
|
|
374
|
+
\`\`\`
|
|
375
|
+
|
|
376
|
+
## Usage
|
|
377
|
+
|
|
378
|
+
\`\`\`bash
|
|
379
|
+
python -m src.${projectName.replace(/-/g, '_')}.main
|
|
380
|
+
\`\`\`
|
|
381
|
+
|
|
382
|
+
## Development
|
|
383
|
+
|
|
384
|
+
### Running Tests
|
|
385
|
+
|
|
386
|
+
\`\`\`bash
|
|
387
|
+
pytest tests/ -v
|
|
388
|
+
\`\`\`
|
|
389
|
+
|
|
390
|
+
### Code Formatting
|
|
391
|
+
|
|
392
|
+
\`\`\`bash
|
|
393
|
+
black src/ tests/
|
|
394
|
+
ruff check src/ tests/ --fix
|
|
395
|
+
\`\`\`
|
|
396
|
+
|
|
397
|
+
### Type Checking
|
|
398
|
+
|
|
399
|
+
\`\`\`bash
|
|
400
|
+
mypy src/
|
|
401
|
+
\`\`\`
|
|
402
|
+
|
|
403
|
+
## Docker
|
|
404
|
+
|
|
405
|
+
\`\`\`bash
|
|
406
|
+
# Build and run with Docker Compose
|
|
407
|
+
docker-compose up --build
|
|
408
|
+
|
|
409
|
+
# Run in development mode
|
|
410
|
+
docker-compose run dev
|
|
411
|
+
\`\`\`
|
|
412
|
+
|
|
413
|
+
## License
|
|
414
|
+
|
|
415
|
+
MIT
|
|
416
|
+
`;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Generate Makefile content
|
|
420
|
+
*/
|
|
421
|
+
export function generateMakefile(_projectName) {
|
|
422
|
+
return `.PHONY: install dev test lint format typecheck clean docker-build docker-run
|
|
423
|
+
|
|
424
|
+
install:
|
|
425
|
+
\tpip install -e .
|
|
426
|
+
|
|
427
|
+
dev:
|
|
428
|
+
\tpip install -e ".[dev]"
|
|
429
|
+
|
|
430
|
+
test:
|
|
431
|
+
\tpytest tests/ -v --cov=src --cov-report=term-missing
|
|
432
|
+
|
|
433
|
+
lint:
|
|
434
|
+
\truff check src/ tests/
|
|
435
|
+
|
|
436
|
+
format:
|
|
437
|
+
\tblack src/ tests/
|
|
438
|
+
\truff check src/ tests/ --fix
|
|
439
|
+
|
|
440
|
+
typecheck:
|
|
441
|
+
\tmypy src/
|
|
442
|
+
|
|
443
|
+
clean:
|
|
444
|
+
\trm -rf build/ dist/ *.egg-info/ .pytest_cache/ .mypy_cache/ .ruff_cache/ __pycache__/
|
|
445
|
+
\tfind . -type d -name "__pycache__" -exec rm -rf {} +
|
|
446
|
+
|
|
447
|
+
docker-build:
|
|
448
|
+
\tdocker-compose build
|
|
449
|
+
|
|
450
|
+
docker-run:
|
|
451
|
+
\tdocker-compose up
|
|
452
|
+
`;
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/generators/templates/python.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,OAAO;;;;;UAKC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDpB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;CAUR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO;EACP,WAAW;;;;;;CAMZ,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO;uBACc,WAAW;;;;;;;;;;;;;;;;;;;;;4BAqBN,WAAW;;wBAEf,WAAW;;;;;CAKlC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO;;;;;;;aAOI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuB1C,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;4BA0BmB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;;;;CAYzD,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,OAAO;;;;;;;sBAOa,WAAW;;;;;;;;;;;sBAWX,WAAW;;;;qCAII,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;CAClE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2ER,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,WAAmB;IACrE,OAAO,KAAK,WAAW;;EAEvB,WAAW,IAAI,yBAAyB;;;;;;;;;;;;;;;;gBAgB1B,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC7C,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript project templates
|
|
3
|
+
* Provides template files for TypeScript project generation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate package.json content
|
|
7
|
+
*/
|
|
8
|
+
export declare function generatePackageJson(projectName: string, description?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Generate tsconfig.json content
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateTsconfig(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generate vitest.config.ts content
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateVitestConfig(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Generate eslint.config.js content
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateEslintConfig(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Generate .prettierrc content
|
|
23
|
+
*/
|
|
24
|
+
export declare function generatePrettierrc(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Generate main index.ts content
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateIndexTs(projectName: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Generate test file content
|
|
31
|
+
*/
|
|
32
|
+
export declare function generateTestFile(projectName: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Generate Dockerfile content
|
|
35
|
+
*/
|
|
36
|
+
export declare function generateDockerfile(_projectName: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Generate docker-compose.yml content
|
|
39
|
+
*/
|
|
40
|
+
export declare function generateDockerCompose(projectName: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Generate .gitignore content
|
|
43
|
+
*/
|
|
44
|
+
export declare function generateGitignore(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Generate .env.example content
|
|
47
|
+
*/
|
|
48
|
+
export declare function generateEnvExample(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Generate README.md content
|
|
51
|
+
*/
|
|
52
|
+
export declare function generateReadme(projectName: string, description?: string): string;
|
|
53
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/typescript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CA0CrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA8BzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAe7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAuC7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAwB5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAoC/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAyBjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAqC1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAW3C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAiEhF"}
|