#!/usr/bin/env php command('install', function () { should_be_sudo(); Caddy::stop(); Configuration::install(); Caddy::install(); PhpFpm::install(); DnsMasq::install(); Caddy::restart(); output(PHP_EOL.'Valet installed successfully!'); }); /** * Change the domain currently being used by Valet. */ $app->command('domain domain', function ($domain) { should_be_sudo(); $domain = trim($domain, '.'); DnsMasq::updateDomain(Configuration::read()['domain'], $domain); Configuration::updateKey('domain', $domain); output('Your Valet domain has been updated to ['.$domain.'].'); }); /** * Get the domain currently being used by Valet. */ $app->command('current-domain', function () { output(Configuration::read()['domain']); }); /** * Add the current working directory to the paths configuration. */ $app->command('park', function () { Configuration::addPath(getcwd()); output("This directory has been added to Valet's paths."); }); /** * Remove the current working directory to the paths configuration. */ $app->command('forget', function () { Configuration::removePath(getcwd()); output("This directory has been removed from Valet's paths."); }); /** * Register a symbolic link with Valet. */ $app->command('link [name]', function ($name) { $name = $name ?: basename(getcwd()); $linkPath = Site::link(getcwd(), $name); output('A ['.$name.'] symbolic link has been created in ['.$linkPath.'].'); }); /** * Display all of the registered symbolic links. */ $app->command('links', function () { passthru('ls -la '.VALET_HOME_PATH.'/Sites'); }); /** * Unlink a link from the Valet links directory. */ $app->command('unlink [name]', function ($name) { $name = $name ?: basename(getcwd()); Site::unlink($name); output('The ['.$name.'] symbolic link has been removed.'); }); /** * Determine which Valet driver the current directory is using. */ $app->command('which', function () { require __DIR__.'/drivers/require.php'; $driver = ValetDriver::assign(getcwd(), basename(getcwd()), '/'); if ($driver) { output('This site is served by ['.get_class($driver).'].'); } else { output('Valet could not determine which driver to use for this site.'); } }); /** * Stream all of the logs for all sites. */ $app->command('logs', function () { $files = Site::logs(Configuration::read()['paths']); if (count($files) > 0) { passthru('tail -f '.implode(' ', $files)); } else { output('No log files were found.'); } }); /** * Display all of the registered paths. */ $app->command('paths', function () { $paths = Configuration::read()['paths']; if (count($paths) > 0) { output(json_encode($paths, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); } else { output('No paths have been registered.'); } }); /** * Echo the currently tunneled URL. */ $app->command('fetch-share-url', function () { retry(20, function () { $response = Httpful\Request::get('http://127.0.0.1:4040/api/tunnels')->send(); $body = $response->body; if (isset($body->tunnels) && count($body->tunnels) > 0) { foreach ($body->tunnels as $tunnel) { if ($tunnel->proto == 'http') { return $output->write($tunnel->public_url); } } } throw new Exception("Tunnel not established."); }, 250); }); /** * Start the daemon services. */ $app->command('start', function () { should_be_sudo(); PhpFpm::restart(); Caddy::restart(); output('Valet services have been started.'); }); /** * Restart the daemon services. */ $app->command('restart', function () { should_be_sudo(); PhpFpm::restart(); Caddy::restart(); output('Valet services have been restarted.'); }); /** * Stop the daemon services. */ $app->command('stop', function () { should_be_sudo(); PhpFpm::stop(); Caddy::stop(); output('Valet services have been stopped.'); }); /** * Uninstall Valet entirely. */ $app->command('uninstall', function () { should_be_sudo(); Caddy::uninstall(); output('Valet has been uninstalled.'); }); /** * Run the application. */ $app->run();