-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
710 additions
and
294 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
.idea | ||
.idea | ||
composer.lock | ||
vendor |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Jh\StrippedDbProvider\Console; | ||
|
||
use Symfony\Component\Console\Command\Command; | ||
use Symfony\Component\Console\Input\InputInterface; | ||
use Symfony\Component\Console\Output\OutputInterface; | ||
use Symfony\Component\Console\Input\InputArgument; | ||
use Jh\StrippedDbProvider\Model\DbFacade; | ||
use Jh\StrippedDbProvider\Model\ProjectMeta; | ||
|
||
class ImportFromRemoteCommand extends Command | ||
{ | ||
const ARGUMENT_PROJECT_NAME = 'source-project-name'; | ||
|
||
/** | ||
* @var DbFacade | ||
*/ | ||
private $dbFacade; | ||
|
||
public function __construct( | ||
DbFacade $dbFacade, | ||
string $name = null | ||
) { | ||
parent::__construct($name); | ||
$this->dbFacade = $dbFacade; | ||
} | ||
|
||
/** | ||
* @return void | ||
*/ | ||
protected function configure() | ||
{ | ||
$this->setName('wearejh:stripped-db-provider:import-from-remote'); | ||
$this->setDescription("Import DB from JH's Cloud Storage"); | ||
$this->addArgument( | ||
self::ARGUMENT_PROJECT_NAME, | ||
InputArgument::REQUIRED, | ||
'Source Project Name to import from eg. prod-stroustrup-workshop.' | ||
); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
protected function execute(InputInterface $input, OutputInterface $output) | ||
{ | ||
try { | ||
$sourceProjectMeta = new ProjectMeta($input->getArgument(self::ARGUMENT_PROJECT_NAME)); | ||
$output->writeln('<fg=cyan;options=bold>Downloading Database From Cloud Storage...</>'); | ||
$this->dbFacade->downloadDatabaseDump($sourceProjectMeta); | ||
$output->writeln(sprintf( | ||
"<info>Dump downloaded at %s</info>", | ||
$sourceProjectMeta->getLocalAbsoluteCompressedFileDumpPath() | ||
)); | ||
$output->writeln('<fg=cyan;options=bold>Uncompressing Database ...</>'); | ||
$this->dbFacade->uncompressDatabaseDump($sourceProjectMeta); | ||
$output->writeln('<fg=cyan;options=bold>Importing Database ...</>'); | ||
$this->dbFacade->importDatabaseDump($sourceProjectMeta); | ||
$output->writeln("<info>Database successfully imported.</info>"); | ||
} catch (\Exception $e) { | ||
$output->writeln("<error>{$e->getMessage()}</error>"); | ||
} finally { | ||
if (isset($sourceProjectMeta)) { | ||
$this->dbFacade->cleanUpLocalDumpFiles($sourceProjectMeta); | ||
} | ||
} | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Jh\StrippedDbProvider\Console; | ||
|
||
use Symfony\Component\Console\Command\Command; | ||
use Symfony\Component\Console\Input\InputInterface; | ||
use Symfony\Component\Console\Output\OutputInterface; | ||
use Jh\StrippedDbProvider\Model\DbFacade; | ||
use Jh\StrippedDbProvider\Model\Config; | ||
|
||
class UploadToRemoteCommand extends Command | ||
{ | ||
/** | ||
* @var DbFacade | ||
*/ | ||
private $dbFacade; | ||
|
||
/** | ||
* @var Config | ||
*/ | ||
private $config; | ||
|
||
public function __construct(DbFacade $dbFacade, Config $config, string $name = null) | ||
{ | ||
parent::__construct($name); | ||
$this->dbFacade = $dbFacade; | ||
$this->config = $config; | ||
} | ||
|
||
/** | ||
* @return void | ||
*/ | ||
protected function configure() | ||
{ | ||
$this->setName('wearejh:stripped-db-provider:upload-to-remote'); | ||
$this->setDescription("Upload a stripped DB dump to JH's Cloud Storage"); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
protected function execute(InputInterface $input, OutputInterface $output) | ||
{ | ||
try { | ||
$projectMeta = $this->config->getProjectMeta(); | ||
$output->writeln('<fg=cyan;options=bold>Dumping Database...</>'); | ||
$this->dbFacade->dumpDatabase($projectMeta); | ||
$output->writeln("<info>Dump created at {$projectMeta->getLocalAbsoluteFileDumpPath()}</info>"); | ||
$output->writeln('<fg=cyan;options=bold>Compressing Dump...</>'); | ||
$this->dbFacade->compressDatabaseDump($projectMeta); | ||
$output->writeln('<fg=cyan;options=bold>Uploading Dump to Cloud Storage...</>'); | ||
$this->dbFacade->uploadDatabaseDump($projectMeta); | ||
$output->writeln("<info>Dump successfully uploaded at {$projectMeta->getRemoteDumpObjectKey()}.</info>"); | ||
} catch (\Exception $e) { | ||
$output->writeln("<error>{$e->getMessage()}</error>"); | ||
} finally { | ||
if (isset($projectMeta)) { | ||
$this->dbFacade->cleanUpLocalDumpFiles($projectMeta); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Jh\StrippedDbProvider\Model\Db; | ||
|
||
use Jh\StrippedDbProvider\Model\ProjectMeta; | ||
use Magento\Framework\Shell; | ||
|
||
class DbCleaner | ||
{ | ||
/** | ||
* @var Shell | ||
*/ | ||
private $shell; | ||
|
||
public function __construct(Shell $shell) | ||
{ | ||
$this->shell = $shell; | ||
} | ||
|
||
/** | ||
* Attempt to silently remove the database dumps | ||
* | ||
* @param ProjectMeta $projectMeta | ||
* @return string | ||
*/ | ||
public function cleanUp(ProjectMeta $projectMeta) | ||
{ | ||
try { | ||
$this->shell->execute("rm %s", [$projectMeta->getLocalAbsoluteFileDumpPath()]); | ||
$this->shell->execute("rm %s", [$projectMeta->getLocalAbsoluteCompressedFileDumpPath()]); | ||
} catch (\Exception $e) { | ||
//empty | ||
} | ||
} | ||
} |
Oops, something went wrong.