diff --git a/local-build.sh b/local-build.sh
new file mode 100755
index 0000000..cf00feb
--- /dev/null
+++ b/local-build.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# credit to: https://moquet.net/blog/distributing-php-cli/
+
+box build
+
+mv cdev.phar /usr/local/bin/cdev-local
diff --git a/src/Creode/Cdev/Command/Env/DbConnectEnvCommand.php b/src/Creode/Cdev/Command/Env/DbConnectEnvCommand.php
new file mode 100644
index 0000000..beae0f2
--- /dev/null
+++ b/src/Creode/Cdev/Command/Env/DbConnectEnvCommand.php
@@ -0,0 +1,58 @@
+setName('env:db:connect');
+ $this->setDescription('Connects to database container');
+
+ $this->addOption(
+ 'path',
+ 'p',
+ InputOption::VALUE_REQUIRED,
+ 'Path to run commands on. Defaults to the directory the command is run from',
+ getcwd()
+ );
+
+ $this->addOption(
+ 'database',
+ 'd',
+ InputOption::VALUE_REQUIRED,
+ 'The database to connect to',
+ 'website'
+ );
+
+ $this->addOption(
+ 'user',
+ 'u',
+ InputOption::VALUE_REQUIRED,
+ 'The user to connect as',
+ 'webuser'
+ );
+
+ $this->addOption(
+ 'password',
+ 'w',
+ InputOption::VALUE_REQUIRED,
+ 'The user password',
+ 'webpassword'
+ );
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $this->_environment->input($input);
+
+ $output->writeln(
+ $this->_environment->dbConnect()
+ );
+ }
+}
diff --git a/src/Creode/Environment/Docker/Docker.php b/src/Creode/Environment/Docker/Docker.php
index 71db6c1..0d1d9c9 100644
--- a/src/Creode/Environment/Docker/Docker.php
+++ b/src/Creode/Environment/Docker/Docker.php
@@ -161,6 +161,20 @@ public function ssh()
$this->_compose->ssh($path, $user);
}
+ public function dbConnect()
+ {
+ $this->logTitle('Connecting to database...');
+
+ $path = $this->_input->getOption('path');
+ $database = $this->_input->getOption('database');
+ $user = $this->_input->getOption('user');
+ $password = $this->_input->getOption('password');
+
+ $this->logMessage("Connecting to $database as $user");
+
+ $this->_compose->dbConnect($path, $database, $user, $password);
+ }
+
public function cacheClear()
{
$commands = $this->_framework->clearCache();
diff --git a/src/Creode/Environment/Docker/System/Compose/Compose.php b/src/Creode/Environment/Docker/System/Compose/Compose.php
index 71454a5..79cf6b9 100644
--- a/src/Creode/Environment/Docker/System/Compose/Compose.php
+++ b/src/Creode/Environment/Docker/System/Compose/Compose.php
@@ -136,6 +136,36 @@ public function ssh($path, $user)
);
}
+ /**
+ * Connects to database
+ * @param string $path
+ * @param string $database Database to connect to
+ * @param string $user User to connect as
+ * @param string $password Password for user
+ */
+ public function dbConnect($path, $database, $user, $password)
+ {
+ $this->requiresConfig();
+
+ $this->run(
+ self::COMMAND,
+ [
+ '-f',
+ Config::CONFIG_DIR . self::FILE,
+ '-p',
+ $this->_networkName,
+ 'exec',
+ 'mysql',
+ 'mysql',
+ '-u',
+ $user,
+ '-p'.$password,
+ $database
+ ],
+ $path
+ );
+ }
+
/**
* Runs a command on the running environment
* @param string $path
diff --git a/src/Creode/Environment/Environment.php b/src/Creode/Environment/Environment.php
index 4faa750..b94a83f 100644
--- a/src/Creode/Environment/Environment.php
+++ b/src/Creode/Environment/Environment.php
@@ -16,6 +16,8 @@ abstract public function cleanup();
abstract public function ssh();
+ abstract public function dbConnect();
+
abstract public function runCommand(array $command = array(), $elevatePermissions = false);
abstract public function cacheClear();
diff --git a/src/services.xml b/src/services.xml
index 860a324..6d7cfa1 100644
--- a/src/services.xml
+++ b/src/services.xml
@@ -73,6 +73,9 @@
+
+
+
@@ -119,6 +122,10 @@
+
+
+
+