compile() public static method

public static compile ( $sourceFile, $force = false )
コード例 #1
0
ファイル: BuildConfCommand.php プロジェクト: azole/LazyRecord
 public function execute($configFile = null)
 {
     /**
      * $ lazy bulid-conf config/lazy.yml phifty/config/lazy.yml
      * 
      * build/lazy/config.php   # is generated
      */
     if (!$configFile) {
         $possiblePaths = array('db/config/site_database.yml', 'db/config/database.yml', 'config/database.yml', 'config/site_database.yml');
         foreach ($possiblePaths as $path) {
             if (file_exists($path)) {
                 $this->logger->info("Found default config file: {$path}");
                 $configFile = $path;
                 ConfigLoader::compile($configFile);
             }
         }
     }
     if (!$configFile) {
         throw new Exception("config file path is required.");
     }
     $this->logger->info("Building config from {$configFile}");
     $dir = dirname($configFile);
     ConfigLoader::compile($configFile);
     // make master config link
     $loader = ConfigLoader::getInstance();
     if (file_exists($loader->symbolFilename)) {
         $this->logger->info('Cleaning up symbol link');
         unlink($loader->symbolFilename);
     }
     if (file_exists('.lazy.php')) {
         $this->logger->info('Cleaning up symbol link');
         unlink('.lazy.php');
     }
     $this->logger->info("Making link => " . $loader->symbolFilename);
     if (cross_symlink($configFile, $loader->symbolFilename) === false) {
         $this->logger->error("Config linking failed.");
     }
     $this->logger->info("Done.");
 }
コード例 #2
0
 public function execute($configFile = null)
 {
     /*
      * $ lazy bulid-conf config/lazy.yml phifty/config/lazy.yml
      * 
      * build/lazy/config.php   # is generated
      */
     if (!$configFile && $this->options->{'search'}) {
         $possiblePaths = array('db/config/site_database.yml', 'db/config/database.yml', 'config/database.yml', 'config/site_database.yml');
         foreach ($possiblePaths as $path) {
             if (file_exists($path)) {
                 $this->logger->info("Found default config file: {$path}");
                 $configFile = $path;
                 ConfigLoader::compile($configFile);
             }
         }
     }
     if (!$configFile) {
         throw new Exception('config file is required.');
     }
     $this->logger->info("Building config from {$configFile}");
     $dir = dirname($configFile);
     ConfigLoader::compile($configFile, $this->options->force);
     // make master config link
     $loader = ConfigLoader::getInstance();
     $cleanup = [$loader->symbolFilename, '.lazy.php', '.lazy.yml'];
     foreach ($cleanup as $symlink) {
         if (file_exists($symlink)) {
             $this->logger->debug('Cleaning up symbol link: ' . $symlink);
             unlink($symlink);
         }
     }
     $this->logger->info('Creating symbol link: ' . $loader->symbolFilename . ' -> ' . $configFile);
     if (cross_symlink($configFile, $loader->symbolFilename) === false) {
         $this->logger->error('Config linking failed.');
     }
     $this->logger->info('Done');
 }
コード例 #3
0
    public function execute()
    {
        $logger = $this->getLogger();
        $configFile = $this->options->config ?: 'db/config/database.yml';
        if (file_exists($configFile)) {
            $logger->info("Config file {$configFile} already exists.");
            return;
        }
        $driver = $this->options->driver ?: $this->ask('Database driver [sqlite]', array('sqlite', 'pgsql', 'mysql', null)) ?: 'sqlite';
        $dbName = $this->options->database ?: $this->ask('Database name [:memory:]') ?: ':memory:';
        $logger->info("Using {$driver} driver");
        $logger->info("Using database {$dbName}");
        $user = '';
        $password = '';
        if ($driver != 'sqlite') {
            // FIXME: fix DSN for sqlite, "sqlite:mydb.sqlite3" doesn't require dbname= ...
            $user = $this->options->username ?: $this->ask('Database user');
            $password = $this->options->password ?: $this->ask('Database password');
        }
        $logger->info('Creating config file skeleton...');
        $content = <<<EOS
---
bootstrap:
- vendor/autoload.php
schema:
  # Insert auto-increment primary key to every schema classes
  auto_id: true
  # Customize your schema class loader
  #
  # loader: custom_schema_loader.php
  #  Customize your schema paths
  # paths:
  # - src
data_source:
  default: master
  nodes:
    master:
      driver: {$driver}
      database: {$dbName}
      user: {$user}
      pass: {$password}
EOS;
        if (file_put_contents($configFile, $content) !== false) {
            $logger->info("Config file is generated: {$configFile}");
            $logger->info('Please run build-conf to compile php format config file.');
        }
        $this->logger->info("Building config from {$configFile}");
        $dir = dirname($configFile);
        ConfigLoader::compile($configFile, true);
        // make master config link
        $loader = ConfigLoader::getInstance();
        $cleanup = [$loader->symbolFilename, '.lazy.php', '.lazy.yml'];
        foreach ($cleanup as $symlink) {
            if (file_exists($symlink)) {
                $this->logger->debug('Cleaning up symbol link: ' . $symlink);
                unlink($symlink);
            }
        }
        $this->logger->info('Creating symbol link: ' . $loader->symbolFilename . ' -> ' . $configFile);
        if (cross_symlink($configFile, $loader->symbolFilename) === false) {
            $this->logger->error('Config linking failed.');
        }
        $this->logger->info('Done');
    }