# Project Structure ## Repository Layout ``` ├── buildtestpublish_all.sh # Master build script for all projects ├── clean.sh # Global cleanup script ├── README.md # Main project documentation └── / # Individual tool directories ``` ## Tool Directory Structure ### C++ Projects (CMake-based) ``` / ├── CMakeLists.txt # CMake configuration ├── build.sh # Build script ├── test.sh # Test script ├── clean.sh # Cleanup script ├── publish.sh # Publishing script ├── install.sh # Installation script ├── README.md # Tool documentation ├── Dockerfile.dropshell-build # Docker build configuration ├── src/ # Source code │ ├── .cpp # Main source file │ ├── version.hpp.in # Version template │ └── ... # Additional sources ├── build/ # Build artifacts (generated) ├── output/ # Final executables (generated) └── .vscode/ # VS Code configuration ``` ### Shell Script Projects ``` / ├── # Executable shell script ├── build.sh # Build script (may be no-op) ├── test.sh # Test script ├── clean.sh # Cleanup script ├── publish.sh # Publishing script └── setup_script.sh # Post-install setup (optional) ``` ## Standard Files ### Required Scripts - **build.sh**: Builds the project (Docker for C++, no-op for shell) - **test.sh**: Runs project tests - **clean.sh**: Removes build artifacts - **publish.sh**: Publishes to getpkg.xyz registry ### Optional Files - **install.sh**: System-wide installation script - **setup_script.sh**: Post-install setup for getpkg - **cmake_prebuild.sh**: Pre-build setup for CMake projects ### Generated Directories - **build/**: CMake build artifacts (C++ projects) - **output/**: Final executables ready for distribution - **test_*/**: Test-specific directories ## Naming Conventions - Tool directories match executable names - C++ source files typically match project name - Version templates use `.hpp.in` extension - Docker files use `Dockerfile.dropshell-build` pattern - Test directories prefixed with `test_` ## Configuration Files - **.gitignore**: Standard ignore patterns for build artifacts - **.vscode/**: VS Code workspace settings - **CMakeLists.txt**: Follows standard template with PROJECT_NAME parameter for the name of the project