]> _ Git - cubist_util.git/commitdiff
wip #7567 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 26 May 2025 18:04:59 +0000 (20:04 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 26 May 2025 18:04:59 +0000 (20:04 +0200)
src/CommandLine/LocalToGCSRclone.php [new file with mode: 0644]

diff --git a/src/CommandLine/LocalToGCSRclone.php b/src/CommandLine/LocalToGCSRclone.php
new file mode 100644 (file)
index 0000000..3653da4
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+namespace Cubist\Util\CommandLine;
+
+use Cubist\Net\Transfer\IServer;
+
+class LocalToGCSRclone extends CloneProgram
+{
+    protected $_prog = 'rclone';
+    protected $_gcs_config = [];
+    protected $_bucket;
+
+    protected function _preExecute()
+    {
+        parent::_preExecute();
+        $this->setArg(null, $this->getMirror() ? 'sync' : 'copy');
+        $this->setArg(null, $this->getSrc());
+        foreach ($this->_gcs_config as $k => $v) {
+            $this->setArg('gcs-' . str_replace('_', '-', $k), $v);
+        }
+
+        if ($this->isDryRun()) {
+            $this->setArg('dry-run');
+        }
+        foreach ($this->_cloneArgs as $name => $value) {
+            $this->setArg($name, $value);
+        }
+        $dest = ':gcs:' . $this->getBucket() . '/' . rtrim($this->getDest(), '/') . '/';
+        $this->setManualArg($dest);
+    }
+
+    public function setS3Config($config)
+    {
+        $this->_gcs_config = $config;
+    }
+
+    public function setServer(IServer $server)
+    {
+        parent::setServer($server);
+
+        $config = [
+            'provider' => $server->getS3Provider(),
+            'env_auth' => 'false',
+            'access_key_id' => $server->getAccessKey(),
+            'secret_access_key' => $server->getSecret(),
+            'region' => $server->getRegion(),
+            'endpoint' => $server->getEndpoint(),
+        ];
+
+        $this->setS3Config($config);
+        $this->setBucket($server->getBucket());
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getBucket()
+    {
+        return $this->_bucket;
+    }
+
+    /**
+     * @param mixed $bucket
+     */
+    public function setBucket($bucket): void
+    {
+        $this->_bucket = $bucket;
+    }
+}
\ No newline at end of file