PHP Classes

File: cli/valet.php

Recommend this page to a friend!
  Classes of Joaquin   Laravel Valet Linux   cli/valet.php   Download  
File: cli/valet.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Laravel Valet Linux
Run Laravel environment under a Linux machine
Author: By
Last change: Update of cli/valet.php
Date: 5 years ago
Size: 10,047 bytes
 

Contents

Class file image Download
#!/usr/bin/env php
<?php

/**
 * Load correct autoloader depending on install location.
 */
if (file_exists(__DIR__.'/../vendor/autoload.php')) {
    require
__DIR__.'/../vendor/autoload.php';
} else {
    require
__DIR__.'/../../../autoload.php';
}

use
Silly\Application;
use
Illuminate\Container\Container;

/**
 * Create the application.
 */
Container::setInstance(new Container);

$version = 'v2.0.24';

$app = new Application('Valet', $version);

/**
 * Detect environment
 */
Valet::environmentSetup();

/**
 * Allow Valet to be run more conveniently by allowing the Node proxy to run password-less sudo.
 */
$app->command('install [--ignore-selinux]', function ($ignoreSELinux) {
   
passthru(dirname(__FILE__).'/scripts/update.sh'); // Clean up cruft

   
Requirements::setIgnoreSELinux($ignoreSELinux)->check();
   
Configuration::install();
   
Nginx::install();
   
PhpFpm::install();
   
DnsMasq::install(Configuration::read()['domain']);
   
Nginx::restart();
   
Valet::symlinkToUsersBin();

   
output(PHP_EOL.'<info>Valet installed successfully!</info>');
})->
descriptions('Install the Valet services', [
   
'--ignore-selinux' => 'Skip SELinux checks'
]);

/**
 * Most commands are available only if valet is installed.
 */
