1 <?php declare(strict_types=1);
3 namespace Cli\Services;
9 public static function search(string $directory = ''): string
11 $directoriesToSearch = $directory ? [Paths::resolve($directory)] : [
13 static::getCliDirectory(),
16 foreach ($directoriesToSearch as $directory) {
17 if ($directory && static::isProbablyAppDirectory($directory)) {
25 public static function require(string $directory = ''): string
27 $dir = static::search($directory);
30 throw new \Exception('Could not find a valid BookStack installation');
36 public static function getVersion(string $directory): string
38 $versionPath = $directory . DIRECTORY_SEPARATOR . 'version';
39 return trim(file_get_contents($versionPath));
42 protected static function getCliDirectory(): string
44 $scriptDir = dirname(__DIR__);
46 if (str_starts_with($scriptDir, 'phar://')) {
47 return dirname(Phar::running(false));
50 return dirname($scriptDir);
53 protected static function isProbablyAppDirectory(string $directory): bool
55 return file_exists($directory . DIRECTORY_SEPARATOR . 'version')
56 && file_exists($directory . DIRECTORY_SEPARATOR . 'package.json');