#!/usr/bin/env php
<?php

use Bear8421\Bear\Services\Tools\MakeStorage;

$isBearService = false;
$dir = __DIR__ . '/..';

if (!file_exists($dir . '/autoload.php')) {
    $dir = __DIR__ . '/../vendor';
    $isBearService = true;
}

if (!file_exists($dir . '/autoload.php')) {
    $dir = __DIR__ . '/../../..';
}

if (!file_exists($dir . '/autoload.php')) {
    echo 'Autoload not found.';
    exit(1);
}

require $dir . '/autoload.php';

// Đảm bảo mã nguồn chỉ thực thi khi có tham số
if ($argc < 2) {
    echo "Usage: '$argv[0]' <path_to_create> [file1,file2,...]\n";
    exit(1);
}
$profileName = "Bear Services";
$scriptName = "Create Storage / Logs Directory with Command Line";
$scriptDir = dirname(__FILE__);
$vendorDir = realpath($dir);
$homeDir = dirname($vendorDir);

// Get the home directory by traversing up four levels
$pathToCreate = $argv[1] ?? 'logs';
$filesToDefaultCreate = [];
if (isset($argv[2])) {
    $fileList = explode(',', $argv[2]);
    if (!empty($fileList)) {
        $filesToCreate = [];
        foreach ($fileList as $file) {
            $filesToCreate[trim($file)] = '';
        }
        $filesToCreate = array_merge($filesToCreate, $filesToDefaultCreate);
    } else {
        $filesToCreate = $filesToDefaultCreate;
    }
} else {
    $filesToCreate = $filesToDefaultCreate;
}

$createDir = $homeDir . DIRECTORY_SEPARATOR . $pathToCreate;
if ($createDir === $homeDir) {
    exit('Not created on $homeDir because invalid rules!');
}
$make = new MakeStorage();
$make->echoHeaderScript($profileName, $scriptName, $argv[0] ?? 'make-storage');

echo "Home Directory: " . $make->textColor($make::COLOR_GREEN, $homeDir) . PHP_EOL;
echo "Create Directory: " . $make->textColor($make::COLOR_GREEN, $createDir) . PHP_EOL;
echo "Vendor Directory: " . $make->textColor($make::COLOR_GREEN, $vendorDir) . PHP_EOL;
echo "Script Directory: " . $make->textColor($make::COLOR_GREEN, $scriptDir) . PHP_EOL;
$make->echoBreakLine();
echo PHP_EOL;

if ($pathToCreate === 'logs') {
    $filesToCreate = array_merge($filesToCreate, [
        'accessDenied.log' => '',
        'access.log' => '',
        'error.log' => '',
    ]);
}
try {
    $make->create($createDir, $filesToCreate, true);
} catch (Throwable $e) {
    echo 'Error: ' . $e->getMessage() . ' on File: ' . $e->getFile() . ' at Line: ' . $e->getLine() . PHP_EOL;
}
$make->echoFinishedMessage($scriptName);
