From e04580152e43145a846aff1ccebbc9dc4e9f5c3c Mon Sep 17 00:00:00 2001 From: Karl Hepworth Date: Wed, 24 Aug 2022 15:38:42 +1000 Subject: [PATCH 1/2] Skpr plugin Signed-off-by: Karl Hepworth --- src/Factory/SkprTransportFactory.php | 28 ++++++++++++ src/ProcessManager.php | 2 + src/Transport/SkprTransport.php | 66 +++++++++++++++++++++++++++ tests/Transport/SkprTransportTest.php | 51 +++++++++++++++++++++ 4 files changed, 147 insertions(+) create mode 100644 src/Factory/SkprTransportFactory.php create mode 100644 src/Transport/SkprTransport.php create mode 100644 tests/Transport/SkprTransportTest.php diff --git a/src/Factory/SkprTransportFactory.php b/src/Factory/SkprTransportFactory.php new file mode 100644 index 0000000..29840bd --- /dev/null +++ b/src/Factory/SkprTransportFactory.php @@ -0,0 +1,28 @@ +has('skpr'); + } + + /** + * @inheritdoc + */ + public function create(SiteAliasInterface $siteAlias) + { + return new SkprTransport($siteAlias); + } +} diff --git a/src/ProcessManager.php b/src/ProcessManager.php index ce9c5ba..acfe12b 100644 --- a/src/ProcessManager.php +++ b/src/ProcessManager.php @@ -3,6 +3,7 @@ namespace Consolidation\SiteProcess; use Consolidation\SiteProcess\Factory\KubectlTransportFactory; +use Consolidation\SiteProcess\Factory\SkprTransportFactory; use Consolidation\SiteProcess\Factory\VagrantTransportFactory; use Psr\Log\LoggerInterface; use Consolidation\SiteAlias\SiteAliasInterface; @@ -70,6 +71,7 @@ public static function addTransports(ProcessManager $processManager) { $processManager->add(new SshTransportFactory()); $processManager->add(new KubectlTransportFactory()); + $processManager->add(new SkprTransportFactory()); $processManager->add(new DockerComposeTransportFactory()); $processManager->add(new VagrantTransportFactory()); diff --git a/src/Transport/SkprTransport.php b/src/Transport/SkprTransport.php new file mode 100644 index 0000000..032ca34 --- /dev/null +++ b/src/Transport/SkprTransport.php @@ -0,0 +1,66 @@ +siteAlias = $siteAlias; + } + + /** + * @inheritdoc + */ + public function configure(SiteProcess $process) + { + $path = $this->siteAlias->getDefault('skpr.path', getcwd()); + if ($path) { + $process->chdirToSiteRoot($path); + } + } + + /** + * inheritdoc + */ + public function wrap($args) + { + $environment = $this->siteAlias->get('skpr.env'); + + $transport = [ + 'skpr', + 'exec', + "$environment", + ]; + $transport[] = "--"; + + return array_merge($transport, $args); + } + + /** + * @inheritdoc + */ + public function addChdir($cd_remote, $args) + { + return array_merge( + [ + 'cd', + $cd_remote, + Shell::op('&&'), + ], + $args + ); + } +} diff --git a/tests/Transport/SkprTransportTest.php b/tests/Transport/SkprTransportTest.php new file mode 100644 index 0000000..90789bd --- /dev/null +++ b/tests/Transport/SkprTransportTest.php @@ -0,0 +1,51 @@ + [ + 'environment' => 'dev', + ] + ], + ], + + // Ensure we aren't escaping arguments after "--" + [ + 'skpr exec dev -- monday "tuesday" \'wednesday\'', + ['monday', '"tuesday"', "'wednesday'"], + [ + 'skpr' => [ + 'environment' => 'dev' + ] + ], + ], + ]; + } + + /** + * @dataProvider wrapTestValues + */ + public function testWrap($expected, $args, $siteAliasData) + { + $siteAlias = new SiteAlias($siteAliasData, '@alias.dev'); + $dockerTransport = new SkprTransport($siteAlias); + $actual = $dockerTransport->wrap($args); + $this->assertEquals($expected, implode(' ', $actual)); + } +} From 9c32421a80a1966fd7b58b52288c392eb54d092d Mon Sep 17 00:00:00 2001 From: Karl Hepworth Date: Thu, 25 Aug 2022 09:57:32 +1000 Subject: [PATCH 2/2] Quick fixes Signed-off-by: Karl Hepworth --- tests/Transport/SkprTransportTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Transport/SkprTransportTest.php b/tests/Transport/SkprTransportTest.php index 90789bd..1b9a9fa 100644 --- a/tests/Transport/SkprTransportTest.php +++ b/tests/Transport/SkprTransportTest.php @@ -20,7 +20,7 @@ public function wrapTestValues() ['ls'], [ 'skpr' => [ - 'environment' => 'dev', + 'env' => 'dev', ] ], ], @@ -31,7 +31,7 @@ public function wrapTestValues() ['monday', '"tuesday"', "'wednesday'"], [ 'skpr' => [ - 'environment' => 'dev' + 'env' => 'dev' ] ], ],