--- /dev/null
+<?php
+
+class CodeGenerator
+{
+
+ /**
+ * Iterate through all folders and subfolders and make copy of files from
+ * $fromFolder to $toFolder.
+ */
+ function copyRecursive(string $fromFolder, string $toFolder)
+ {
+ foreach ($i = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($fromFolder, \RecursiveDirectoryIterator::SKIP_DOTS),
+ \RecursiveIteratorIterator::SELF_FIRST
+ ) as $item) {
+ if ($item->isDir()) {
+ mkdir($toFolder . DIRECTORY_SEPARATOR . $i->getSubPathname());
+ } else {
+ copy($item, $toFolder . DIRECTORY_SEPARATOR . $i->getSubPathname());
+ }
+ }
+ }
+
+ /**
+ * Will delete a given folder and all its contents
+ */
+ function deleteRecursive(string $dir)
+ {
+ if (empty($dir))
+ return;
+
+ if (file_exists($dir)) {
+ foreach ($i = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($dir, \FilesystemIterator::SKIP_DOTS),
+ \RecursiveIteratorIterator::CHILD_FIRST
+ ) as $file) {
+ if ($file->isDir())
+ rmdir($file);
+ else
+ unlink($file);
+ }
+
+ rmdir($dir);
+ }
+ }
+
+ function generateFoldersForPages(array $folderList, $basePath)
+ {
+ foreach ($folderList as $folder) {
+ if ($folder == '/')
+ mkdir($basePath . "/index");
+ else
+ mkdir($basePath . '/' . $folder);
+ }
+ }
+}
--- /dev/null
+<?php
+
+require_once("generator.php");
+
+// constans
+const URL = "http://localhost:8000";
+const BASE_PATH_TEMP = "../generated_temp";
+
+$generator = new CodeGenerator();
+
+// create new folder (dont remove the old one yet)
+mkdir(BASE_PATH_TEMP);
+
+// create folder structure
+mkdir(BASE_PATH_TEMP . "/assets");
+mkdir(BASE_PATH_TEMP . "/css");
+mkdir(BASE_PATH_TEMP . "/img");
+mkdir(BASE_PATH_TEMP . "/js");
+
+// copy assets
+$generator->copyRecursive("../public/assets", BASE_PATH_TEMP . "/assets");
+$generator->copyRecursive("../public/css", BASE_PATH_TEMP . "/css");
+$generator->copyRecursive("../public/img", BASE_PATH_TEMP . "/img");
+$generator->copyRecursive("../public/js", BASE_PATH_TEMP . "/js");
+
+// get images sheet
+$image_list = file_get_contents(URL . '?sheet=images');
+$image_list = json_decode($image_list);
+
+// FIXME: DEBUG
+print_r($image_list);
+
+// copy images from whatever they are (if this is in a docker container they may be mounted somewhere)
+// rename images
+
+// create partials:
+mkdir(BASE_PATH_TEMP . "/partials");
+
+// generate head
+// generate footer
+
+// get menu
+$menu_list = file_get_contents(URL . '?sheet=menu');
+$menu_list = json_decode($menu_list);
+// FIXME: DEBUG
+print_r($menu_list);
+
+// generate header area
+
+// generate page folders
+$page_array = [];
+foreach ($menu_list as $item) {
+ foreach ($item as $key => $value) {
+ if ($key == 'path')
+ $page_array[] = $value;
+ }
+}
+
+mkdir(BASE_PATH_TEMP . "/pages");
+$generator->generateFoldersForPages($page_array, BASE_PATH_TEMP . "/pages");
+
+// generate each page
+
+// add partials to pages
+
+// remove partials
+$generator->deleteRecursive(BASE_PATH_TEMP . "/partials");
+
+// remove old folder
+$generator->deleteRecursive("../generated");
+
+// rename folder
+rename(BASE_PATH_TEMP, "../generated");
+
+// done