Merge pull request #4 from bagisto/master

Update branch
This commit is contained in:
Glenn Hermans 2020-12-31 19:28:41 +01:00 committed by GitHub
commit 33ca72554d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 71 additions and 25 deletions

View File

@ -3,8 +3,8 @@
namespace Webkul\Core\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Artisan;
class Install extends Command
{
@ -33,20 +33,15 @@ class Install extends Command
}
/**
* Install and configure bagisto
* Install and configure bagisto.
*/
public function handle()
{
// check for .env
$this->checkForEnvFile();
// cached new changes
$this->warn('Step: Caching new changes...');
$cached = $this->call('config:cache');
$this->info($cached);
// waiting for 2 seconds
$this->warn('Please wait...');
sleep(2);
// loading values at runtime
$this->loadEnvConfigAtRuntime();
// running `php artisan migrate`
$this->warn('Step: Migrating all tables into database...');
@ -54,25 +49,31 @@ class Install extends Command
$this->info($migrate);
// running `php artisan db:seed`
$this->warn('Step: seeding basic data for bagisto kickstart...');
$this->warn('Step: Seeding basic data for Bagisto kickstart...');
$result = $this->call('db:seed');
$this->info($result);
// running `php artisan vendor:publish --all`
$this->warn('Step: Publishing Assets and Configurations...');
$this->warn('Step: Publishing assets and configurations...');
$result = $this->call('vendor:publish', ['--all']);
$this->info($result);
// running `php artisan storage:link`
$this->warn('Step: Linking Storage directory...');
$this->warn('Step: Linking storage directory...');
$result = $this->call('storage:link');
$this->info($result);
// optimizing stuffs
$this->warn('Step: Optimizing...');
$result = $this->call('optimize');
$this->info($result);
// running `composer dump-autoload`
$this->warn('Step: Composer Autoload...');
$this->warn('Step: Composer autoload...');
$result = shell_exec('composer dump-autoload');
$this->info($result);
// final information
$this->info('-----------------------------');
$this->info('Congratulations!');
$this->info('The installation has been finished and you can now use Bagisto.');
@ -85,28 +86,30 @@ class Install extends Command
/**
* Checking .env file and if not found then create .env file.
* Then ask for database name, password & username to set
* On .env file so that we can easily migrate to our db
* On .env file so that we can easily migrate to our db.
*/
public function checkForEnvFile()
protected function checkForEnvFile()
{
$envExists = File::exists(base_path() . '/.env');
if (! $envExists) {
$this->info('Creating the environment configuration file.');
$this->createEnvFile();
} else {
$this->call('key:generate');
$this->info('Great! your environment configuration file already exists.');
}
$this->call('key:generate');
}
/**
* Create a new .env file.
*/
public function createEnvFile()
protected function createEnvFile()
{
try {
File::copy('.env.example', '.env');
Artisan::call('key:generate');
$default_app_url = 'http://localhost:8000';
$input_app_url = $this->ask('Please Enter the APP URL : ');
$this->envUpdate('APP_URL=', $input_app_url ? $input_app_url : $default_app_url );
@ -125,7 +128,6 @@ class Install extends Command
$currency = $this->choice('Please enter the default currency', ['USD', 'EUR'], 'USD');
$this->envUpdate('APP_CURRENCY=', $currency);
$this->addDatabaseDetails();
} catch (\Exception $e) {
$this->error('Error in creating .env file, please create it manually and then run `php artisan migrate` again.');
@ -135,21 +137,65 @@ class Install extends Command
/**
* Add the database credentials to the .env file.
*/
public function addDatabaseDetails()
protected function addDatabaseDetails()
{
$dbName = $this->ask('What is the database name to be used by bagisto?');
$dbUser = $this->anticipate('What is your database username?', ['root']);
$dbPass = $this->secret('What is your database password?');
$this->envUpdate('DB_DATABASE=', $dbName);
$dbUser = $this->anticipate('What is your database username?', ['root']);
$this->envUpdate('DB_USERNAME=', $dbUser);
$dbPass = $this->secret('What is your database password?');
$this->envUpdate('DB_PASSWORD=', $dbPass);
}
/**
* Load `.env` config at runtime.
*/
protected function loadEnvConfigAtRuntime()
{
$this->warn('Loading configs...');
/* environment directly checked from `.env` so changing in config won't reflect */
app()['env'] = $this->getEnvAtRuntime('APP_ENV');
/* setting for the first time and then `.env` values will be incharged */
config(['database.connections.mysql.database' => $this->getEnvAtRuntime('DB_DATABASE')]);
config(['database.connections.mysql.username' => $this->getEnvAtRuntime('DB_USERNAME')]);
config(['database.connections.mysql.password' => $this->getEnvAtRuntime('DB_PASSWORD')]);
DB::purge('mysql');
$this->info('Configuration loaded..');
}
/**
* Check key in `.env` file because it will help to find values at runtime.
*/
protected static function getEnvAtRuntime($key)
{
$path = base_path() . '/.env';
$data = file($path);
if ($data) {
foreach ($data as $line) {
$line = preg_replace('/\s+/', '', $line);
$rowValues = explode('=', $line);
if (strlen($line) !== 0) {
if (strpos($key, $rowValues[0]) !== false) {
return $rowValues[1];
}
}
}
}
return false;
}
/**
* Update the .env values.
*/
public static function envUpdate($key, $value)
protected static function envUpdate($key, $value)
{
$path = base_path() . '/.env';
$data = file($path);