feat: WIP

This commit is contained in:
Nikita Kiselev
2025-07-10 18:31:02 +03:00
parent c3664025ba
commit 846fa64fb4
68 changed files with 4144 additions and 118 deletions

78
scripts/ci/build.sh Executable file
View File

@@ -0,0 +1,78 @@
#!/bin/bash
set -e
MODULE_NAME="oc_telegram_shop"
CURRENT_DIR="$(dirname "$0")"
echo "Current dir: ${CURRENT_DIR}"
composer --version
node -v
npm -v
SRC_PATH="$1"
BUILD_PATH="${CURRENT_DIR}/build"
echo "🔨 Starting build process..."
echo " Source path: ${SRC_PATH}"
echo " Build path: ${BUILD_PATH}"
if [ -z "$BUILD_PATH" ]; then
echo "❌ Error: BUILD_PATH is required"
exit 1
fi
if [ -z "$SRC_PATH" ]; then
echo "❌ Error: SRC_PATH is required"
exit 1
fi
echo "Build SPA..."
cd "${SRC_PATH}/spa"
npm install
npm run build
cd - > /dev/null
echo "Install Composer dependencies."
cd "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop"
composer install \
--prefer-dist \
--no-dev \
--optimize-autoloader \
--no-interaction \
--no-cache
cd - > /dev/null
echo "📜 Creating Phar archive..."
rm -rf \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/tests" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/phpunit.xml" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/psalm.xml" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/psalm-classes.php" \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop/psalm-stubs.php"
php -d phar.readonly=0 scripts/ci/create-phar.php "${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop" "${MODULE_NAME}.phar"
echo "📦 Packaging into .ocmod.zip..."
mkdir -p "${SRC_PATH}/module/oc_telegram_shop/upload/system/library/oc_telegram_shop"
mv "${MODULE_NAME}.phar" "${SRC_PATH}/module/oc_telegram_shop/upload/system/library/oc_telegram_shop"
rm -rf \
"${SRC_PATH}/module/oc_telegram_shop/upload/oc_telegram_shop"
cd "${SRC_PATH}/module/oc_telegram_shop/"
zip -rqq "${MODULE_NAME}.ocmod.zip" .
mv "${MODULE_NAME}.ocmod.zip" "${BUILD_PATH}"
FINAL_FILE="${BUILD_PATH}/${MODULE_NAME}.ocmod.zip"
if [ -f "$FINAL_FILE" ]; then
FILE_SIZE=$(du -h "$FINAL_FILE" | cut -f1)
echo -e "✅ Build completed successfully!"
echo -e "🎉 Created: $FINAL_FILE ($FILE_SIZE)"
else
echo "❌ Error: Final build file not found: $FINAL_FILE"
exit 1
fi
echo -e "🎯 Build artifact ready for installation!"

View File

@@ -0,0 +1,37 @@
<?php
$sourcePath = $argv[1] ?? null;
$pharFile = $argv[2] ?? null;
if (! $sourcePath) {
throw new InvalidArgumentException('Source path must be provided');
}
if (! $pharFile) {
throw new InvalidArgumentException('Phar file must be provided');
}
// Remove old file if exists
if (file_exists($pharFile)) {
unlink($pharFile);
}
// Create new Phar archive
$phar = new Phar($pharFile);
// Start buffering
$phar->startBuffering();
// Add files from source directory
$phar->buildFromDirectory($sourcePath);
// (Optional) Set stub file — main entry point
// $phar->setStub($phar->createDefaultStub('index.php'));
$phar->compressFiles(Phar::GZ);
// Stop buffering and write
$phar->stopBuffering();
echo "Phar created: $pharFile\n";