| 
<?phpdeclare(strict_types=1);
 
 foreach (\glob(ROOT . '/Cabin/*') as $dir) {
 if (\is_dir($dir)) {
 $name = \Airship\path_to_filename($dir);
 if (!\is_link(ROOT . '/public/static/' . $name)) {
 if (\is_dir(ROOT . '/public/static/' . $name)) {
 \rmdir(ROOT . '/public/static/' . $name);
 } elseif (\file_exists(ROOT . '/public/static/' . $name)) {
 \unlink(ROOT . '/public/static/' . $name);
 }
 \symlink(
 ROOT . '/Cabin/' . $name . '/public',
 ROOT . '/public/static/' . $name
 );
 }
 
 // Editor templates.
 if (!\is_link(ROOT . '/Installer/skins/cabin_links/' . $name)) {
 if (\is_dir(ROOT . '/Installer/skins/cabin_links/' . $name)) {
 \rmdir(ROOT . '/Installer/skins/cabin_links/' . $name);
 } elseif (\file_exists(ROOT . '/Installer/skins/cabin_links/' . $name)) {
 \unlink(ROOT . '/Installer/skins/cabin_links/' . $name);
 }
 \symlink(
 ROOT . '/Cabin/' . $name . '/config/editor_templates',
 ROOT . '/Installer/skins/cabin_links/' . $name
 );
 }
 
 // Any Motifs we ship with are suitable for all of the Cabins we ship with.
 // Less configuration headaches.
 foreach (\glob(ROOT . '/Motifs/*') as $motifDir) {
 if (\is_dir($motifDir)) {
 $supplier = \Airship\path_to_filename($motifDir);
 
 foreach (\glob($motifDir . '/*') as $sub) {
 $motif = \Airship\path_to_filename($sub);
 $linkFrom = $dir . '/public/motif/' . $motif;
 $n = 1;
 while (\is_link($linkFrom)) {
 if (\realpath($linkFrom) !== \realpath($sub)) {
 ++$n;
 $linkFrom = $dir . '/public/motif/' . $motif . '-' . $n;
 } else {
 break;
 }
 }
 \symlink($sub . '/public', $linkFrom);
 }
 
 }
 }
 }
 }
 |