feat(extensions-cli): Add .gitignore generation to init command (#36768)

This commit is contained in:
Michael S. Molina
2025-12-19 13:33:37 -03:00
committed by GitHub
parent 5920cb57ea
commit d36ddbbb33
4 changed files with 70 additions and 5 deletions

View File

@@ -484,6 +484,11 @@ def init(
(target_dir / "extension.json").write_text(extension_json)
click.secho("✅ Created extension.json", fg="green")
# Create .gitignore
gitignore = env.get_template(".gitignore.j2").render(ctx)
(target_dir / ".gitignore").write_text(gitignore)
click.secho("✅ Created .gitignore", fg="green")
# Initialize frontend files
if include_frontend:
frontend_dir = target_dir / "frontend"

View File

@@ -0,0 +1,36 @@
# Dependencies
node_modules/
# Build outputs
dist/
*.supx
# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
.eggs/
*.egg
.venv/
venv/
env/
ENV/
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
# Logs
*.log
npm-debug.log*
# Environment
.env
.env.local

View File

@@ -296,10 +296,34 @@ def test_init_command_output_messages(cli_runner, isolated_filesystem, cli_input
output = result.output
# Check for expected success messages
assert "Created extension.json" in output
assert "Created frontend folder structure" in output
assert "Created backend folder structure" in output
assert "🎉 Extension Test Extension (ID: test_extension) initialized" in output
assert "Created extension.json" in output
assert "Created .gitignore" in output
assert "Created frontend folder structure" in output
assert "Created backend folder structure" in output
assert "Extension Test Extension (ID: test_extension) initialized" in output
@pytest.mark.cli
def test_gitignore_content_is_correct(cli_runner, isolated_filesystem, cli_input_both):
"""Test that the generated .gitignore has the correct content."""
result = cli_runner.invoke(app, ["init"], input=cli_input_both)
assert result.exit_code == 0
extension_path = isolated_filesystem / "test_extension"
gitignore_path = extension_path / ".gitignore"
assert_file_exists(gitignore_path, ".gitignore")
content = gitignore_path.read_text()
# Verify key patterns are present
assert "node_modules/" in content
assert "dist/" in content
assert "*.supx" in content
assert "__pycache__" in content
assert ".venv/" in content
assert ".DS_Store" in content
assert ".env" in content
@pytest.mark.cli

View File

@@ -191,7 +191,7 @@ def create_test_extension_structure(
Dictionary with expected paths and metadata
"""
extension_path = base_path / id_
expected_files = ["extension.json"]
expected_files = ["extension.json", ".gitignore"]
expected_dirs: list[str] = []
if include_frontend: