diff --git a/.coveragerc b/.coveragerc index 27087bb..0a626f6 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,6 +1,6 @@ [run] branch = True -source = struct_module +source = structkit [report] omit = diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1d2acbd..db1cd52 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "name": "Struct devcontainer", + "name": "StructKit devcontainer", "image": "mcr.microsoft.com/devcontainers/python:3", "features": { // "ghcr.io/devcontainers/features/python:1": {}, diff --git a/.github/instructions/struct.instructions.md b/.github/instructions/struct.instructions.md index 75ce17b..004b233 100644 --- a/.github/instructions/struct.instructions.md +++ b/.github/instructions/struct.instructions.md @@ -2,11 +2,11 @@ applyTo: '**' --- -# Struct Assistant +# StructKit Assistant ## Role -You are an expert assistant that generates valid `.struct.yaml` files for the [STRUCT tool](https://github.com/httpdss/struct), which automates project structure generation from YAML configuration. +You are an expert assistant that generates valid `.struct.yaml` files for the [StructKit tool](https://github.com/httpdss/struct), which automates project structure generation from YAML configuration. ## Defining the `.struct.yaml` file @@ -29,10 +29,10 @@ files: ### Defining folders -The `folders` key is used to define folders that are created. Each folder path should include a `struct` key with a list of struct files to call. Optionally, you can define the value of a variable using the `with:` key. -The list of struct files available can be taken from all the files defined inside `struct_module/contribs/`. -Remember the name of the struct file is the path to the file without the `.yaml` extension. -Read from the struct file to kown the variables that can be used. +The `folders` key is used to define folders that are created. Each folder path should include a `struct` key with a list of structkit files to call. Optionally, you can define the value of a variable using the `with:` key. +The list of structkit files available can be taken from all the files defined inside `structkit/contribs/`. +Remember the name of the structkit file is the path to the file without the `.yaml` extension. +Read from the structkit file to kown the variables that can be used. ```yaml folders: @@ -48,7 +48,7 @@ folders: ### Defining variables -The `variables` key is used to define variables that can be used in the struct files. Each variable should have a description, type, and optional default value. +The `variables` key is used to define variables that can be used in the structkit files. Each variable should have a description, type, and optional default value. ```yaml variables: @@ -63,15 +63,15 @@ variables: - Follow the JSON Schema definition provided in the references. - Use valid keys: `files`, `folders`, and `variables`. - if you want to define files, use the `files:` key, and a list of file paths that are created. each file path should have a content key. -- if you want to define folders, use the `folders:` key, and a list of folder paths that are created. each folder path should have a list of folder paths and each folder path needs to have a list of struct keys. also if you want to define the value of a variable then you should use the `with:` key. -- Follow the conventions from the STRUCT README provided in the references. +- if you want to define folders, use the `folders:` key, and a list of folder paths that are created. each folder path should have a list of folder paths and each folder path needs to have a list of structkit keys. also if you want to define the value of a variable then you should use the `with:` key. +- Follow the conventions from the StructKit README provided in the references. - Include content blocks under `content:` using pipe notation (`|`) when needed. - Use `permissions`, `skip`, or `skip_if_exists` if specified. This is used only for the `files` key. - Use `file:` to reference the content of a file or `content:` to define the content of the file. -- Use `struct:` to define the list of struct files to call for a folder. -- When defining the list of struct files you want to use, make sure to query the `structure name` to know what to use. this will be at ../../docs/structures.md. +- Use `struct:` to define the list of structkit files to call for a folder. +- When defining the list of structkit files you want to use, make sure to query the `structure name` to know what to use. this will be at ../../docs/structures.md. - Optionally, use Jinja2 custom filters such as `| latest_release`, `| default_branch`, or `| slugify`. -- before creating a file from scratch, check that there is no struct contrib available that can be used to create the file. +- before creating a file from scratch, check that there is no structkit contrib available that can be used to create the file. ## Output @@ -89,6 +89,6 @@ Always return YAML that is syntactically correct and validated against the provi ## References -- [STRUCT json schema](../../struct-schema.json) -- [STRUCT README](../../README.md) +- [StructKit json schema](../../struct-schema.json) +- [StructKit README](../../README.md) - [Structures available in contribs](../../doc/structures.md) diff --git a/.github/prompts/struct.prompt.md b/.github/prompts/struct.prompt.md index c8fbc0c..acd9516 100644 --- a/.github/prompts/struct.prompt.md +++ b/.github/prompts/struct.prompt.md @@ -2,7 +2,7 @@ ## Role -You are an expert assistant that generates valid `.struct.yaml` files for the [STRUCT tool](https://github.com/httpdss/struct), which automates project structure generation from YAML configuration. +You are an expert assistant that generates valid `.struct.yaml` files for the [StructKit tool](https://github.com/httpdss/struct), which automates project structure generation from YAML configuration. ## Defining the `.struct.yaml` file @@ -25,10 +25,10 @@ structures: ### Defining folders -The `folders` key is used to define folders that are created. Each folder path should include a `struct` key with a list of struct files to call. Optionally, you can define the value of a variable using the `with:` key. -The list of struct files available can be taken from all the files defined inside `struct_module/contribs/`. -Remember the name of the struct file is the path to the file without the `.yaml` extension. -Read from the struct file to kown the variables that can be used. +The `folders` key is used to define folders that are created. Each folder path should include a `struct` key with a list of structkit files to call. Optionally, you can define the value of a variable using the `with:` key. +The list of structkit files available can be taken from all the files defined inside `structkit/contribs/`. +Remember the name of the structkit file is the path to the file without the `.yaml` extension. +Read from the structkit file to kown the variables that can be used. ```yaml folders: @@ -44,7 +44,7 @@ folders: ### Defining variables -The `variables` key is used to define variables that can be used in the struct files. Each variable should have a description, type, and optional default value. +The `variables` key is used to define variables that can be used in the structkit files. Each variable should have a description, type, and optional default value. ```yaml variables: @@ -59,12 +59,12 @@ variables: - Follow the JSON Schema definition provided in the references. - Use valid keys: `structures`, `folders`, and `variables`. - if you want to define files, use the `structures:` key, and a list of file paths that are created. each file path should have a content key. -- if you want to define folders, use the `folders:` key, and a list of folder paths that are created. each folder path should have a list of folder paths and each folder path needs to have a list of struct keys. also if you want to define the value of a variable then you should use the `with:` key. -- Follow the conventions from the STRUCT README provided in the references. +- if you want to define folders, use the `folders:` key, and a list of folder paths that are created. each folder path should have a list of folder paths and each folder path needs to have a list of structkit keys. also if you want to define the value of a variable then you should use the `with:` key. +- Follow the conventions from the StructKit README provided in the references. - Include content blocks under `content:` using pipe notation (`|`) when needed. - Use `permissions`, `skip`, or `skip_if_exists` if specified. This is used only for the `structures` key. - Use `file:` to reference the content of a file or `content:` to define the content of the file. -- Use `struct:` to define the list of struct files to call for a folder. +- Use `struct:` to define the list of structkit files to call for a folder. - Optionally, use Jinja2 custom filters such as `| latest_release`, `| default_branch`, or `| slugify`. ## Output @@ -83,5 +83,5 @@ Always return YAML that is syntactically correct and validated against the provi ## References -- [STRUCT json schema](https://raw.githubusercontent.com/httpdss/struct/refs/heads/main/struct-schema.json) -- [STRUCT README](https://raw.githubusercontent.com/httpdss/struct/refs/heads/main/README.md) +- [StructKit json schema](https://raw.githubusercontent.com/httpdss/struct/refs/heads/main/struct-schema.json) +- [StructKit README](https://raw.githubusercontent.com/httpdss/struct/refs/heads/main/README.md) diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml index 1de7ffa..5a95e2e 100644 --- a/.github/workflows/publish-pypi.yml +++ b/.github/workflows/publish-pypi.yml @@ -62,9 +62,8 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: twine upload dist/* --skip-existing - - name: Create release note - if: github.event_name == 'release' + - name: Put pypi url on job summary run: | - echo "βœ… Package published to PyPI successfully!" - echo "Version: ${{ github.event.release.tag_name }}" - echo "PyPI URL: https://pypi.org/project/struct/" + echo "## PyPI Package Published" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "The package has been published to [PyPI](https://pypi.org/project/structkit/)." >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/struct-generate.yaml b/.github/workflows/struct-generate.yaml index 0f225d3..444a99a 100644 --- a/.github/workflows/struct-generate.yaml +++ b/.github/workflows/struct-generate.yaml @@ -4,7 +4,7 @@ on: workflow_call: inputs: struct_file: - description: 'Path to the STRUCT file' + description: 'Path to the StructKit file' type: string required: false default: '.struct.yaml' @@ -14,7 +14,7 @@ on: required: false default: '.' args: - description: 'Additional arguments to pass to STRUCT' + description: 'Additional arguments to pass to StructKit' type: string required: false default: '' @@ -22,12 +22,12 @@ on: description: 'Title of the PR' type: string required: false - default: 'Run STRUCT generate on repository' + default: 'Run StructKit generate on repository' pr_body: description: 'Body of the PR' type: string required: false - default: 'This PR was automatically generated by the STRUCT action.' + default: 'This PR was automatically generated by the StructKit action.' pr_assignees: description: 'Assignees of the PR' type: string @@ -70,10 +70,10 @@ jobs: with: python-version: '3.x' - - name: Install STRUCT + - name: Install StructKit run: | pip install git+https://github.com/httpdss/struct.git - struct -h + structkit -h - name: Install custom structures if: ${{ inputs.custom_structure_repository != '' }} @@ -84,25 +84,25 @@ jobs: path: ./custom-structures fetch-depth: 1 - - name: Run STRUCT + - name: Run StructKit env: GITHUB_TOKEN: ${{ secrets.token }} run: | if [ -d ./custom-structures ]; then - struct list \ + structkit list \ -s ./custom-structures/${{ inputs.custom_structure_path }} - struct generate \ + structkit generate \ --non-interactive \ -s ./custom-structures/${{ inputs.custom_structure_path }} \ ${{ inputs.args }} \ ${{ inputs.struct_file }} \ ${{ inputs.output_dir }} else - struct list + structkit list - struct generate \ + structkit generate \ --non-interactive \ ${{ inputs.args }} \ ${{ inputs.struct_file }} \ diff --git a/.github/workflows/struct-on-gha.yaml b/.github/workflows/struct-on-gha.yaml index ba5736d..745afbd 100644 --- a/.github/workflows/struct-on-gha.yaml +++ b/.github/workflows/struct-on-gha.yaml @@ -15,25 +15,25 @@ jobs: with: python-version: '3.x' - - name: Install STRUCT + - name: Install StructKit run: | pip install git+https://github.com/httpdss/struct.git - struct -h + structkit -h - - name: Run STRUCT + - name: Run StructKit run: | - # struct generate ... - struct list + # structkit generate ... + structkit list - name: Generate PR with changes if: github.event_name == 'workflow_dispatch' uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITHUB_TOKEN }} - commit-message: "Run STRUCT generate on repository" - title: "Run STRUCT generate on repository" + commit-message: "Run StructKit generate on repository" + title: "Run StructKit generate on repository" body: | - This PR was automatically generated by the STRUCT action. + This PR was automatically generated by the StructKit action. base: "main" assignees: "httpdss" branch: repository-dispatch/update-${{ github.run_id }} diff --git a/.github/workflows/test-script.yaml b/.github/workflows/test-script.yaml index bcb94c3..2f84620 100644 --- a/.github/workflows/test-script.yaml +++ b/.github/workflows/test-script.yaml @@ -42,7 +42,7 @@ jobs: shell: bash run: | echo "REPORT_FILE=${REPORT_OUTPUT}" >> "$GITHUB_ENV" - pytest --cov=struct_module --cov-branch --cov-report=xml -v --md-report --md-report-flavor gfm --md-report-exclude-outcomes passed skipped xpassed --md-report-output "$REPORT_OUTPUT" --pyargs tests + pytest --cov=structkit --cov-branch --cov-report=xml -v --md-report --md-report-flavor gfm --md-report-exclude-outcomes passed skipped xpassed --md-report-output "$REPORT_OUTPUT" --pyargs tests - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v5 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..da899bf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "yaml.schemas": { + "file:///home/kenny/.vscode-server/extensions/atlassian.atlascode-4.0.6/resources/schemas/pipelines-schema.json": "bitbucket-pipelines.yml", + "file:///home/kenny/.vscode-server/extensions/httpdss.vscode-struct-0.1.0/schemas/struct-schema.json": [ + "*.struct.yaml" + ] + } +} diff --git a/Dockerfile b/Dockerfile index cc13cd1..ce1531d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ RUN pip install argcomplete COPY . . # Register the script for auto-completion -RUN echo 'eval "$(register-python-argcomplete struct)"' >> /etc/bash.bashrc +RUN echo 'eval "$(register-python-argcomplete structkit)"' >> /etc/bash.bashrc # Run your script when the container launches -ENTRYPOINT ["python", "struct_module/main.py"] +ENTRYPOINT ["python", "structkit/main.py"] diff --git a/MANIFEST.in b/MANIFEST.in index 8a469f9..30b239b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1 @@ -recursive-include struct_module/contribs * +recursive-include structkit/contribs * diff --git a/README.md b/README.md index 91c6f40..e15a5a0 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# πŸš€ STRUCT: Automated Project Structure Generator +# πŸš€ StructKit: Automated Project Structure Generator -![STRUCT Logo](./docs/assets/github-hero.gif) +![StructKit Logo](./docs/assets/github-hero.gif) [![codecov](https://codecov.io/github/httpdss/struct/graph/badge.svg?token=JL5WIO1C9T)](https://codecov.io/github/httpdss/struct) ![GitHub issues](https://img.shields.io/github/issues/httpdss/struct) ![GitHub pull requests](https://img.shields.io/github/issues-pr/httpdss/struct) ![GitHub stars](https://img.shields.io/github/stars/httpdss/struct?style=social) -**STRUCT** is a powerful, flexible tool for automating project structure creation through YAML configurations. Generate consistent project layouts, boilerplate code, and configurations with template variables, remote content fetching, and intelligent file handling. +**StructKit** is a powerful, flexible tool for automating project structure creation through YAML configurations. Generate consistent project layouts, boilerplate code, and configurations with template variables, remote content fetching, and intelligent file handling. > πŸ“š **[View Complete Documentation](docs/index.md)** | πŸš€ **[Quick Start Guide](docs/quickstart.md)** | πŸ”§ **[Installation](docs/installation.md)** @@ -38,16 +38,16 @@ docker run -v $(pwd):/workdir ghcr.io/httpdss/struct:main generate my-config.yam ```bash # Generate a Terraform module structure -struct generate terraform-module ./my-terraform-module +structkit generate terraform-module ./my-terraform-module # List available structures -struct list +structkit list # Validate a configuration -struct validate my-config.yaml +structkit validate my-config.yaml # Start MCP server for AI integration -struct mcp --server +structkit mcp --server ``` ### Example Configuration @@ -57,7 +57,7 @@ files: - README.md: content: | # {{@ project_name @}} - Generated with STRUCT + Generated with StructKit - .gitignore: file: github://github/gitignore/main/Python.gitignore @@ -101,7 +101,7 @@ Our comprehensive documentation is organized into the following sections: ### πŸ‘©β€πŸ’» Development -- **[Development Setup](docs/development.md)** - Contributing to STRUCT +- **[Development Setup](docs/development.md)** - Contributing to StructKit - **[Known Issues](docs/known-issues.md)** - Current limitations and workarounds ### πŸ“– Resources @@ -128,7 +128,7 @@ MIT License - see [LICENSE](LICENSE) for details. ## πŸ’° Support -If STRUCT helps your workflow, consider supporting the project: [patreon/structproject](https://patreon.com/structproject) +If StructKit helps your workflow, consider supporting the project: [patreon/structproject](https://patreon.com/structproject) --- diff --git a/WARP.md b/WARP.md index 4195703..e9c9683 100644 --- a/WARP.md +++ b/WARP.md @@ -1,32 +1,15 @@ -# WARP.md - STRUCT Project Guide - -> This file serves as a comprehensive guide for developers working with the STRUCT project. It contains project-specific conventions, development workflows, and institutional knowledge. - -## πŸ“‹ Table of Contents - -- [Project Overview](#project-overview) -- [Development Environment](#development-environment) -- [Code Structure](#code-structure) -- [Development Workflow](#development-workflow) -- [Testing Guidelines](#testing-guidelines) -- [Code Style & Standards](#code-style--standards) -- [Release Process](#release-process) -- [Common Tasks](#common-tasks) -- [Troubleshooting](#troubleshooting) -- [Architecture Decisions](#architecture-decisions) -- [Performance Considerations](#performance-considerations) -- [Security Guidelines](#security-guidelines) -- [Documentation Standards](#documentation-standards) -- [Dependencies & Tools](#dependencies--tools) -- [Monitoring & Observability](#monitoring--observability) -- [Issue & Work Management](#issue--work-management) +# WARP.md - StructKit Project Guide + +> This file serves as a comprehensive guide for developers working with the StructKit project. It contains project-specific conventions, development workflows, and institutional knowledge. ## 🎯 Project Overview ### Mission -STRUCT simplifies project organization by creating consistent file and folder structures tailored to specific needs. It enhances productivity and maintains uniformity across projects through YAML-based configuration files. + +StructKit simplifies project organization by creating consistent file and folder structures tailored to specific needs. It enhances productivity and maintains uniformity across projects through YAML-based configuration files. ### Key Features + - **YAML-Based Configuration**: Simple, readable project structure definitions - **Template Variables**: Dynamic content with Jinja2 templating and interactive prompts - **Remote Content Fetching**: Support for GitHub, HTTP/HTTPS, S3, and Google Cloud Storage @@ -35,6 +18,7 @@ STRUCT simplifies project organization by creating consistent file and folder st - **MCP Integration**: Model Context Protocol support for AI-assisted workflows ### Technology Stack + - **Language**: Python 3.12+ - **CLI Framework**: argparse with custom command pattern - **Templating**: Jinja2 with custom delimiters @@ -46,6 +30,7 @@ STRUCT simplifies project organization by creating consistent file and folder st ## πŸ›  Development Environment ### Prerequisites + ```bash # Python 3.12 or higher python --version @@ -62,6 +47,7 @@ pip install -r requirements.dev.txt ``` ### Environment Variables + ```bash # Optional: OpenAI API key for AI features export OPENAI_API_KEY="your-api-key-here" @@ -70,10 +56,11 @@ export OPENAI_API_KEY="your-api-key-here" export GITHUB_TOKEN="your-github-token" # Optional: Logging level -export STRUCT_LOG_LEVEL="DEBUG" +export STRUCTKIT_LOG_LEVEL="DEBUG" ``` ### IDE Configuration + - **VS Code**: Recommended extensions in `.vscode/extensions.json` - **PyCharm**: Python interpreter should point to `.venv/bin/python` - **Pre-commit hooks**: Run `pre-commit install` after setup @@ -81,8 +68,9 @@ export STRUCT_LOG_LEVEL="DEBUG" ## πŸ— Code Structure ### Directory Layout -``` -struct_module/ + +```text +structkit/ β”œβ”€β”€ commands/ # CLI command implementations β”‚ β”œβ”€β”€ generate.py # Main generation command β”‚ β”œβ”€β”€ validate.py # YAML validation @@ -104,17 +92,20 @@ examples/ # Example configurations ### Key Modules #### `template_renderer.py` + - Handles Jinja2 templating with custom delimiters - Interactive variable prompting with descriptions - Type coercion and validation - Icon-based user interface #### `file_item.py` + - Represents files to be created/modified - Handles different content sources (inline, remote, etc.) - Implements file creation strategies (overwrite, skip, backup, etc.) #### `commands/` + - Each command is a separate class inheriting from `Command` - Self-contained argument parsing and execution logic - Consistent error handling and logging @@ -122,6 +113,7 @@ examples/ # Example configurations ## πŸ”„ Development Workflow ### Branch Strategy + - `main`: Production-ready code - `feature/*`: New features (e.g., `feature/display-variable-descriptions-116`) - `bugfix/*`: Bug fixes @@ -129,7 +121,8 @@ examples/ # Example configurations - `docs/*`: Documentation updates ### Commit Message Convention -``` + +```text (): @@ -140,13 +133,15 @@ examples/ # Example configurations Types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore` Examples: -``` + +```text feat(template): add variable description display in interactive mode fix(file-handling): resolve path resolution on Windows docs(api): update template variables documentation ``` ### Pull Request Process + 1. Create feature branch from `main` 2. Implement changes with tests 3. Update documentation if needed @@ -159,12 +154,13 @@ docs(api): update template variables documentation ## πŸ§ͺ Testing Guidelines ### Test Structure + ```bash # Run all tests pytest tests/ # Run with coverage -pytest tests/ --cov=struct_module --cov-report=html +pytest tests/ --cov=structkit --cov-report=html # Run specific test file pytest tests/test_template_renderer.py -v @@ -174,17 +170,20 @@ pytest tests/test_template_renderer.py::test_prompt_with_description_display -v ``` ### Test Categories + - **Unit Tests**: Individual component testing - **Integration Tests**: Cross-component functionality - **Command Tests**: CLI command end-to-end testing - **Template Tests**: YAML configuration validation ### Test Data + - Test fixtures in `tests/fixtures/` - Mock objects for external dependencies - Temporary files in `/tmp/` for file system tests ### Coverage Goals + - Minimum 85% line coverage - All new features must include tests - Critical paths require 100% coverage @@ -192,30 +191,34 @@ pytest tests/test_template_renderer.py::test_prompt_with_description_display -v ## πŸ“ Code Style & Standards ### Python Style + - **PEP 8** compliance with line length of 100 characters - **Type hints** for all public functions - **Docstrings** for all modules, classes, and public functions - **F-strings** for string formatting ### Code Quality Tools + ```bash # Linting -flake8 struct_module/ +flake8 structkit/ # Type checking -mypy struct_module/ +mypy structkit/ # Pre-commit hooks (automated) pre-commit run --all-files ``` ### Variable Naming + - `snake_case` for variables and functions - `UPPER_CASE` for constants - Descriptive names over abbreviations - Prefix private methods with underscore ### Error Handling + - Use specific exception types - Provide helpful error messages - Log errors with appropriate levels @@ -224,12 +227,14 @@ pre-commit run --all-files ## πŸš€ Release Process ### Version Numbering + - Semantic versioning: `MAJOR.MINOR.PATCH` - `MAJOR`: Breaking changes - `MINOR`: New features, backward compatible - `PATCH`: Bug fixes ### Release Checklist + 1. Update `CHANGELOG.md` 2. Bump version in `setup.py` 3. Run full test suite @@ -239,6 +244,7 @@ pre-commit run --all-files 7. GitHub Actions handles PyPI publication ### Release Notes + - Categorize changes: Added, Changed, Fixed, Removed - Include migration notes for breaking changes - Reference GitHub issues and PRs @@ -247,7 +253,8 @@ pre-commit run --all-files ## πŸ”§ Common Tasks ### Adding a New Command -1. Create new file in `struct_module/commands/` + +1. Create new file in `structkit/commands/` 2. Inherit from `Command` base class 3. Implement `__init__` with argument parsing 4. Implement `execute` method @@ -255,52 +262,59 @@ pre-commit run --all-files 6. Add tests in `tests/test_commands.py` ### Adding New Template Filters -1. Implement filter function in `struct_module/filters.py` + +1. Implement filter function in `structkit/filters.py` 2. Add to `custom_filters` dict in `template_renderer.py` 3. Document in `docs/template-variables.md` 4. Add tests in `tests/test_filters.py` ### Creating Built-in Structures -1. Create YAML file in `struct_module/contribs/` + +1. Create YAML file in `structkit/contribs/` 2. Follow naming convention: `project-type.yaml` 3. Include comprehensive variable definitions 4. Add example in `docs/examples/` -5. Update `struct list` output +5. Update `structkit list` output ## πŸ› Troubleshooting ### Common Issues #### Template Variables Not Resolving + - Check custom delimiters: `{{@` `@}}` - Verify variable names match configuration - Check for typos in YAML structure #### File Creation Failures + - Verify file permissions - Check disk space - Validate file paths (no invalid characters) - Review file strategy settings #### Import Errors + - Ensure virtual environment is activated - Check Python version compatibility - Verify all dependencies installed: `pip install -r requirements.txt` ### Debug Mode + ```bash # Enable debug logging -export STRUCT_LOG_LEVEL=DEBUG -struct generate config.yaml --log DEBUG +export STRUCTKIT_LOG_LEVEL=DEBUG +structkit generate config.yaml --log DEBUG # Dry run mode for testing -struct generate config.yaml ./output --dry-run +structkit generate config.yaml ./output --dry-run # Console output for inspection -struct generate config.yaml --output console +structkit generate config.yaml --output console ``` ### Log Analysis + - Logs include timestamps and severity levels - File operations logged with full paths - Template rendering logged with variable values @@ -309,18 +323,21 @@ struct generate config.yaml --output console ## πŸ› Architecture Decisions ### Template Engine Choice (Jinja2) + - **Decision**: Use Jinja2 with custom delimiters - **Rationale**: Mature, well-documented, powerful - **Trade-offs**: Custom delimiters prevent YAML conflicts - **Date**: 2024-07-11 ### Command Pattern Implementation + - **Decision**: Each CLI command is a separate class - **Rationale**: Modular, testable, extensible - **Trade-offs**: Slightly more boilerplate - **Date**: 2024-07-15 ### File Strategy System + - **Decision**: Pluggable file handling strategies - **Rationale**: Flexibility for different use cases - **Trade-offs**: Increased complexity @@ -329,16 +346,19 @@ struct generate config.yaml --output console ## ⚑ Performance Considerations ### Template Rendering + - Templates compiled once and cached - Variable resolution optimized for common cases - Large files streamed rather than loaded in memory ### File Operations + - Batch operations where possible - Minimal filesystem stat calls - Progress indicators for long operations ### Memory Usage + - File contents not held in memory unnecessarily - Generator patterns for large datasets - Proper cleanup of temporary resources @@ -346,17 +366,20 @@ struct generate config.yaml --output console ## πŸ” Security Guidelines ### Input Validation + - All user inputs validated and sanitized - Path traversal protection in file operations - YAML parsing with safe loader only ### External Content + - HTTPS required for remote content - Validate SSL certificates - Timeout limits for network operations - Size limits for downloaded content ### Secrets Handling + - Never log sensitive information - Environment variables for API keys - Mask secrets in error messages @@ -365,18 +388,21 @@ struct generate config.yaml --output console ## πŸ“š Documentation Standards ### Code Documentation + - Docstrings follow Google style - Type hints for all parameters and returns - Examples in docstrings for complex functions - Inline comments for non-obvious logic ### User Documentation + - Step-by-step tutorials with examples - Reference documentation for all features - Troubleshooting guides with common solutions - Migration guides for breaking changes ### API Documentation + - Auto-generated from docstrings - Include usage examples - Document exceptions and error conditions @@ -385,6 +411,7 @@ struct generate config.yaml --output console ## πŸ“¦ Dependencies & Tools ### Core Dependencies + - `Jinja2`: Template engine - `PyYAML`: YAML parsing - `requests`: HTTP client @@ -392,6 +419,7 @@ struct generate config.yaml --output console - `google-cloud-storage`: GCS integration ### Development Dependencies + - `pytest`: Testing framework - `coverage`: Code coverage - `flake8`: Linting @@ -399,11 +427,13 @@ struct generate config.yaml --output console - `mkdocs`: Documentation ### Optional Dependencies + - `openai`: AI integration - `anthropic`: Claude integration - `fastapi`: MCP server support ### Dependency Management + - Pin major versions in `requirements.txt` - Regular security updates - Remove unused dependencies @@ -412,18 +442,21 @@ struct generate config.yaml --output console ## πŸ“Š Monitoring & Observability ### Metrics Collection + - Command execution times - File operation success rates - Template rendering performance - Error rates by category ### Logging Strategy + - Structured logging with JSON format - Different log levels for different audiences - Correlation IDs for tracing requests - Log rotation and retention policies ### Health Checks + - Basic functionality verification - External service connectivity - Resource availability checks @@ -432,35 +465,41 @@ struct generate config.yaml --output console ## πŸ™ Issue & Work Management ### GitHub MCP for Issues + This project uses **GitHub** for issue tracking and work management. All issue-related queries and work management should use the GitHub MCP tools, **not Jira**. ### Common GitHub MCP Operations #### List Issues + ```bash # Use the GitHub MCP to list all open issues -list_issues owner:httpdss repo:struct state:open +list_issues owner:httpdss repo:structkit state:open ``` #### Get Issue Details + ```bash # Get details for a specific issue number -get_issue owner:httpdss repo:struct issue_number:100 +get_issue owner:httpdss repo:structkit issue_number:100 ``` #### Create an Issue + ```bash # Create a new issue -create_issue owner:httpdss repo:struct title:"Issue Title" body:"Issue description" +create_issue owner:httpdss repo:structkit title:"Issue Title" body:"Issue description" ``` #### Search Issues + ```bash # Search for issues by keyword or status search_issues query:"keyword" owner:httpdss repo:struct ``` ### Issue Workflow + 1. **Browse Issues**: Use `list_issues` to see current open issues 2. **Get Details**: Use `get_issue` to understand specific issue requirements 3. **Comment**: Use `add_issue_comment` to provide updates @@ -471,6 +510,7 @@ search_issues query:"keyword" owner:httpdss repo:struct ## πŸ“ Notes & TODOs ### Future Enhancements + - [ ] Plugin system for custom commands - [ ] GUI interface for non-technical users - [ ] Integration with more cloud providers @@ -478,6 +518,7 @@ search_issues query:"keyword" owner:httpdss repo:struct - [ ] Performance profiling dashboard ### Known Limitations + - Large file handling could be optimized - Windows path handling has edge cases - Some template features not well documented diff --git a/docker-compose.yaml b/docker-compose.yaml index 8a4afd2..f9df04b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,9 +1,9 @@ services: - struct-dry-run: + structkit-dry-run: build: . volumes: - .:/app - entrypoint: ["python", "struct_module/main.py"] + entrypoint: ["python", "structkit/main.py"] env_file: - .env command: [ @@ -17,11 +17,11 @@ services: "/app/example/structure.yaml", "/app/example_project" ] - struct-test: + structkit-test: build: . volumes: - .:/app - entrypoint: ["python", "struct_module/main.py"] + entrypoint: ["python", "structkit/main.py"] env_file: - .env command: [ diff --git a/docs/articles.md b/docs/articles.md index 7030922..bb53c3e 100644 --- a/docs/articles.md +++ b/docs/articles.md @@ -1,12 +1,12 @@ # Articles and Resources -Collection of articles, tutorials, and external resources about STRUCT. +Collection of articles, tutorials, and external resources about StructKit. ## Official Articles -### [Defining User Prompts on STRUCT: Harnessing GPT-4.1 for Scalable Project Scaffolding](https://medium.com/@httpdss/defining-user-prompts-on-struct-harnessing-gpt-4-1-for-scalable-project-scaffolding-e6d3b4ec4701) +### [Defining User Prompts on StructKit: Harnessing GPT-4.1 for Scalable Project Scaffolding](https://medium.com/@httpdss/defining-user-prompts-on-struct-harnessing-gpt-4-1-for-scalable-project-scaffolding-e6d3b4ec4701) -Learn how to leverage GPT-4.1 to create intelligent project scaffolding with STRUCT. This article covers advanced prompting techniques and AI-driven project generation. +Learn how to leverage GPT-4.1 to create intelligent project scaffolding with StructKit. This article covers advanced prompting techniques and AI-driven project generation. **Topics covered:** @@ -15,9 +15,9 @@ Learn how to leverage GPT-4.1 to create intelligent project scaffolding with STR - GPT-4.1 integration patterns - Scalable scaffolding strategies -### [Unlocking Developer Productivity with STRUCT: The Ultimate Open-Source Tool for Automated Project Structures](https://blog.devops.dev/unlocking-developer-productivity-with-struct-the-ultimate-open-source-tool-for-automated-project-8bca9b5f40f9) +### [Unlocking Developer Productivity with StructKit: The Ultimate Open-Source Tool for Automated Project Structures](https://blog.devops.dev/unlocking-developer-productivity-with-struct-the-ultimate-open-source-tool-for-automated-project-8bca9b5f40f9) -A comprehensive overview of STRUCT's capabilities and how it can boost developer productivity through automation. +A comprehensive overview of StructKit's capabilities and how it can boost developer productivity through automation. **Topics covered:** @@ -26,9 +26,9 @@ A comprehensive overview of STRUCT's capabilities and how it can boost developer - Open-source benefits - Real-world use cases -### [Automating Project Structures with STRUCT and GitHub Actions](https://medium.com/@httpdss/automating-project-structures-with-struct-and-github-actions-64e09c40c11e) +### [Automating Project Structures with StructKit and GitHub Actions](https://medium.com/@httpdss/automating-project-structures-with-struct-and-github-actions-64e09c40c11e) -Discover how to integrate STRUCT with GitHub Actions for automated project setup and maintenance across repositories. +Discover how to integrate StructKit with GitHub Actions for automated project setup and maintenance across repositories. **Topics covered:** @@ -37,9 +37,9 @@ Discover how to integrate STRUCT with GitHub Actions for automated project setup - Repository management - Workflow triggers -### [Advanced STRUCT Tips: Working with Template Variables and Jinja2 Filters](https://medium.com/@httpdss/advanced-struct-tips-working-with-template-variables-and-jinja2-filters-b239bf3145e4) +### [Advanced StructKit Tips: Working with Template Variables and Jinja2 Filters](https://medium.com/@httpdss/advanced-struct-tips-working-with-template-variables-and-jinja2-filters-b239bf3145e4) -Deep dive into STRUCT's templating system, covering advanced variable usage and custom Jinja2 filters. +Deep dive into StructKit's templating system, covering advanced variable usage and custom Jinja2 filters. **Topics covered:** @@ -50,7 +50,7 @@ Deep dive into STRUCT's templating system, covering advanced variable usage and ## Community Articles -*Community contributions welcome! Submit a PR to add your STRUCT-related articles here.* +*Community contributions welcome! Submit a PR to add your StructKit-related articles here.* ## Tutorials @@ -89,11 +89,11 @@ Deep dive into STRUCT's templating system, covering advanced variable usage and ## Presentations and Talks -*Conference presentations and community talks about STRUCT will be listed here.* +*Conference presentations and community talks about StructKit will be listed here.* ## Research and Academic Papers -*Academic research involving STRUCT or related concepts will be referenced here.* +*Academic research involving StructKit or related concepts will be referenced here.* ## External Tools and Integrations @@ -104,7 +104,7 @@ Deep dive into STRUCT's templating system, covering advanced variable usage and ### CI/CD Integrations -- **GitHub Actions**: Pre-built actions for STRUCT workflows +- **GitHub Actions**: Pre-built actions for StructKit workflows - **GitLab CI**: Integration examples and templates - **Jenkins**: Pipeline integration patterns @@ -175,7 +175,7 @@ We welcome contributions to this resource collection! Here's how you can help: ## Newsletter and Updates -Stay updated with the latest STRUCT developments: +Stay updated with the latest StructKit developments: - **GitHub Releases**: Watch the repository for release notifications - **Community Updates**: Follow project maintainers on social media diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 876fa5f..de06203 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -9,7 +9,7 @@ The `struct` CLI allows you to generate project structures from YAML configurati **Basic Usage:** ```sh -struct {info,validate,generate,list,generate-schema,mcp,completion,init} ... +structkit {info,validate,generate,list,generate-schema,mcp,completion,init} ... ``` ## Global Options @@ -30,7 +30,7 @@ Show information about a structure definition. **Usage:** ```sh -struct info [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] structure_definition +structkit info [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] structure_definition ``` **Arguments:** @@ -45,7 +45,7 @@ Validate the YAML configuration file. **Usage:** ```sh -struct validate [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] yaml_file +structkit validate [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] yaml_file ``` **Arguments:** @@ -59,7 +59,7 @@ Generate the project structure. **Usage:** ```sh -struct generate [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] [-n INPUT_STORE] [-d] [--diff] [-v VARS] [-b BACKUP] [-f {overwrite,skip,append,rename,backup}] [-p GLOBAL_SYSTEM_PROMPT] [--non-interactive] [--mappings-file MAPPINGS_FILE] [-o {console,file}] [structure_definition] [base_path] +structkit generate [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] [-n INPUT_STORE] [-d] [--diff] [-v VARS] [-b BACKUP] [-f {overwrite,skip,append,rename,backup}] [-p GLOBAL_SYSTEM_PROMPT] [--non-interactive] [--mappings-file MAPPINGS_FILE] [-o {console,file}] [structure_definition] [base_path] ``` Defaults when omitted: @@ -68,7 +68,7 @@ Defaults when omitted: Example: ```sh -struct generate +structkit generate ``` **Arguments:** @@ -94,7 +94,7 @@ List available structures. **Usage:** ```sh -struct list [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] +structkit list [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] ``` **Arguments:** @@ -108,7 +108,7 @@ Generate JSON schema for available structures. **Usage:** ```sh -struct generate-schema [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] [-o OUTPUT] +structkit generate-schema [-h] [-l LOG] [-c CONFIG_FILE] [-i LOG_FILE] [-s STRUCTURES_PATH] [-o OUTPUT] ``` **Arguments:** @@ -123,7 +123,7 @@ Manage shell completions for struct. Usage: ```sh -struct completion install [bash|zsh|fish] +structkit completion install [bash|zsh|fish] ``` - If no shell is provided, the command attempts to auto-detect your current shell and prints the exact commands to generate and install static completion files via shtab. @@ -136,14 +136,14 @@ Initialize a basic .struct.yaml in the target directory. Usage: ```sh -struct init [path] +structkit init [path] ``` - Creates a .struct.yaml if it does not exist. - Includes: - pre_hooks/post_hooks with echo commands - files with a README.md placeholder - - folders referencing github/workflows/run-struct at ./ + - folders referencing github/workflows/run-structkit at ./ - Non-destructive: if .struct.yaml already exists, it is not overwritten and a message is printed. ## Examples @@ -153,7 +153,7 @@ struct init [path] Generate with default structure (.struct.yaml) into current directory: ```sh -struct generate +structkit generate ``` ### Basic Structure Generation @@ -161,13 +161,13 @@ struct generate Generate a structure using a built-in definition: ```sh -struct generate python-basic ./my-project +structkit generate python-basic ./my-project ``` Generate from a custom YAML file: ```sh -struct generate file://my-structure.yaml ./output-dir +structkit generate file://my-structure.yaml ./output-dir ``` ### Using Custom Structures @@ -175,7 +175,7 @@ struct generate file://my-structure.yaml ./output-dir Generate with custom structure path: ```sh -struct generate -s ~/custom-structures python-api ./my-api +structkit generate -s ~/custom-structures python-api ./my-api ``` ### Template Variables @@ -183,7 +183,7 @@ struct generate -s ~/custom-structures python-api ./my-api Pass template variables to the structure: ```sh -struct generate -v "project_name=MyApp,author=John Doe" file://structure.yaml ./output +structkit generate -v "project_name=MyApp,author=John Doe" file://structure.yaml ./output ``` ### Dry Run @@ -191,7 +191,7 @@ struct generate -v "project_name=MyApp,author=John Doe" file://structure.yaml ./ Test structure generation without creating files: ```sh -struct generate -d file://structure.yaml ./output +structkit generate -d file://structure.yaml ./output ``` ### File Strategies @@ -200,10 +200,10 @@ Handle existing files with different strategies: ```sh # Skip existing files -struct generate -f skip file://structure.yaml ./output +structkit generate -f skip file://structure.yaml ./output # Backup existing files -struct generate -f backup -b ./backup file://structure.yaml ./output +structkit generate -f backup -b ./backup file://structure.yaml ./output ``` ### Console Output @@ -211,7 +211,7 @@ struct generate -f backup -b ./backup file://structure.yaml ./output Output to console instead of creating files: ```sh -struct generate -o console file://structure.yaml ./output +structkit generate -o console file://structure.yaml ./output ``` ### Validation @@ -219,7 +219,7 @@ struct generate -o console file://structure.yaml ./output Validate a YAML configuration before generation: ```sh -struct validate my-structure.yaml +structkit validate my-structure.yaml ``` ### List Available Structures @@ -227,13 +227,13 @@ struct validate my-structure.yaml List all built-in structures: ```sh -struct list +structkit list ``` List structures from custom path: ```sh -struct list -s ~/custom-structures +structkit list -s ~/custom-structures ``` ### Get Structure Information @@ -241,7 +241,7 @@ struct list -s ~/custom-structures Get detailed information about a structure: ```sh -struct info python-basic +structkit info python-basic ``` ### Generate Schema @@ -249,5 +249,5 @@ struct info python-basic Generate JSON schema and save to file: ```sh -struct generate-schema -o schema.json +structkit generate-schema -o schema.json ``` diff --git a/docs/completion.md b/docs/completion.md index d53814c..818f1b5 100644 --- a/docs/completion.md +++ b/docs/completion.md @@ -1,22 +1,22 @@ # Command-Line Auto-Completion -STRUCT provides intelligent auto-completion for commands, options, and structure names using static completion scripts generated by [shtab](https://github.com/Iterative/shtab). This approach is reliable across shells and doesn’t require runtime hooks or markers. +StructKit provides intelligent auto-completion for commands, options, and structure names using static completion scripts generated by [shtab](https://github.com/Iterative/shtab). This approach is reliable across shells and doesn’t require runtime hooks or markers. !!! tip "Structure Name Completion" - STRUCT completes structure names when using `struct generate`, showing available structures from both built-in and custom paths. + StructKit completes structure names when using `structkit generate`, showing available structures from both built-in and custom paths. ## Quick Setup -Ask struct to print the exact commands for your shell: +Ask structkit to print the exact commands for your shell: ```sh # Auto-detect current shell and print install steps -struct completion install +structkit completion install # Or specify explicitly -struct completion install zsh -struct completion install bash -struct completion install fish +structkit completion install zsh +structkit completion install bash +structkit completion install fish ``` You can also generate completion files manually with shtab as shown below. @@ -35,7 +35,7 @@ pip install shtab ```sh mkdir -p ~/.zfunc - struct --print-completion zsh > ~/.zfunc/_struct + structkit --print-completion zsh > ~/.zfunc/_struct # ensure in ~/.zshrc fpath=(~/.zfunc $fpath) autoload -U compinit && compinit @@ -46,7 +46,7 @@ pip install shtab ```sh mkdir -p ~/.local/share/bash-completion/completions - struct --print-completion bash > ~/.local/share/bash-completion/completions/struct + structkit --print-completion bash > ~/.local/share/bash-completion/completions/struct source ~/.bashrc ``` @@ -54,7 +54,7 @@ pip install shtab ```sh mkdir -p ~/.config/fish/completions - struct --print-completion fish > ~/.config/fish/completions/struct.fish + structkit --print-completion fish > ~/.config/fish/completions/struct.fish fish -c 'source ~/.config/fish/completions/struct.fish' ``` @@ -64,38 +64,38 @@ After installing the completion, use Tab to complete commands/options: ### Command Completion ```sh -struct +structkit # Shows: generate, generate-schema, validate, info, list ``` ### Structure Name Completion ✨ ```sh # Complete structure names - shows all available structures! -struct generate +structkit generate # Shows: ansible-playbook, docker-files, github/workflows/codeql, project/nodejs, etc. # Partial completion works too -struct generate git +structkit generate git # Shows: git-hooks, github/workflows/codeql, github/templates, etc. # Works with nested structures -struct generate github/ +structkit generate github/ # Shows: github/workflows/codeql, github/templates, github/prompts/generic, etc. ``` ### Custom Structure Paths ```sh # Completion works with custom structure paths -struct generate --structures-path /custom/path +structkit generate --structures-path /custom/path # Shows structures from both custom path and built-in structures ``` ### Option Completion ```sh -struct generate -- +structkit generate -- # Shows: --log, --dry-run, --backup, --file-strategy, --structures-path, etc. -struct generate --log +structkit generate --log # Shows: DEBUG, INFO, WARNING, ERROR, CRITICAL ``` @@ -112,7 +112,7 @@ You can create custom completion functions for specific use cases: ```sh # Custom completion for structure names _struct_structures() { - local structures=$(struct list --names-only 2>/dev/null) + local structures=$(structkit list --names-only 2>/dev/null) COMPREPLY=($(compgen -W "$structures" -- "${COMP_WORDS[COMP_CWORD]}")) } @@ -141,7 +141,7 @@ complete -F _struct_structures struct-generate ### Debug Completion -For shell-specific debugging, check that the generated file contains the struct completion function and is in the correct directory for your shell. +For shell-specific debugging, check that the generated file contains the structkit completion function and is in the correct directory for your shell. ## Platform-Specific Notes @@ -162,7 +162,7 @@ For Windows users using Git Bash or WSL, follow the same steps as Linux. PowerSh ### Docker -When running STRUCT in Docker, completion won't work directly. However, you can create a wrapper script: +When running StructKit in Docker, completion won't work directly. However, you can create a wrapper script: ```sh #!/bin/bash @@ -185,7 +185,7 @@ eval "$(register-python-argcomplete struct-wrapper.sh)" ## Supported Completions -STRUCT provides intelligent completion for: +StructKit provides intelligent completion for: - **Commands**: `generate`, `validate`, `list`, `info`, `generate-schema` - **Options**: `--log`, `--dry-run`, `--backup`, `--file-strategy`, `--structures-path`, etc. @@ -202,7 +202,7 @@ The structure name completion feature: 1. **Dynamically discovers** all available structure files (`.yaml` files) 2. **Scans multiple locations**: - - Built-in structures in `struct_module/contribs/` + - Built-in structures in `structkit/contribs/` - Custom structures from `--structures-path` if specified 3. **Returns clean names** without `.yaml` extensions 4. **Supports nested directories** like `github/workflows/codeql` @@ -212,37 +212,37 @@ The structure name completion feature: ```sh # Command completion -$ struct +$ structkit generate generate-schema info list validate # Structure name completion (NEW!) -$ struct generate +$ structkit generate ansible-playbook configs/codeowners github/workflows/codeql project/nodejs chef-cookbook docker-files helm-chart terraform/apps/generic ci-cd-pipelines git-hooks kubernetes-manifests vagrant-files # Partial completion -$ struct generate proj +$ structkit generate proj project/custom-structures project/go project/nodejs project/ruby project/generic project/java project/python project/rust # Nested structure completion -$ struct generate github/ +$ structkit generate github/ github/chatmodes/plan github/prompts/react-form github/workflows/codeql github/instructions/generic github/prompts/security-api github/workflows/labeler github/prompts/generic github/workflows/pre-commit github/workflows/stale # Option completion -$ struct generate -- +$ structkit generate -- --backup --dry-run --file-strategy --log --log-file --mappings-file --structures-path --vars # Enum value completion -$ struct generate --log +$ structkit generate --log DEBUG ERROR INFO WARNING CRITICAL -$ struct generate --file-strategy +$ structkit generate --file-strategy append backup overwrite rename skip ``` -This makes working with STRUCT much more efficient and user-friendly! +This makes working with StructKit much more efficient and user-friendly! diff --git a/docs/configuration.md b/docs/configuration.md index 568ae57..8e18d6a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -85,7 +85,7 @@ To define comments you can use the comment start notation `{#@` and end comment If you don't provide a default value for a variable, the script will prompt you to enter the value interactively. -The struct defined should define the variable on a specific section of the YAML file. For example: +The structkit defined should define the variable on a specific section of the YAML file. For example: ```yaml variables: diff --git a/docs/contributing.md b/docs/contributing.md index 9755cb0..a73d355 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,6 +1,6 @@ -# Contributing to STRUCT +# Contributing to StructKit -Thank you for your interest in contributing to STRUCT! We welcome contributions from the community and are pleased to have you join us. +Thank you for your interest in contributing to StructKit! We welcome contributions from the community and are pleased to have you join us. ## πŸš€ Quick Start @@ -62,7 +62,7 @@ pytest - Write tests for new functionality - Ensure all existing tests pass - Run the test suite: `pytest` -- Check test coverage: `pytest --cov=struct_module` +- Check test coverage: `pytest --cov=structkit` ### Pull Request Guidelines @@ -108,7 +108,7 @@ docs/ ## πŸ—οΈ Contributing New Structures -STRUCT includes a collection of contrib structures in `struct_module/contribs/`. To add a new structure: +StructKit includes a collection of contrib structures in `structkit/contribs/`. To add a new structure: 1. **Create a new YAML file** in the appropriate subdirectory 2. **Follow naming conventions**: use lowercase with hyphens @@ -131,7 +131,7 @@ STRUCT includes a collection of contrib structures in `struct_module/contribs/`. When reporting bugs, please include: - **OS and Python version** -- **STRUCT version** (`struct --version`) +- **StructKit version** (`structkit --version`) - **Complete error message** or traceback - **Steps to reproduce** the issue - **Expected vs actual behavior** @@ -150,7 +150,7 @@ For feature requests: ```text struct/ -β”œβ”€β”€ struct_module/ # Main Python package +β”œβ”€β”€ structkit/ # Main Python package β”‚ β”œβ”€β”€ commands/ # CLI command implementations β”‚ β”œβ”€β”€ contribs/ # Contributed structure templates β”‚ β”œβ”€β”€ __init__.py @@ -210,4 +210,4 @@ If you need help contributing: 3. Create a new issue with the `question` label 4. Join our [GitHub Discussions](https://github.com/httpdss/struct/discussions) -Thank you for contributing to STRUCT! πŸŽ‰ +Thank you for contributing to StructKit! πŸŽ‰ diff --git a/docs/custom-structures.md b/docs/custom-structures.md index 2d3422b..e9a3ecd 100644 --- a/docs/custom-structures.md +++ b/docs/custom-structures.md @@ -1,6 +1,6 @@ # Creating Custom Structures -Let's say you are happy with the default structures that STRUCT provides, but you want to customize them for your specific needs. This is totally possible! +Let's say you are happy with the default structures that StructKit provides, but you want to customize them for your specific needs. This is totally possible! The best way to approach this is to have a repository where you can store your custom structures. You can then reference these structures in your `.struct.yaml` files. @@ -30,8 +30,8 @@ folders: var_in_structure1: 'value' ``` -For this to work, you will need to set the path to the custom structures repository using the `-s` option when running STRUCT: +For this to work, you will need to set the path to the custom structures repository using the `-s` option when running StructKit: ```sh -struct generate -s ~/path/to/custom-structures/structures file://.struct.yaml ./output +structkit generate -s ~/path/to/custom-structures/structures file://.struct.yaml ./output ``` diff --git a/docs/development.md b/docs/development.md index 96689ae..7870d68 100644 --- a/docs/development.md +++ b/docs/development.md @@ -1,6 +1,6 @@ # Development Setup -This guide will help you set up a development environment for contributing to STRUCT. +This guide will help you set up a development environment for contributing to StructKit. ## Prerequisites @@ -40,7 +40,7 @@ pip install -e . ### 4. Verify Installation ```sh -struct --help +structkit --help ``` ## Development Workflow @@ -52,7 +52,7 @@ struct --help pytest # Run tests with coverage -pytest --cov=struct_module +pytest --cov=structkit # Run specific test file pytest tests/test_specific.py @@ -73,7 +73,7 @@ isort . flake8 . # Type checking with mypy -mypy struct_module/ +mypy structkit/ ``` ### Pre-commit Hooks @@ -90,7 +90,7 @@ This will run formatting, linting, and tests before each commit. ```text struct/ -β”œβ”€β”€ struct_module/ # Main Python package +β”œβ”€β”€ structkit/ # Main Python package β”‚ β”œβ”€β”€ commands/ # CLI command implementations β”‚ β”œβ”€β”€ contribs/ # Built-in structure templates β”‚ └── ... @@ -105,7 +105,7 @@ struct/ ### 1. Create a New Command -Commands are defined in `struct_module/commands/`. Each command should: +Commands are defined in `structkit/commands/`. Each command should: - Inherit from a base command class - Include proper argument parsing @@ -115,7 +115,7 @@ Commands are defined in `struct_module/commands/`. Each command should: Example: ```python -# struct_module/commands/my_command.py +# structkit/commands/my_command.py from .base import BaseCommand class MyCommand(BaseCommand): @@ -129,7 +129,7 @@ class MyCommand(BaseCommand): ### 2. Add Structure Templates -New structure templates go in `struct_module/contribs/`. Each template should: +New structure templates go in `structkit/contribs/`. Each template should: - Have a clear directory structure - Provide good documentation @@ -142,7 +142,7 @@ All new functionality must include tests: ```python # tests/test_my_feature.py import pytest -from struct_module.my_feature import MyFeature +from structkit.my_feature import MyFeature def test_my_feature(): feature = MyFeature() @@ -178,7 +178,7 @@ pytest tests/integration/ ### Enable Debug Logging ```sh -struct --log=DEBUG generate my-config.yaml ./output +structkit --log=DEBUG generate my-config.yaml ./output ``` ### Use Python Debugger @@ -190,7 +190,7 @@ import pdb; pdb.set_trace() ``` ```sh -struct --log=DEBUG generate my-config.yaml ./output +structkit --log=DEBUG generate my-config.yaml ./output ``` ## Contributing Guidelines diff --git a/docs/examples/index.md b/docs/examples/index.md index 0825d64..5b0e663 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -1,6 +1,6 @@ # Examples -This page contains practical examples of STRUCT configurations for various use cases. +This page contains practical examples of StructKit configurations for various use cases. ## Basic Examples @@ -355,7 +355,7 @@ To use these examples: 1. **Copy the YAML content** from any example above 2. **Save it to a file** (e.g., `my-structure.yaml`) -3. **Run struct generate** with your file: +3. **Run structkit generate** with your file: ```bash # Create your structure file @@ -364,14 +364,14 @@ cat > my-structure.yaml << 'EOF' EOF # Generate your project -struct generate file://my-structure.yaml ./my-project +structkit generate file://my-structure.yaml ./my-project ``` ### Quick Start with Template Variables ```bash # Generate with custom variables -struct generate -v "project_name=MyApp,author=John Doe" file://my-structure.yaml ./my-project +structkit generate -v "project_name=MyApp,author=John Doe" file://my-structure.yaml ./my-project ``` ## Contributing Examples diff --git a/docs/file-handling.md b/docs/file-handling.md index bc9ded8..f541c74 100644 --- a/docs/file-handling.md +++ b/docs/file-handling.md @@ -1,6 +1,6 @@ # File Handling -STRUCT provides flexible options for handling files and managing permissions. +StructKit provides flexible options for handling files and managing permissions. ## File Properties @@ -68,7 +68,7 @@ files: ## Remote File Protocols -STRUCT supports multiple protocols for fetching remote content (with caching and robust fallbacks): +StructKit supports multiple protocols for fetching remote content (with caching and robust fallbacks): ### HTTP/HTTPS @@ -80,11 +80,11 @@ files: ### GitHub Protocols -STRUCT optimizes single-file fetches from GitHub by preferring `raw.githubusercontent.com` when possible and falling back to `git clone/pull` if necessary. You can control behavior with environment variables: +StructKit optimizes single-file fetches from GitHub by preferring `raw.githubusercontent.com` when possible and falling back to `git clone/pull` if necessary. You can control behavior with environment variables: -- `STRUCT_HTTP_TIMEOUT` (seconds, default 10) -- `STRUCT_HTTP_RETRIES` (default 2) -- `STRUCT_DENY_NETWORK=1` to skip HTTP attempts and use git fallback directly. +- `STRUCTKIT_HTTP_TIMEOUT` (seconds, default 10) +- `STRUCTKIT_HTTP_RETRIES` (default 2) +- `STRUCTKIT_DENY_NETWORK=1` to skip HTTP attempts and use git fallback directly. #### Standard GitHub @@ -130,7 +130,7 @@ files: ## File Handling Strategies -Control how STRUCT handles existing files with the `--file-strategy` option: +Control how StructKit handles existing files with the `--file-strategy` option: ### Available Strategies @@ -144,13 +144,13 @@ Control how STRUCT handles existing files with the `--file-strategy` option: ```sh # Skip existing files -struct generate --file-strategy=skip my-config.yaml ./output +structkit generate --file-strategy=skip my-config.yaml ./output # Backup existing files -struct generate --file-strategy=backup --backup=/tmp/backup my-config.yaml ./output +structkit generate --file-strategy=backup --backup=/tmp/backup my-config.yaml ./output # Rename existing files -struct generate --file-strategy=rename my-config.yaml ./output +structkit generate --file-strategy=rename my-config.yaml ./output ``` > **Note**: The `file://` protocol is automatically added for `.yaml` files, so these examples work with or without the explicit protocol. diff --git a/docs/funding.md b/docs/funding.md index 55e086f..4a8e386 100644 --- a/docs/funding.md +++ b/docs/funding.md @@ -1,12 +1,12 @@ -# Funding STRUCT +# Funding StructKit -STRUCT is an open-source project that helps developers create consistent project structures and automate repetitive setup tasks. Your support helps us maintain and improve this tool for the entire community. +StructKit is an open-source project that helps developers create consistent project structures and automate repetitive setup tasks. Your support helps us maintain and improve this tool for the entire community. ## πŸ’° Support Options ### GitHub Sponsors -The easiest way to support STRUCT development is through GitHub Sponsors: +The easiest way to support StructKit development is through GitHub Sponsors: - **[Sponsor @httpdss on GitHub](https://github.com/sponsors/httpdss)** @@ -22,7 +22,7 @@ GitHub Sponsors allows for recurring monthly contributions or one-time donations For ongoing support with additional perks: -- **[Support STRUCT on Patreon](https://patreon.com/structproject)** +- **[Support StructKit on Patreon](https://patreon.com/structproject)** Patreon supporters get access to: @@ -39,7 +39,7 @@ For one-time contributions: ## 🀝 Alternative Ways to Support -If financial contribution isn't possible, you can still support STRUCT: +If financial contribution isn't possible, you can still support StructKit: ### Code Contributions @@ -52,7 +52,7 @@ If financial contribution isn't possible, you can still support STRUCT: - Answer questions in GitHub Discussions - Help other users in issues -- Share STRUCT on social media +- Share StructKit on social media - Write blog posts or tutorials ### Feedback and Testing @@ -64,4 +64,4 @@ If financial contribution isn't possible, you can still support STRUCT: --- -Every contribution, no matter the size, helps make STRUCT better for everyone. Thank you for your support! πŸŽ‰ +Every contribution, no matter the size, helps make StructKit better for everyone. Thank you for your support! πŸŽ‰ diff --git a/docs/github-integration.md b/docs/github-integration.md index f748bd2..a173168 100644 --- a/docs/github-integration.md +++ b/docs/github-integration.md @@ -1,10 +1,10 @@ # GitHub Integration -STRUCT can seamlessly integrate with GitHub to automate the generation of project structures across repositories. +StructKit can seamlessly integrate with GitHub to automate the generation of project structures across repositories. -## Automating STRUCT +## Automating StructKit -Combine GitHub Actions with STRUCT to automate project structure generation in CI/CD pipelines. Trigger the process manually or automatically based on events like pull requests or pushes. +Combine GitHub Actions with StructKit to automate project structure generation in CI/CD pipelines. Trigger the process manually or automatically based on events like pull requests or pushes. Example Workflow: @@ -26,13 +26,13 @@ jobs: 1. **Secure Your Token**: Store GitHub tokens in secrets management tools. 2. **Use Topics for Filtering**: Organize repositories with topics to efficiently manage workflows. 3. **Test Locally First**: Simulate script actions with `--dry-run` before executing in a CI/CD environment. -4. **Combine with Other Tools**: Use STRUCT with Terraform, Ansible, or Docker for comprehensive project management. +4. **Combine with Other Tools**: Use StructKit with Terraform, Ansible, or Docker for comprehensive project management. ## FAQs ### Why use a GitHub Integration? -Using GitHub integration allows you to leverage STRUCT's automation capabilities in a version-controlled environment, enabling consistent and repeatable project structures. +Using GitHub integration allows you to leverage StructKit's automation capabilities in a version-controlled environment, enabling consistent and repeatable project structures. ### Can I customize the GitHub Action? diff --git a/docs/hooks.md b/docs/hooks.md index c5389fa..d3e9ce5 100644 --- a/docs/hooks.md +++ b/docs/hooks.md @@ -77,7 +77,7 @@ pre_hooks: post_hooks: - git init - git add . - - git commit -m "Initial commit from STRUCT" + - git commit -m "Initial commit from StructKit" - echo "Git repository initialized" files: @@ -86,7 +86,7 @@ files: - README.md: content: | # {{@ project_name @}} - Generated with STRUCT + Generated with StructKit ``` ### Docker Setup @@ -176,7 +176,7 @@ files: 2. **Handle errors gracefully**: Check for tool availability in pre-hooks 3. **Use absolute paths**: Hooks run in the target directory context 4. **Log important actions**: Use echo statements for user feedback -5. **Test independently**: Ensure hook commands work outside STRUCT +5. **Test independently**: Ensure hook commands work outside StructKit 6. **Consider dependencies**: Order hooks based on their requirements ## Error Handling diff --git a/docs/index.md b/docs/index.md index c602f7f..10ea0d4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,12 +1,12 @@ -# STRUCT Documentation +# StructKit Documentation -Welcome to the comprehensive documentation for STRUCT - the Automated Project Structure Generator. +Welcome to the comprehensive documentation for StructKit - the Automated Project Structure Generator. ## πŸ“š Documentation Sections ### Getting Started -- [Installation Guide](installation.md) - How to install STRUCT +- [Installation Guide](installation.md) - How to install StructKit - [Quick Start](quickstart.md) - Get up and running quickly - [Basic Usage](usage.md) - Core functionality and commands @@ -26,7 +26,7 @@ Welcome to the comprehensive documentation for STRUCT - the Automated Project St ### Development -- [Development Setup](development.md) - Contributing to STRUCT +- [Development Setup](development.md) - Contributing to StructKit - [Command-Line Completion](completion.md) - Auto-completion setup ### Reference diff --git a/docs/installation.md b/docs/installation.md index cb30bee..a470670 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -7,7 +7,7 @@ tags: ## Using pip -Install STRUCT with pip: +Install StructKit with pip: ```sh pip install git+https://github.com/httpdss/struct.git @@ -22,7 +22,7 @@ Clone the repository and install locally. See the [Development](development.md) ## Using Docker -Run STRUCT without installing, using Docker: +Run StructKit without installing, using Docker: ```sh docker run -v $(pwd):/workdir -u $(id -u):$(id -g) ghcr.io/httpdss/struct:main generate file:///workdir/example/structure.yaml /workdir/example_output diff --git a/docs/known-issues.md b/docs/known-issues.md index 7e74afd..2663c01 100644 --- a/docs/known-issues.md +++ b/docs/known-issues.md @@ -1,6 +1,6 @@ # Known Issues -This page tracks known issues, limitations, and workarounds for STRUCT. If you encounter any of these issues, check here for potential solutions. +This page tracks known issues, limitations, and workarounds for StructKit. If you encounter any of these issues, check here for potential solutions. ## Current Known Issues @@ -183,7 +183,7 @@ variables: **Limitation**: Schema validation doesn't catch all runtime errors. -**Note**: Use `struct validate` and testing for comprehensive validation. +**Note**: Use `structkit validate` and testing for comprehensive validation. ## Workarounds and Best Practices @@ -220,7 +220,7 @@ variables: ### Issue Report Template ```markdown -**STRUCT Version**: [e.g., 1.2.3] +**StructKit Version**: [e.g., 1.2.3] **Platform**: [e.g., Ubuntu 20.04, macOS 12.0, Windows 11] **Python Version**: [e.g., 3.9.7] diff --git a/docs/mappings.md b/docs/mappings.md index 56d6168..0478274 100644 --- a/docs/mappings.md +++ b/docs/mappings.md @@ -4,7 +4,7 @@ You can provide a mappings YAML file to inject key-value maps into your template ## What are Mappings? -Mappings are external data files that provide structured key-value pairs for use in your STRUCT templates. They allow you to: +Mappings are external data files that provide structured key-value pairs for use in your StructKit templates. They allow you to: - Separate data from templates - Share common values across multiple structures @@ -122,7 +122,7 @@ variables: ## Using Mappings in the `with` Clause -You can assign values from mappings directly in the `with` clause for folder struct calls: +You can assign values from mappings directly in the `with` clause for folder structkit calls: ```yaml folders: @@ -147,8 +147,8 @@ Use the `--mappings-file` argument with the `generate` command: ```sh # Both commands work identically - file:// is automatically added for .yaml files -struct generate --mappings-file ./mymap.yaml my-struct.yaml . -struct generate --mappings-file ./mymap.yaml file://my-struct.yaml . +structkit generate --mappings-file ./mymap.yaml my-struct.yaml . +structkit generate --mappings-file ./mymap.yaml file://my-struct.yaml . ``` ### Multiple Mappings Files @@ -156,7 +156,7 @@ struct generate --mappings-file ./mymap.yaml file://my-struct.yaml . You can specify multiple mappings files that will be merged in order: ```sh -struct generate \ +structkit generate \ --mappings-file ./common-mappings.yaml \ --mappings-file ./env-specific-mappings.yaml \ my-struct.yaml . @@ -172,7 +172,7 @@ struct generate \ **Example with environment variable:** ```sh -struct generate \ +structkit generate \ --mappings-file ./mappings/common.yaml \ --mappings-file ./mappings/${ENVIRONMENT}.yaml \ infrastructure.yaml \ @@ -291,7 +291,7 @@ folders: ## Error Handling -If a mapping key doesn't exist, STRUCT will show an error: +If a mapping key doesn't exist, StructKit will show an error: ```yaml files: diff --git a/docs/mcp-integration.md b/docs/mcp-integration.md index f62780d..ac9254a 100644 --- a/docs/mcp-integration.md +++ b/docs/mcp-integration.md @@ -5,7 +5,7 @@ tags: # MCP (Model Context Protocol) Integration -The struct tool now supports MCP (Model Context Protocol) integration, providing a programmable interface to interact with structure definitions. This enables automation and integration with other tools, particularly AI-assisted development workflows. +The structkit tool now supports MCP (Model Context Protocol) integration, providing a programmable interface to interact with structure definitions. This enables automation and integration with other tools, particularly AI-assisted development workflows. ## Available MCP Tools @@ -92,17 +92,17 @@ The MCP server uses FastMCP (v2.0+) and can run over stdio, http, or sse transpo - stdio (default): ```bash -struct mcp --server --transport stdio +structkit mcp --server --transport stdio ``` - HTTP (StreamableHTTP): ```bash -struct mcp --server --transport http --host 127.0.0.1 --port 9000 --path /mcp +structkit mcp --server --transport http --host 127.0.0.1 --port 9000 --path /mcp ``` - SSE: ```bash -struct mcp --server --transport sse --host 0.0.0.0 --port 8080 --path /events +structkit mcp --server --transport sse --host 0.0.0.0 --port 8080 --path /events ``` ### Command Line Integration @@ -111,10 +111,10 @@ The existing `list` and `info` commands now support an optional `--mcp` flag: ```bash # List structures with MCP support -struct list --mcp +structkit list --mcp # Get structure info with MCP support -struct info project/python --mcp +structkit info project/python --mcp ``` ## MCP Client Integration @@ -130,8 +130,8 @@ Add the following to your Claude Desktop configuration file: ```json { "mcpServers": { - "struct": { - "command": "struct", + "structkit": { + "command": "structkit", "args": ["mcp", "--server"], "cwd": "/path/to/your/project" } @@ -146,8 +146,8 @@ For Cline (VS Code extension), add to your `.cline_mcp_settings.json`: ```json { "mcpServers": { - "struct": { - "command": "struct", + "structkit": { + "command": "structkit", "args": ["mcp", "--server"] } } @@ -189,7 +189,7 @@ from mcp.client.stdio import stdio_client async def main(): server_params = StdioServerParameters( - command="struct", + command="structkit", args=["mcp", "--server"] ) @@ -217,7 +217,7 @@ Using `output: "console"` with `generate_structure` allows piping structure cont ```bash # Generate structure content to console for AI review -struct mcp --server | ai-tool "Review this project structure" +structkit mcp --server | ai-tool "Review this project structure" ``` ### Chaining Operations @@ -268,8 +268,8 @@ The MCP tools can be chained together for complex workflows: ## Configuration ### Environment Variables -The MCP server respects the same environment variables as the regular struct tool: -- `STRUCT_STRUCTURES_PATH`: Default path for structure definitions +The MCP server respects the same environment variables as the regular structkit tool: +- `STRUCTKIT_STRUCTURES_PATH`: Default path for structure definitions - Any mapping variables used in templates ### Client Configuration Examples @@ -277,7 +277,7 @@ The MCP server respects the same environment variables as the regular struct too #### 1. Basic Configuration ```json { - "command": "struct", + "command": "structkit", "args": ["mcp", "--server"] } ``` @@ -285,10 +285,10 @@ The MCP server respects the same environment variables as the regular struct too #### 2. With Custom Structures Path ```json { - "command": "struct", + "command": "structkit", "args": ["mcp", "--server"], "env": { - "STRUCT_STRUCTURES_PATH": "/path/to/custom/structures" + "STRUCTKIT_STRUCTURES_PATH": "/path/to/custom/structures" } } ``` @@ -297,7 +297,7 @@ The MCP server respects the same environment variables as the regular struct too ```json { "command": "/path/to/venv/bin/python", - "args": ["-m", "struct_module.main", "mcp", "--server"], + "args": ["-m", "structkit.main", "mcp", "--server"], "cwd": "/path/to/struct/project" } ``` @@ -308,7 +308,7 @@ Create a shell script `struct-mcp.sh`: #!/bin/bash cd /path/to/your/project source .venv/bin/activate -struct mcp --server +structkit mcp --server ``` Then configure your MCP client: @@ -321,7 +321,7 @@ Then configure your MCP client: ## Quick Start Guide -### Step 1: Install struct with MCP support +### Step 1: Install structkit with MCP support ```bash pip install fastmcp>=2.0 # (your MCP client may also require installing the MCP SDK, e.g., `pip install mcp`) @@ -330,7 +330,7 @@ pip install fastmcp>=2.0 ### Step 2: Test MCP server ```bash # Test that MCP server starts correctly -struct mcp --server +structkit mcp --server # Should show: Starting MCP server... # Press Ctrl+C to stop ``` @@ -350,12 +350,12 @@ Once connected, you can use these tools: ### Common Issues 1. **"Command not found: struct"** - - Solution: Ensure struct is installed and in your PATH + - Solution: Ensure structkit is installed and in your PATH - Alternative: Use full path to Python executable 2. **MCP server won't start** - Check if `mcp` package is installed: `pip show mcp` - - Try running with verbose logging: `struct mcp --server --log DEBUG` + - Try running with verbose logging: `structkit mcp --server --log DEBUG` 3. **Client can't connect** - Verify the command and args in your client configuration @@ -363,19 +363,19 @@ Once connected, you can use these tools: - Check working directory and environment variables 4. **Structures not found** - - Set `STRUCT_STRUCTURES_PATH` environment variable + - Set `STRUCTKIT_STRUCTURES_PATH` environment variable - Use absolute paths in configuration - Verify structure files exist and are readable ### Debug Mode ```bash # Run with debug logging -STRUCT_LOG_LEVEL=DEBUG struct mcp --server +STRUCTKIT_LOG_LEVEL=DEBUG structkit mcp --server ``` ## Benefits -1. **Automation**: Programmatic access to all struct tool functionality +1. **Automation**: Programmatic access to all structkit tool functionality 2. **Integration**: Easy integration with other development tools 3. **AI Workflows**: Enhanced support for AI-assisted development processes 4. **Consistency**: Same underlying logic as CLI commands @@ -383,4 +383,4 @@ STRUCT_LOG_LEVEL=DEBUG struct mcp --server ## Backward Compatibility -All existing struct tool functionality remains unchanged. The MCP integration is additive and does not affect existing workflows or commands. +All existing structkit tool functionality remains unchanged. The MCP integration is additive and does not affect existing workflows or commands. diff --git a/docs/quickstart.md b/docs/quickstart.md index 3b1b4f0..e8d445f 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -47,30 +47,30 @@ mkdir example cd example/ touch structure.yaml vim structure.yaml # copy the content from the example folder -struct generate structure.yaml . +structkit generate structure.yaml . ``` -> Note: The `file://` protocol is automatically added for `.yaml` files, so `structure.yaml` and `file://structure.yaml` work identically. Additionally, if your file is named `.struct.yaml` in the current directory and you want to generate into the current directory, you can just run `struct generate`. +> Note: The `file://` protocol is automatically added for `.yaml` files, so `structure.yaml` and `file://structure.yaml` work identically. Additionally, if your file is named `.struct.yaml` in the current directory and you want to generate into the current directory, you can just run `structkit generate`. ## Discovering Available Structures Before generating, see what structures are available: ```sh -struct list +structkit list ``` This shows all built-in structures you can use. !!! tip "Auto-Completion" - If you've enabled [auto-completion](completion.md), you can press `Tab` after `struct generate ` to see all available structures! + If you've enabled [auto-completion](completion.md), you can press `Tab` after `structkit generate` to see all available structures! ## First Example -After installing STRUCT, try this simple example: +After installing StructKit, try this simple example: ```sh -struct generate terraform/modules/generic ./my-terraform-module +structkit generate terraform/modules/generic ./my-terraform-module ``` This will create a new terraform module structure in the `./my-terraform-module` directory. @@ -78,7 +78,7 @@ This will create a new terraform module structure in the `./my-terraform-module` Or try a simple project structure: ```sh -struct generate project/nodejs ./my-node-app +structkit generate project/nodejs ./my-node-app ``` ## Bootstrap a new project @@ -86,10 +86,10 @@ struct generate project/nodejs ./my-node-app Start with a minimal .struct.yaml: ```sh -struct init +structkit init ``` -This writes a basic .struct.yaml with hooks, a README, and a reference to the run-struct workflow. +This writes a basic .struct.yaml with hooks, a README, and a reference to the run-structkit workflow. ## Next Steps diff --git a/docs/schema.md b/docs/schema.md index 5cbabe7..b0675c2 100644 --- a/docs/schema.md +++ b/docs/schema.md @@ -1,6 +1,6 @@ # YAML Schema Reference -STRUCT provides JSON schema validation to ensure your YAML configuration files are correctly structured. This helps catch errors early and provides IDE support with autocompletion. +StructKit provides JSON schema validation to ensure your YAML configuration files are correctly structured. This helps catch errors early and provides IDE support with autocompletion. ## Schema Location @@ -40,7 +40,7 @@ If you have custom structures, generate a schema that includes them: ```sh # Generate schema with custom structures -struct generate-schema -s /path/to/custom/structures -o my-schema.json +structkit generate-schema -s /path/to/custom/structures -o my-schema.json # Use in VS Code settings { @@ -137,7 +137,7 @@ post_hooks: ```sh # Validate a configuration file -struct validate my-config.yaml +structkit validate my-config.yaml ``` ### Programmatic Validation @@ -176,7 +176,7 @@ files: ### Missing Required Properties ```yaml -# ❌ Wrong - struct property missing +# ❌ Wrong - structkit property missing folders: - src/: with: @@ -251,7 +251,7 @@ With schema validation enabled, you get: ### Validation Errors -1. Use `struct validate` command for detailed error messages +1. Use `structkit validate` command for detailed error messages 2. Check schema documentation for required properties 3. Verify YAML syntax is correct 4. Ensure structure names exist in your installation @@ -262,4 +262,4 @@ With schema validation enabled, you get: 2. Consider schema caching in your IDE 3. Limit schema complexity for large configurations -This schema system ensures your STRUCT configurations are valid and provides a better development experience through IDE integration. +This schema system ensures your StructKit configurations are valid and provides a better development experience through IDE integration. diff --git a/docs/structures.md b/docs/structures.md index 9580159..deedbad 100644 --- a/docs/structures.md +++ b/docs/structures.md @@ -1,4 +1,4 @@ -# List of Structures in `struct_module/contribs` +# List of Structures in `structkit/contribs` ## Ansible Playbook @@ -151,7 +151,7 @@ - **Description**: Contains the structure for a GitHub security API prompt. - **Structure name**: `github/prompt/security-api` -## Github struct prompt +## Github structkit prompt - **File**: `github/prompt/struct.yaml` - **Description**: Defines the structure for a Struct prompt in GitHub. diff --git a/docs/template-variables.md b/docs/template-variables.md index 81e2620..c8b775f 100644 --- a/docs/template-variables.md +++ b/docs/template-variables.md @@ -1,10 +1,10 @@ # Template Variables -Template variables allow you to create dynamic content in your STRUCT configurations. This page covers all aspects of working with variables. +Template variables allow you to create dynamic content in your StructKit configurations. This page covers all aspects of working with variables. -## Custom Delimiters (STRUCT) +## Custom Delimiters (StructKit) -STRUCT uses custom Jinja2 delimiters to avoid conflicts with YAML and other content: +StructKit uses custom Jinja2 delimiters to avoid conflicts with YAML and other content: - Variables: `{{@` and `@}}` - Blocks: `{%@` and `@%}` @@ -59,14 +59,14 @@ files: ## Default Variables -STRUCT provides these built-in variables: +StructKit provides these built-in variables: - `file_name`: The name of the file being processed - `file_directory`: The directory containing the file being processed ## Interactive Variables -Define variables that prompt users for input. When running in interactive mode, STRUCT will display the variable's description to help users understand what value is expected: +Define variables that prompt users for input. When running in interactive mode, StructKit will display the variable's description to help users understand what value is expected: ```yaml variables: @@ -104,7 +104,7 @@ For variables without descriptions, a more compact format is used: **Note**: Variable names appear in **bold** in actual terminal output for better readability. -**Contextual Icons**: STRUCT automatically selects appropriate icons based on variable names and types: +**Contextual Icons**: StructKit automatically selects appropriate icons based on variable names and types: - πŸš€ Project/app names - 🌍 Environment/deployment variables - πŸ”Œ Ports/network settings @@ -126,7 +126,7 @@ For variables without descriptions, a more compact format is used: ### Validation and Defaults -Interactive enum selection: when a variable defines `enum` and you are in interactive mode, STRUCT will display numbered choices and accept either the number or the exact value. Press Enter to accept the default (if any). +Interactive enum selection: when a variable defines `enum` and you are in interactive mode, StructKit will display numbered choices and accept either the number or the exact value. Press Enter to accept the default (if any). Example prompt: @@ -164,7 +164,7 @@ variables: ## Custom Jinja2 Filters and Globals -STRUCT includes custom filters for common tasks: +StructKit includes custom filters for common tasks: ### `uuid()` (global) diff --git a/docs/usage.md b/docs/usage.md index 0713c99..148abad 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -13,7 +13,7 @@ For more information, run the script with the `-h` or `--help` option (this is a ![Struct List](./vhs/basic-usage.gif) ```sh -struct -h +structkit -h ``` ## Generate Command @@ -23,13 +23,13 @@ struct -h Use the `list` command to see all available structures: ```sh -struct list +structkit list ``` Or if you have [auto-completion](completion.md) enabled, use `Tab` to see all options: ```sh -struct generate +structkit generate # Shows all available structures ``` @@ -38,13 +38,13 @@ struct generate If you have a .struct.yaml in the current directory and want to generate into the current directory, you can simply run: ```sh -struct generate +structkit generate ``` ### Simple Example ```sh -struct generate terraform/modules/generic ./my-terraform-module +structkit generate terraform/modules/generic ./my-terraform-module ``` ### YAML File Usage @@ -53,26 +53,26 @@ For local YAML configuration files, the `file://` protocol is automatically adde ```sh # Both of these work identically -struct generate my-config.yaml ./output -struct generate file://my-config.yaml ./output +structkit generate my-config.yaml ./output +structkit generate file://my-config.yaml ./output ``` Tip: If your config file is named `.struct.yaml` in the current directory and you want to generate into the current directory, you can simply run: ```sh -struct generate +structkit generate ``` ### Diff Preview Example ```sh -struct generate --dry-run --diff file://structure.yaml ./output +structkit generate --dry-run --diff file://structure.yaml ./output ``` ### Complete Example ```sh -struct generate \ +structkit generate \ --log=DEBUG \ --dry-run \ --backup=/path/to/backup \ @@ -100,16 +100,16 @@ The `generate-schema` command creates JSON schema definitions for available stru ```sh # Generate schema to stdout -struct generate-schema +structkit generate-schema # Generate schema with custom structures path -struct generate-schema -s /path/to/custom/structures +structkit generate-schema -s /path/to/custom/structures # Save schema to file -struct generate-schema -o schema.json +structkit generate-schema -o schema.json # Combine custom path and output file -struct generate-schema -s /path/to/custom/structures -o schema.json +structkit generate-schema -s /path/to/custom/structures -o schema.json ``` ### Command Options for `generate-schema` @@ -130,35 +130,35 @@ The generated schema includes all available structures from both the built-in co Create a minimal .struct.yaml in the current directory: ```sh -struct init +structkit init ``` Or specify a directory: ```sh -struct init ./my-project +structkit init ./my-project ``` The file includes: - pre_hooks/post_hooks with echo commands - A README.md placeholder in files -- A folders entry pointing to the github/workflows/run-struct workflow at ./ +- A folders entry pointing to the github/workflows/run-structkit workflow at ./ ### Validate Configuration ```sh -struct validate my-structure.yaml +structkit validate my-structure.yaml ``` ### List Available Structures ```sh -struct list +structkit list ``` ### Show Information ```sh -struct info +structkit info ``` diff --git a/docs/vhs/README.md b/docs/vhs/README.md index ecb8b39..1e5864e 100644 --- a/docs/vhs/README.md +++ b/docs/vhs/README.md @@ -1,6 +1,6 @@ -# STRUCT VHS Demo Tapes +# StructKit VHS Demo Tapes -This directory contains [VHS](https://github.com/charmbracelet/vhs) tape files for creating animated GIF demonstrations of STRUCT's features. These tapes showcase various use cases and capabilities of the STRUCT tool. +This directory contains [VHS](https://github.com/charmbracelet/vhs) tape files for creating animated GIF demonstrations of StructKit's features. These tapes showcase various use cases and capabilities of the StructKit tool. ## 🎬 Available Tapes @@ -8,12 +8,12 @@ This directory contains [VHS](https://github.com/charmbracelet/vhs) tape files f **File**: `install.tape` **Duration**: ~30 seconds -**Description**: Shows how to install STRUCT using pip and verify the installation. +**Description**: Shows how to install StructKit using pip and verify the installation. ### 2. Basic Usage **File**: `basic-usage.tape` -**Description**: Demonstrates basic STRUCT commands like `list`, `info`, and simple project generation. +**Description**: Demonstrates basic StructKit commands like `list`, `info`, and simple project generation. ```tape Output docs/vhs/basic-usage.gif @@ -30,15 +30,15 @@ Set Height 800 Set Shell "bash" Type "# Explore available structures" Enter -Type "struct list" Enter +Type "structkit list" Enter Sleep 3 Type "" Enter Type "# Get information about a specific structure" Enter -Type "struct info terraform/module" Enter +Type "structkit info terraform/module" Enter Sleep 5 Type "" Enter Type "# Generate a simple project structure" Enter -Type "struct generate terraform/module ./my-terraform-module" Enter +Type "structkit generate terraform/module ./my-terraform-module" Enter Sleep 8 Type "" Enter Type "# Verify the generated structure" Enter @@ -85,7 +85,7 @@ Type "EOF" Enter Sleep 2 Type "" Enter Type "# Generate structure from YAML (note: file:// is automatic)" Enter -Type "struct generate my-project.yaml ./output" Enter +Type "structkit generate my-project.yaml ./output" Enter Sleep 5 Type "" Enter Type "# Check the generated files" Enter @@ -147,7 +147,7 @@ Type "EOF" Enter Sleep 3 Type "" Enter Type "# Generate with mappings file" Enter -Type "struct generate --mappings-file mappings.yaml app-config.yaml ./config-output" Enter +Type "structkit generate --mappings-file mappings.yaml app-config.yaml ./config-output" Enter Sleep 5 Type "" Enter Type "# Check generated configuration" Enter @@ -217,7 +217,7 @@ Type "EOF" Enter Sleep 3 Type "" Enter Type "# Generate with multiple mappings files (deep merge)" Enter -Type "struct generate \\" Enter +Type "structkit generate \\" Enter Type " --mappings-file base-mappings.yaml \\" Enter Type " --mappings-file prod-mappings.yaml \\" Enter Type " deployment.yaml ./k8s-output" Enter @@ -252,7 +252,7 @@ Type "mkdir -p existing-project && echo 'old content' > existing-project/README. Sleep 1 Type "" Enter Type "# Use dry-run to preview changes" Enter -Type "struct generate --dry-run terraform/module ./existing-project" Enter +Type "structkit generate --dry-run terraform/module ./existing-project" Enter Sleep 5 Type "" Enter Type "# Validate a YAML configuration" Enter @@ -262,11 +262,11 @@ Type " - test.txt:" Enter Type " content: 'Hello World'" Enter Type "EOF" Enter Sleep 2 -Type "struct validate test-config.yaml" Enter +Type "structkit validate test-config.yaml" Enter Sleep 3 Type "" Enter Type "# Generate with backup strategy" Enter -Type "struct generate --file-strategy=backup --backup=./backups terraform/module ./existing-project" Enter +Type "structkit generate --file-strategy=backup --backup=./backups terraform/module ./existing-project" Enter Sleep 5 Type "" Enter Type "# Check backup was created" Enter @@ -313,7 +313,7 @@ Type "EOF" Enter Sleep 3 Type "" Enter Type "# Generate project with remote content" Enter -Type "struct generate remote-demo.yaml ./remote-project" Enter +Type "structkit generate remote-demo.yaml ./remote-project" Enter Sleep 8 Type "" Enter Type "# Check downloaded content" Enter @@ -342,11 +342,11 @@ Set Height 800 Set Shell "bash" Type "# Generate JSON schema for available structures" Enter -Type "struct generate-schema" Enter +Type "structkit generate-schema" Enter Sleep 5 Type "" Enter Type "# Save schema to file for IDE integration" Enter -Type "struct generate-schema -o struct-schema.json" Enter +Type "structkit generate-schema -o struct-schema.json" Enter Sleep 3 Type "" Enter Type "# Check the generated schema" Enter @@ -394,7 +394,7 @@ These GIFs can be embedded in: Example markdown embedding: ```markdown -![STRUCT Basic Usage](./docs/vhs/basic-usage.gif) +![StructKit Basic Usage](./docs/vhs/basic-usage.gif) ``` ## βš™οΈ VHS Configuration @@ -409,7 +409,7 @@ All tapes use consistent settings: ## πŸ”„ Updating Tapes -When STRUCT features change: +When StructKit features change: 1. Update the relevant tape file 2. Regenerate the GIF: `vhs filename.tape` @@ -418,4 +418,4 @@ When STRUCT features change: --- -These demonstrations provide comprehensive coverage of STRUCT's capabilities, from basic usage to advanced features like multiple mappings files, remote content fetching, and schema generation. +These demonstrations provide comprehensive coverage of StructKit's capabilities, from basic usage to advanced features like multiple mappings files, remote content fetching, and schema generation. diff --git a/docs/vhs/advanced-features.tape b/docs/vhs/advanced-features.tape index 3d959ac..ea3c024 100644 --- a/docs/vhs/advanced-features.tape +++ b/docs/vhs/advanced-features.tape @@ -7,7 +7,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT Advanced Features Demo" +Type "# StructKit Advanced Features Demo" Enter Sleep 1s @@ -15,7 +15,7 @@ Type "# Generate schema for VSCode autocompletion" Enter Type "mkdir -p .vscode" Enter -Type "struct generate-schema --output .vscode/struct-schema.json" +Type "structkit generate-schema --output .vscode/struct-schema.json" Enter Sleep 2s @@ -45,7 +45,7 @@ Sleep 2s Type "# Generate with remote content" Enter -Type "struct generate remote-demo.yaml ./remote-project" +Type "structkit generate remote-demo.yaml ./remote-project" Enter Sleep 3s @@ -55,6 +55,6 @@ Type "ls -la remote-project/" Enter Sleep 2s -Type "# Advanced features make STRUCT incredibly powerful!" +Type "# Advanced features make StructKit incredibly powerful!" Enter Sleep 2s diff --git a/docs/vhs/basic-usage.tape b/docs/vhs/basic-usage.tape index 32ffb13..b90a916 100644 --- a/docs/vhs/basic-usage.tape +++ b/docs/vhs/basic-usage.tape @@ -6,7 +6,7 @@ Set Width 1200 Set Height 600 Set Shell "bash" -Type "# STRUCT - Basic Usage Demo" +Type "# StructKit - Basic Usage Demo" Enter Sleep 1s @@ -42,6 +42,6 @@ Type "tree my-python-app/ || find my-python-app/ -type f" Enter Sleep 2s -Type "# That's it! STRUCT made it easy to bootstrap a project" +Type "# That's it! StructKit made it easy to bootstrap a project" Enter Sleep 1s diff --git a/docs/vhs/install.tape b/docs/vhs/install.tape index a8e1f04..7aaf6ea 100644 --- a/docs/vhs/install.tape +++ b/docs/vhs/install.tape @@ -8,7 +8,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT Installation Demo" +Type "# StructKit Installation Demo" Enter Sleep 1s @@ -22,7 +22,7 @@ Type "source .venv/bin/activate" Enter Sleep 1s -Type "# Install STRUCT from GitHub" +Type "# Install StructKit from GitHub" Enter Type "pip install git+https://github.com/httpdss/struct.git" Enter @@ -30,16 +30,16 @@ Sleep 5s Type "# Verify installation" Enter -Type "struct --help" +Type "structkit --help" Enter Sleep 2s Type "# Check available structures" Enter -Type "struct list" +Type "structkit list" Enter Sleep 3s -Type "# STRUCT is now installed and ready to use!" +Type "# StructKit is now installed and ready to use!" Enter Sleep 2s diff --git a/docs/vhs/mappings-demo.tape b/docs/vhs/mappings-demo.tape index 65707d9..60b4003 100644 --- a/docs/vhs/mappings-demo.tape +++ b/docs/vhs/mappings-demo.tape @@ -7,7 +7,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT Mappings Demo" +Type "# StructKit Mappings Demo" Enter Sleep 1s diff --git a/docs/vhs/multiple-mappings.tape b/docs/vhs/multiple-mappings.tape index 341ba60..679dab6 100644 --- a/docs/vhs/multiple-mappings.tape +++ b/docs/vhs/multiple-mappings.tape @@ -7,7 +7,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT Multiple Mappings Demo" +Type "# StructKit Multiple Mappings Demo" Enter Sleep 1s diff --git a/docs/vhs/remote-content.tape b/docs/vhs/remote-content.tape index 31d01a7..8098335 100644 --- a/docs/vhs/remote-content.tape +++ b/docs/vhs/remote-content.tape @@ -7,7 +7,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT Remote Content Demo" +Type "# StructKit Remote Content Demo" Enter Sleep 1s diff --git a/docs/vhs/schema-generation.tape b/docs/vhs/schema-generation.tape index f762a91..99e1b2f 100644 --- a/docs/vhs/schema-generation.tape +++ b/docs/vhs/schema-generation.tape @@ -7,7 +7,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT Schema Generation Demo" +Type "# StructKit Schema Generation Demo" Enter Sleep 1s diff --git a/docs/vhs/yaml-config.tape b/docs/vhs/yaml-config.tape index b2cabbd..09cd02d 100644 --- a/docs/vhs/yaml-config.tape +++ b/docs/vhs/yaml-config.tape @@ -7,7 +7,7 @@ Set Width 1400 Set Height 800 Set Shell "bash" -Type "# STRUCT YAML Configuration Demo" +Type "# StructKit YAML Configuration Demo" Enter Sleep 1s @@ -23,7 +23,7 @@ Type " content: |" Enter Type " # My Project" Enter -Type " Generated with STRUCT" +Type " Generated with StructKit" Enter Type " - .gitignore:" Enter @@ -55,10 +55,10 @@ Type "cat my-custom-project/README.md" Enter Sleep 2s -Type "# YAML configuration makes STRUCT highly flexible!" +Type "# YAML configuration makes StructKit highly flexible!" Enter Sleep 2s Sleep 2s -Type "# YAML configuration makes STRUCT highly flexible!" Enter +Type "# YAML configuration makes StructKit highly flexible!" Enter Sleep 2s diff --git a/mkdocs.yml b/mkdocs.yml index 42b5666..4639fb9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: STRUCT Documentation +site_name: StructKit Documentation site_description: Automated Project Structure Generator site_url: https://httpdss.github.io/struct/ repo_url: https://github.com/httpdss/struct diff --git a/overrides/stylesheets/extra.css b/overrides/stylesheets/extra.css index 21b617b..b1897fe 100644 --- a/overrides/stylesheets/extra.css +++ b/overrides/stylesheets/extra.css @@ -1,4 +1,4 @@ -/* STRUCT MkDocs Custom Theme - Matching main site styling */ +/* StructKit MkDocs Custom Theme - Matching main site styling */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Fira+Code:wght@300;400;500&display=swap'); /* CSS Custom Properties - Matching main site */ diff --git a/pyproject.toml b/pyproject.toml index 178b8b5..979f314 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,8 +3,8 @@ requires = ["setuptools>=65.0", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "struct" -version = "2.8.1" +name = "structkit" +version = "3.0.0" description = "A structured data processing tool" readme = "README.md" license = {text = "MIT"} @@ -45,8 +45,8 @@ gcs = [ "google-api-core>=2.11.0", ] cloud = [ - "struct[s3]", - "struct[gcs]" + "structkit[s3]", + "structkit[gcs]" ] dev = [ "pytest>=7.0.0", @@ -57,18 +57,18 @@ dev = [ ] [project.urls] -Homepage = "https://github.com/httpdss/struct" -Repository = "https://github.com/httpdss/struct.git" +Homepage = "https://github.com/httpdss/structkit" +Repository = "https://github.com/httpdss/structkit.git" [project.scripts] -struct = "struct_module.main:main" +structkit = "structkit.main:main" [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] where = ["."] # Look for packages in root directory -include = ["struct_module*"] +include = ["structkit*"] [tool.setuptools.package-data] -struct_module = ["contribs/*.yaml"] +structkit = ["contribs/*.yaml"] diff --git a/site/css/advanced.css b/site/css/advanced.css index c5e4ea2..1caac2f 100644 --- a/site/css/advanced.css +++ b/site/css/advanced.css @@ -1,4 +1,4 @@ -/* STRUCT Advanced Components CSS - Phase 2 */ +/* StructKit Advanced Components CSS - Phase 2 */ /* Search Functionality */ .search-container { diff --git a/site/css/animations.css b/site/css/animations.css index b982ea7..527e14d 100644 --- a/site/css/animations.css +++ b/site/css/animations.css @@ -1,4 +1,4 @@ -/* STRUCT Animations CSS */ +/* StructKit Animations CSS */ /* Keyframe Animations */ @keyframes fadeIn { diff --git a/site/css/components.css b/site/css/components.css index 1b99c78..703525a 100644 --- a/site/css/components.css +++ b/site/css/components.css @@ -1,4 +1,4 @@ -/* STRUCT Components CSS */ +/* StructKit Components CSS */ /* Navigation Bar */ .navbar { diff --git a/site/css/main.css b/site/css/main.css index 9f0c6c3..fccf2d6 100644 --- a/site/css/main.css +++ b/site/css/main.css @@ -1,4 +1,4 @@ -/* STRUCT Modern Static Site - Main CSS */ +/* StructKit Modern Static Site - Main CSS */ /* Import Google Fonts */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Fira+Code:wght@300;400;500&display=swap'); diff --git a/site/index.html b/site/index.html index 54ef640..c7de0bc 100644 --- a/site/index.html +++ b/site/index.html @@ -15,21 +15,21 @@ - STRUCT - Automated Project Structure Generator + StructKit - Automated Project Structure Generator - + - + @@ -70,7 +70,7 @@ { "@context": "https://schema.org", "@type": "SoftwareApplication", - "name": "STRUCT", + "name": "StructKit", "applicationCategory": "DeveloperApplication", "applicationSubCategory": "Code Generator", "description": "Powerful, flexible tool for automating project structure creation through YAML configurations. Generate consistent project layouts, boilerplate code, and configurations with template variables.", @@ -114,7 +114,7 @@