find($this->argument('post')); if (! $post) { return $this->failWith("Post {$this->argument('post')} not found."); } if ($post->type !== 'blog') { return $this->failWith("Post {$post->id} has type '{$post->type}', expected 'blog' to publish to a CMS."); } $result = $publisher->publish($post); if ($result->success) { $post->update(['status' => 'published', 'published_url' => $result->url, 'publish_error' => null]); $this->line(json_encode(['success' => true, 'url' => $result->url])); return self::SUCCESS; } if ($result->attempted) { $post->update(['status' => 'failed', 'publish_error' => $result->error]); } return $this->failWith($result->error); } private function failWith(string $message): int { $this->line(json_encode(['success' => false, 'error' => $message])); return self::FAILURE; } }