#!/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($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();