diff --git a/src/Commands/DeployCommand.php b/src/Commands/DeployCommand.php index 958863a3..22f44832 100644 --- a/src/Commands/DeployCommand.php +++ b/src/Commands/DeployCommand.php @@ -32,6 +32,7 @@ protected function configure() ->addOption('commit', null, InputOption::VALUE_OPTIONAL, 'The commit hash that is being deployed') ->addOption('message', null, InputOption::VALUE_OPTIONAL, 'The message for the commit that is being deployed') ->addOption('without-waiting', null, InputOption::VALUE_NONE, 'Deploy without waiting for progress') + ->addOption('fresh-assets', null, InputOption::VALUE_NONE, 'Upload a fresh copy of all assets') ->setDescription('Deploy an environment'); } @@ -202,7 +203,7 @@ protected function serveAssets(array $artifact) { Helpers::line(); - (new ServeAssets())->__invoke($this->vapor, $artifact); + (new ServeAssets())->__invoke($this->vapor, $artifact, $this->option('fresh-assets')); } /** diff --git a/src/ConsoleVaporClient.php b/src/ConsoleVaporClient.php index 0ce55a14..b1e5f399 100644 --- a/src/ConsoleVaporClient.php +++ b/src/ConsoleVaporClient.php @@ -1042,13 +1042,15 @@ public function createArtifact( * * @param int $artifactId * @param array $files + * @param bool $fresh * * @return array */ - public function authorizeArtifactAssets($artifactId, array $files) + public function authorizeArtifactAssets($artifactId, array $files, bool $fresh = false) { return $this->requestWithErrorHandling('post', '/api/artifacts/'.$artifactId.'/asset-authorizations', [ 'files' => $files, + 'fresh' => $fresh, ]); } diff --git a/src/ServeAssets.php b/src/ServeAssets.php index 74f72004..ccc38067 100644 --- a/src/ServeAssets.php +++ b/src/ServeAssets.php @@ -11,17 +11,19 @@ class ServeAssets * * @param \Laravel\VaporCli\ConsoleVaporClient $vapor * @param array $artifact + * @param bool $fresh * * @return void */ - public function __invoke(ConsoleVaporClient $vapor, array $artifact) + public function __invoke(ConsoleVaporClient $vapor, array $artifact, $fresh) { $assetPath = Path::build().'/assets'; $requests = $this->getAuthorizedAssetRequests( $vapor, $artifact, - $assetFiles = $this->getAssetFiles($assetPath) + $assetFiles = $this->getAssetFiles($assetPath), + $fresh ); $this->executeStoreAssetRequests($requests['store'], $assetPath); @@ -72,7 +74,9 @@ protected function executeCopyAssetRequests($requests, $assetPath) Helpers::step('Copying Unchanged Asset: '.$request['path'].' ('.Helpers::kilobytes($assetPath.'/'.$request['path']).')'); } - $storage->executeCopyRequests($requests); + if (! empty($requests)) { + $storage->executeCopyRequests($requests); + } } /** @@ -87,11 +91,13 @@ protected function executeCopyAssetRequests($requests, $assetPath) protected function getAuthorizedAssetRequests( ConsoleVaporClient $vapor, array $artifact, - array $assetFiles + array $assetFiles, + bool $fresh ) { return $vapor->authorizeArtifactAssets( $artifact['id'], - $assetFiles + $assetFiles, + $fresh ); }