diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index 6827006..8f7d718 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -4720,4 +4720,13 @@ target_link_libraries(step648_test PRIVATE tree_sitter_javascript tree_sitter_typescript tree_sitter_java tree_sitter_rust tree_sitter_go) +add_executable(step649_test tests/step649_test.cpp) +target_include_directories(step649_test PRIVATE src) +target_link_libraries(step649_test PRIVATE + nlohmann_json::nlohmann_json + unofficial::tree-sitter::tree-sitter + tree_sitter_python tree_sitter_cpp tree_sitter_elisp + tree_sitter_javascript tree_sitter_typescript + tree_sitter_java tree_sitter_rust tree_sitter_go) + # Step 12: Dear ImGui shell scaffolding created (main.cpp exists but not built due to dependencies) diff --git a/editor/src/PackageScriptGenerator.h b/editor/src/PackageScriptGenerator.h new file mode 100644 index 0000000..a6a5a2b --- /dev/null +++ b/editor/src/PackageScriptGenerator.h @@ -0,0 +1,29 @@ +#pragma once +// Step 649: AppImage/.deb package generator + +#include + +struct PackageScripts { + bool success = false; + std::string appImageScript; + std::string debianControl; +}; + +class PackageScriptGenerator { +public: + static PackageScripts generate(const std::string& appName, + const std::string& version) { + PackageScripts out; + if (appName.empty() || version.empty()) return out; + out.success = true; + out.appImageScript = "#!/usr/bin/env bash\n" + "set -euo pipefail\n" + "appimagetool AppDir " + appName + "-" + version + ".AppImage\n"; + out.debianControl = "Package: " + appName + "\n" + "Version: " + version + "\n" + "Architecture: amd64\n" + "Maintainer: Whetstone\n" + "Description: Whetstone editor package\n"; + return out; + } +}; diff --git a/editor/tests/step649_test.cpp b/editor/tests/step649_test.cpp new file mode 100644 index 0000000..d30878e --- /dev/null +++ b/editor/tests/step649_test.cpp @@ -0,0 +1,24 @@ +// Step 649: AppImage/.deb package generator (12 tests) + +#include "PackageScriptGenerator.h" +#include +static int p=0,f=0; +#define T(n) { std::cout<<" "<<#n<<"... "; } +#define P() { std::cout<<"PASS\n"; ++p; } +#define F(m) { std::cout<<"FAIL: "<