if (is_dir(VALET_HOME_PATH)) {
   
/**
     * Prune missing directories and symbolic links on every command.
     */
   
Configuration::prune();
   
Site::pruneLinks();

   
/**
     * Get or set the domain currently being used by Valet.
     */
   
$app->command('domain [domain]', function ($domain = null) {
        if (
$domain === null) {
            return
info(Configuration::read()['domain']);
        }

       
DnsMasq::updateDomain(
           
$oldDomain = Configuration::read()['domain'], $domain = trim($domain, '.')
        );

       
Configuration::updateKey('domain', $domain);
       
Site::resecureForNewDomain($oldDomain, $domain);
       
PhpFpm::restart();
       
Nginx::restart();

       
info('Your Valet domain has been updated to ['.$domain.'].');
    })->
descriptions('Get or set the domain used for Valet sites');

   
/**
     * Get or set the port number currently being used by Valet.
     */
   
$app->command('port [port] [--https]', function ($port = null, $https) {
        if (
$port === null) {
           
info('Current Nginx port (HTTP): ' . Configuration::get('port', 80));
           
info('Current Nginx port (HTTPS): ' . Configuration::get('https_port', 443));
            return;
        }

       
$port = trim($port);

        if (
$https) {
           
Configuration::updateKey('https_port', $port);
        }else{
           
Nginx::updatePort($port);
           
Configuration::updateKey('port', $port);
        }

       
Site::regenerateSecuredSitesConfig();

       
Nginx::restart();
       
PhpFpm::restart();

       
$protocol = $https ? 'HTTPS' : 'HTTP';
       
info("Your Nginx {$protocol} port has been updated to [{$port}].");
    })->
descriptions('Get or set the port number used for Valet sites');

   
/**
     * Determine if the site is secured or not
     */
   
$app->command('secured [site]', function ($site) {
        if (
Site::secured()->contains($site)) {
           
info("{$site} is secured.");
            return
1;
        }

       
info("{$site} is not secured.");
        return
0;
    })->
descriptions('Determine if the site is secured or not');

   
/**
     * Add the current working directory to the paths configuration.
     */
   
$app->command('park [path]', function ($path = null) {
       
Configuration::addPath($path ?: getcwd());

       
info(($path === null ? "This" : "The [{$path}]") . " directory has been added to Valet's paths.");
    })->
descriptions('Register the current working (or specified) directory with Valet');

   
/**
     * Remove the current working directory from the paths configuration.
     */
   
$app->command('forget [path]', function ($path = null) {
       
Configuration::removePath($path ?: getcwd());

       
info(($path === null ? "This" : "The [{$path}]") . " directory has been removed from Valet's paths.");
    })->
descriptions('Remove the current working (or specified) directory from Valet\'s list of paths');

   
/**
     * Remove the current working directory to the paths configuration.
     */
   
$app->command('status', function () {
       
PhpFpm::status();
       
Nginx::status();
    })->
descriptions('View Valet service status');

   
/**
     * Register a symbolic link with Valet.
     */
   
$app->command('link [name]', function ($name) {
       
$linkPath = Site::link(getcwd(), $name = $name ?: basename(getcwd()));

       
info('A ['.$name.'] symbolic link has been created in ['.$linkPath.'].');
    })->
descriptions('Link the current working directory to Valet');

   
/**
     * Display all of the registered symbolic links.
     */
   
$app->command('links', function () {
       
$links = Site::links();

       
table(['Site', 'SSL', 'URL', 'Path'], $links->all());
    })->
descriptions('Display all of the registered Valet links');

   
/**
     * Unlink a link from the Valet links directory.
     */
   
$app->command('unlink [name]', function ($name) {
       
Site::unlink($name = $name ?: basename(getcwd()));

       
info('The ['.$name.'] symbolic link has been removed.');
    })->
descriptions('Remove the specified Valet link');

   
/**
     * Secure the given domain with a trusted TLS certificate.
     */
   
$app->command('secure [domain]', function ($domain = null) {
       
$url = ($domain ?: Site::host(getcwd())).'.'.Configuration::read()['domain'];

       
Site::secure($url);
       
PhpFpm::restart();
       
Nginx::restart();

       
info('The ['.$url.'] site has been secured with a fresh TLS certificate.');
    })->
descriptions('Secure the given domain with a trusted TLS certificate');

   
/**
     * Stop serving the given domain over HTTPS and remove the trusted TLS certificate.
     */
   
$app->command('unsecure [domain]', function ($domain = null) {
       
$url = ($domain ?: Site::host(getcwd())).'.'.Configuration::read()['domain'];

       
Site::unsecure($url);
       
PhpFpm::restart();
       
Nginx::restart();

       
info('The ['.$url.'] site will now serve traffic over HTTP.');
    })->
descriptions('Stop serving the given domain over HTTPS and remove the trusted TLS certificate');

   
/**
     * 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) {
           
info('This site is served by ['.get_class($driver).'].');
        } else {
           
warning('Valet could not determine which driver to use for this site.');
        }
    })->
descriptions('Determine which Valet driver serves the current working directory');

   
/**
     * Display all of the registered paths.
     */
   
$app->command('paths', function () {
       
$paths = Configuration::read()['paths'];

        if (
count($paths) > 0) {
           
info(json_encode($paths, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
        } else {
           
warning('No paths have been registered.');
        }
    })->
descriptions('Get all of the paths registered with Valet');

   
/**
     * Open the current directory in the browser.
     */
    
$app->command('open [domain]', function ($domain = null) {
       
$url = 'http://'.($domain ?: Site::host(getcwd())).'.'.Configuration::read()['domain'].'/';

       
passthru('xdg-open '.escapeshellarg($url));
     })->
descriptions('Open the site for the current (or specified) directory in your browser');

   
/**
     * Generate a publicly accessible URL for your project.
     */
   
$app->command('share', function () {
       
warning("It looks like you are running `cli/valet.php` directly, please use the `valet` script in the project root instead.");
    })->
descriptions('Generate a publicly accessible URL for your project');

   
/**
     * Echo the currently tunneled URL.
     */
   
$app->command('fetch-share-url', function () {
       
output(Ngrok::currentTunnelUrl());
    })->
descriptions('Get the URL to the current Ngrok tunnel');

   
/**
     * Start the daemon services.
     */
   
$app->command('start', function () {
       
PhpFpm::restart();
       
Nginx::restart();

       
info('Valet services have been started.');
    })->
descriptions('Start the Valet services');

   
/**
     * Restart the daemon services.
     */
   
$app->command('restart', function () {
       
PhpFpm::restart();
       
Nginx::restart();

       
info('Valet services have been restarted.');
    })->
descriptions('Restart the Valet services');

   
/**
     * Stop the daemon services.
     */
   
$app->command('stop', function () {
       
PhpFpm::stop();
       
Nginx::stop();

       
info('Valet services have been stopped.');
    })->
descriptions('Stop the Valet services');

   
/**
     * Uninstall Valet entirely.
     */
   
$app->command('uninstall', function () {
       
Nginx::uninstall();
       
PhpFpm::uninstall();
       
DnsMasq::uninstall();
       
Configuration::uninstall();
       
Valet::uninstall();

       
info('Valet has been uninstalled.');
    })->
descriptions('Uninstall the Valet services');

   
/**
     * Determine if this is the latest release of Valet.
     */
   
$app->command('update', function () use ($version) {
       
$script = dirname(__FILE__).'/scripts/update.sh';

        if (
Valet::onLatestVersion($version)) {
           
info('You have the latest version of Valet Linux');
           
passthru($script);
        } else {
           
warning('There is a new release of Valet Linux');
           
warning('Updating now...');
           
passthru($script.' update');
        }
    })->
descriptions('Update Valet Linux and clean up cruft');
}

/**
 * Load all of the Valet extensions.
 */
foreach (Valet::extensions() as $extension) {
    include
$extension;
}

/**
 * Run the application.
 */
$app->run();