| 
<?phpdeclare(strict_types=1);
 
 use Airship\Engine\{
 Gadgets,
 State
 };
 use ParagonIE\ConstantTime\Binary;
 
 /**
 * @global array $active The active cabin configuration
 * @const string CABIN_DIR
 * @global State $state
 */
 
 // Let's make sure we populate the symlinks
 if (\is_dir(CABIN_DIR . '/public')) {
 $link = ROOT . '/public/static/' . $active['name'];
 if (!\is_link($link)) {
 // Remove copies, we only allow symlinks in static
 if (\is_dir($link)) {
 \rmdir($link);
 } elseif (\file_exists($link)) {
 \unlink($link);
 }
 
 // Create a symlink from public/static/* to Cabin/*/public
 /** @noinspection PhpUsageOfSilenceOperatorInspection */
 @\symlink(
 CABIN_DIR . '/public',
 ROOT . '/public/static/' . $active['name']
 );
 }
 }
 
 // Let's load the default cargo modules
 if (\is_dir(CABIN_DIR.'/View/cargo')) {
 $cargoCacheFile = ROOT.'/tmp/cache/cargo-'.$active['name'].'.cache.json';
 if (\file_exists($cargoCacheFile)) {
 $data = Airship\loadJSON($cargoCacheFile);
 $state->cargo = $data;
 } else {
 $dir = \getcwd();
 \chdir(CABIN_DIR . '/View');
 foreach (\Airship\list_all_files('cargo', 'twig') as $cargo) {
 $idx = \str_replace(
 ['__', '/'],
 ['',   '__'],
 Binary::safeSubstr($cargo, 6, -5)
 );
 Gadgets::loadCargo($idx, $cargo);
 }
 \chdir($dir);
 
 // Store the cache file
 \Airship\saveJSON(
 $cargoCacheFile,
 $state->cargo
 );
 }
 }
 
 |