106 lines
1.9 KiB
Bash
Executable file
106 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
if [[ "$#" -ne 1 || "$1" == "-h" || "$1" == "--help" ]]; then
|
|
echo "Usage: psemek-create-project <project-name>"
|
|
echo "Creates a new psemek project in the current directory"
|
|
exit 0
|
|
fi
|
|
|
|
git init .
|
|
git submodule add git@git.lisyarus.dev:lisyarus/psemek.git
|
|
git submodule update --init --recursive
|
|
|
|
mkdir -p source include/${1}
|
|
|
|
cat > .gitignore << EOF
|
|
.gitignore
|
|
.qtcreator
|
|
build
|
|
package
|
|
EOF
|
|
|
|
cat > CMakeLists.txt << EOF
|
|
cmake_minimum_required(VERSION 3.16)
|
|
project(${1})
|
|
|
|
set(TARGET_NAME ${1})
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(PSEMEK_EXAMPLES OFF)
|
|
|
|
set(PSEMEK_PACKAGE_OUTPUT_PATH package)
|
|
set(PSEMEK_GRAPHICS_API OPENGL)
|
|
|
|
add_subdirectory(psemek)
|
|
|
|
file(GLOB_RECURSE ${1^^}_SOURCES LIST_DIRECTORIES FALSE "\${CMAKE_CURRENT_SOURCE_DIR}/source/*")
|
|
file(GLOB_RECURSE ${1^^}_HEADERS LIST_DIRECTORIES FALSE "\${CMAKE_CURRENT_SOURCE_DIR}/include/*")
|
|
|
|
psemek_add_application(\${TARGET_NAME} \${${1^^}_SOURCES} \${${1^^}_HEADERS})
|
|
if(TARGET \${TARGET_NAME})
|
|
target_include_directories(\${TARGET_NAME} PUBLIC "\${CMAKE_CURRENT_SOURCE_DIR}/include")
|
|
|
|
if(PSEMEK_PLATFORM_WEB)
|
|
# Required by itch.io
|
|
set_target_properties(\${TARGET_NAME} PROPERTIES
|
|
OUTPUT_NAME "index"
|
|
)
|
|
endif()
|
|
endif()
|
|
EOF
|
|
|
|
cat > source/application.cpp << EOF
|
|
#include <psemek/app/default_application_factory.hpp>
|
|
|
|
namespace ${1}
|
|
{
|
|
|
|
using namespace psemek;
|
|
|
|
struct application
|
|
: app::application
|
|
{
|
|
application(options const &, context const &)
|
|
{
|
|
|
|
}
|
|
|
|
bool running() const override
|
|
{
|
|
return running_;
|
|
}
|
|
|
|
void stop() override
|
|
{
|
|
running_ = false;
|
|
}
|
|
|
|
void update() override
|
|
{}
|
|
|
|
void present() override
|
|
{}
|
|
|
|
private:
|
|
bool running_ = true;
|
|
};
|
|
|
|
}
|
|
|
|
namespace psemek::app
|
|
{
|
|
|
|
std::unique_ptr<application::factory> make_application_factory()
|
|
{
|
|
application::options options
|
|
{
|
|
.name = "${1^}",
|
|
};
|
|
|
|
return default_application_factory<${1}::application>(options);
|
|
}
|
|
|
|
}
|
|
EOF
|