RoboFile.php
public function createFromSymlink($options = [
    'project-dir' => self::BLT_PROJECT_DIR,
    'vm' => TRUE,
  ]) {
    $test_project_dir = $this->bltRoot . "/" . $options['project-dir'];
    $bin = $test_project_dir . "/vendor/bin";
    $this->prepareTestProjectDir($test_project_dir);
    $this->taskFilesystemStack()
      ->mkdir($test_project_dir)
      ->copy($this->bltRoot . '/subtree-splits/blt-project/composer.json', $test_project_dir . '/composer.json')
      ->run();

    $template_composer_json_filepath = $test_project_dir . '/composer.json';
    $template_composer_json = json_decode(file_get_contents($template_composer_json_filepath));
    $template_composer_json->repositories->blt = [
      'type' => 'path',
      'url' => '../blt',
      'options' => [
        'symlink' => TRUE,
      ],
    ];
    $template_composer_json->require->{'acquia/blt'} = '*@dev';

    file_put_contents($template_composer_json_filepath, json_encode($template_composer_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));

    $this->taskExecStack()
      ->dir($test_project_dir)
      ->exec("git init")
      ->exec("git add -A")
      ->exec("git commit -m \"Initial commit.\"")
      ->run();
    if (!$options['vm']) {
      $this->taskReplaceInFile($test_project_dir . "/composer.json")
        ->from("../blt")
        ->to($this->bltRoot)
        ->run();
    }
    $task = $this->taskExecStack()
      ->dir($test_project_dir)
      // BLT is the only dependency at this point. Install it.
      ->exec("composer install");

    if ($options['vm']) {
      $task->exec("$bin/blt vm --no-boot --no-interaction -v")
        ->exec("$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.local_path '../blt'")
        ->exec("$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.destination '/var/www/blt'")
        ->exec("$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.type nfs");
    }
    $task->run();
  }
public function createFromSymlink($options = [
    'project-dir' => self::BLT_PROJECT_DIR,
    'vm' => TRUE,
  ]) {
    $test_project_dir = $this->bltRoot . "/" . $options['project-dir'];
    $bin = $test_project_dir . "/vendor/bin";
    $this->prepareTestProjectDir($test_project_dir);
    $this->taskFilesystemStack()
      ->mkdir($test_project_dir)
      ->copy($this->bltRoot . '/subtree-splits/blt-project/composer.json', $test_project_dir . '/composer.json')
      ->run();

    $template_composer_json_filepath = $test_project_dir . '/composer.json';
    $template_composer_json = json_decode(file_get_contents($template_composer_json_filepath));
    $template_composer_json->repositories->blt = [
      'type' => 'path',
      'url' => '../blt',
      'options' => [
        'symlink' => TRUE,
      ],
    ];
    $template_composer_json->require->{'acquia/blt'} = '*@dev';

    file_put_contents($template_composer_json_filepath, json_encode($template_composer_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));

    $this->taskExecStack()
      ->dir($test_project_dir)
      ->exec("git init")
      ->exec("git add -A")
      ->exec("git commit -m \"Initial commit.\"")
      ->run();
    if (!$options['vm']) {
      $this->taskReplaceInFile($test_project_dir . "/composer.json")
        ->from("../blt")
        ->to($this->bltRoot)
        ->run();
    }
    $task = $this->taskExecStack()
      ->dir($test_project_dir)
      // BLT is the only dependency at this point. Install it.
      ->exec("composer install");

    if ($options['vm']) {
      $task->exec("$bin/blt vm --no-boot --no-interaction -v")
        ->exec("$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.local_path '../blt'")
        ->exec("$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.destination '/var/www/blt'")
        ->exec("$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.type nfs");
    }
    $task->run();
  }
public function createFromSymlink ( $ options = [ 'project-dir' => self :: BLT_PROJECT_DIR , 'vm' => TRUE , ] ) { $ test_project_dir = $ this -> bltRoot . "/" . $ options [ 'project-dir' ] ; $ bin = $ test_project_dir . "/vendor/bin" ; $ this -> prepareTestProjectDir ( $ test_project_dir ) ; $ this -> taskFilesystemStack ( ) -> mkdir ( $ test_project_dir ) -> copy ( $ this -> bltRoot . '/subtree-splits/blt-project/composer.json' , $ test_project_dir . '/composer.json' ) -> run ( ) ; $ template_composer_json_filepath = $ test_project_dir . '/composer.json' ; $ template_composer_json = json_decode ( file_get_contents ( $ template_composer_json_filepath ) ) ; $ template_composer_json -> repositories -> blt = [ 'type' => 'path' , 'url' => '../blt' , 'options' => [ 'symlink' => TRUE , ] , ] ; $ template_composer_json -> require -> { 'acquia/blt' } = '*@dev' ; file_put_contents ( $ template_composer_json_filepath , json_encode ( $ template_composer_json , JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ) ) ; $ this -> taskExecStack ( ) -> dir ( $ test_project_dir ) -> exec ( "git init" ) -> exec ( "git add -A" ) -> exec ( "git commit -m \"Initial commit.\"" ) -> run ( ) ; if ( ! $ options [ 'vm' ] ) { $ this -> taskReplaceInFile ( $ test_project_dir . "/composer.json" ) -> from ( "../blt" ) -> to ( $ this -> bltRoot ) -> run ( ) ; } $ task = $ this -> taskExecStack ( ) -> dir ( $ test_project_dir ) // BLT is the only dependency at this point. Install it. -> exec ( "composer install" ) ; if ( $ options [ 'vm' ] ) { $ task -> exec ( "$bin/blt vm --no-boot --no-interaction -v" ) -> exec ( "$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.local_path '../blt'" ) -> exec ( "$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.destination '/var/www/blt'" ) -> exec ( "$bin/yaml-cli update:value box/config.yml vagrant_synced_folders.1.type nfs" ) ; } $ task -> run ( ) ; }
Create a new project via symlink from current checkout of BLT.

Local BLT will be symlinked to blted8/vendor/acquia/blt.

@option project-dir The directory in which the test project will be
created.
@option vm Whether a VM will be booted.
Create a new project via symlink from current checkout of BLT .