ringfinger/backend/scripts/setup.php

59 lines
1.5 KiB
PHP

<?php
function getUserInput(string $label): string
{
echo $label;
return str_replace("\n", '', fgets(STDIN));
}
const TEMPLATE_SETTINGS = '<?php
/*
* This file was auto generated on :DATETIME
*/
declare(strict_types=1);
final class Setting
{
public const MYSQL_HOST = \':HOST\';
public const MYSQL_USER = \':USER\';
public const MYSQL_PASSWORD = \':PASSWORD\';
public const MYSQL_DATABASE = \':DATABASE\';
public const PATH_ROOT = \':ROOT_PATH/\';
public const PATH_QR_CODES = self::PATH_ROOT . \'backend/qr/\';
public const PATH_TMP = self::PATH_ROOT . \'backend/tmp/\';
}
';
$hostname = getUserInput('MySQL host address (default "localhost"): ');
$username = getUserInput('MySQL user: ');
$password = getUserInput('MySQL password (shown!): ');
$database = getUserInput('MySQL database: ');
$settings = str_replace(
[':HOST', ':USER', ':PASSWORD', ':DATABASE', ':ROOT_PATH', ':DATETIME'],
[$hostname, $username, $password, $database, getcwd(), (new DateTime())->format('Y-m-d H:i:s')],
TEMPLATE_SETTINGS
);
$file = fopen(getcwd() . '/backend/classes/Setting.php', 'w');
fwrite($file, $settings);
fclose($file);
require 'backend/classes/core/Autoloader.php';
Autoloader::BuildCache();
$autoloader = new Autoloader();
$file = fopen('backend/scripts/setup.sql', 'r');
$setupSql = fread($file, filesize('backend/scripts/setup.sql'));
fclose($file);
$db = new MySqlDatabase($hostname, $username, $password, $database);
$db->Query($setupSql);
echo 'Ringfinger setup has successfully finished.' . PHP_EOL;