From dfe889692b0dbcc505f5d8f3217b8d523ae658c8 Mon Sep 17 00:00:00 2001 From: Ahmed Ashraf Date: Fri, 3 Jul 2020 12:50:08 +0200 Subject: [PATCH] auto detect valet links --- .../ShareCurrentWorkingDirectoryCommand.php | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/app/Commands/ShareCurrentWorkingDirectoryCommand.php b/app/Commands/ShareCurrentWorkingDirectoryCommand.php index 6574e88..fbddd90 100644 --- a/app/Commands/ShareCurrentWorkingDirectoryCommand.php +++ b/app/Commands/ShareCurrentWorkingDirectoryCommand.php @@ -8,12 +8,12 @@ class ShareCurrentWorkingDirectoryCommand extends ShareCommand public function handle() { - $host = $this->prepareSharedHost(basename(getcwd()).'.'.$this->detectTld()); + $subdomain = $this->detectName(); + $host = $this->prepareSharedHost($subdomain.'.'.$this->detectTld()); $this->input->setArgument('host', $host); if (! $this->option('subdomain')) { - $subdomain = str_replace('.', '-', basename(getcwd())); $this->input->setOption('subdomain', $subdomain); } @@ -33,6 +33,30 @@ class ShareCurrentWorkingDirectoryCommand extends ShareCommand return config('expose.default_tld', 'test'); } + protected function detectName(): string + { + $projectPath = getcwd(); + $valetSitesPath = ($_SERVER['HOME'] ?? $_SERVER['USERPROFILE']).DIRECTORY_SEPARATOR.'.config'.DIRECTORY_SEPARATOR.'valet'.DIRECTORY_SEPARATOR.'Sites'; + + if (is_dir($valetSitesPath)) { + $site = collect(scandir($valetSitesPath)) + ->skip(2) + ->map(function($site) use($valetSitesPath) { + return $valetSitesPath.DIRECTORY_SEPARATOR.$site; + })->mapWithKeys(function($site){ + return [$site => readlink($site)]; + })->filter(function($sourcePath) use($projectPath) { + return $sourcePath === $projectPath; + }) + ->keys() + ->first(); + + $projectPath = $site; + } + + return str_replace('.', '-', basename($projectPath)); + } + protected function prepareSharedHost($host): string { $certificateFile = ($_SERVER['HOME'] ?? $_SERVER['USERPROFILE']).DIRECTORY_SEPARATOR.'.config'.DIRECTORY_SEPARATOR.'valet'.DIRECTORY_SEPARATOR.'Certificates'.DIRECTORY_SEPARATOR.$host.'.crt';