diff --git a/src/terra/Command/Environment/EnvironmentAdd.php b/src/terra/Command/Environment/EnvironmentAdd.php index 5ad8013..67583bc 100644 --- a/src/terra/Command/Environment/EnvironmentAdd.php +++ b/src/terra/Command/Environment/EnvironmentAdd.php @@ -152,6 +152,7 @@ protected function execute(InputInterface $input, OutputInterface $output) 'path' => $path, 'document_root' => '', 'url' => '', + 'port' => '', 'version' => $version, 'domains' => array(), ); @@ -173,6 +174,9 @@ protected function execute(InputInterface $input, OutputInterface $output) // Save current branch $environment['version'] = $environmentFactory->getRepo()->getCurrentBranch(); + // Pick a port + $environment['port'] = $environmentFactory->getAvailablePort(); + // Save to registry. $this->getApplication()->getTerra()->getConfig()->saveEnvironment($environment); $this->getApplication()->getTerra()->getConfig()->save(); diff --git a/src/terra/Config.php b/src/terra/Config.php index af276c0..c1c9596 100644 --- a/src/terra/Config.php +++ b/src/terra/Config.php @@ -82,6 +82,9 @@ public function getConfigTreeBuilder() ->scalarNode('url') ->isRequired(false) ->end() + ->scalarNode('port') + ->isRequired(false) + ->end() ->scalarNode('document_root') ->isRequired(true) ->end() diff --git a/src/terra/Factory/EnvironmentFactory.php b/src/terra/Factory/EnvironmentFactory.php index dc3399b..a8b74be 100644 --- a/src/terra/Factory/EnvironmentFactory.php +++ b/src/terra/Factory/EnvironmentFactory.php @@ -279,6 +279,9 @@ public function getDockerComposeArray() { $this->getConfig(); + // Determine format for load port + $load_port = isset($this->environment->port) ? "{$this->environment->port}:80" : 80; + $source_root = $this->environment->path; if (!empty($this->config['document_root'])) { @@ -322,7 +325,7 @@ public function getDockerComposeArray() '80/tcp', ), 'ports' => array( - '80', + $load_port, ), ); $compose['app'] = array( @@ -713,4 +716,20 @@ public function writeTerraYml() return false; } } + + /** + * Looks through config for available ports... + * + * Still figuring this out... + */ + public function getAvailablePort() + { + $start = 50000; + $this->getConfig(); + foreach ($this->config['apps'] as $app) { + foreach ($app['environments'] as $environment) { + + } + } + } }