setName('photos:albums:create') ->setDescription('Create a new album for a user') ->addArgument('user', InputArgument::REQUIRED, 'User to own album') ->addArgument('album', InputArgument::REQUIRED, 'Album name') ->addOption('location', 'l', InputOption::VALUE_REQUIRED, 'Set album location (optional)', ''); } /** * Execute the command */ protected function execute(InputInterface $input, OutputInterface $output): int { $userString = $input->getArgument('user'); $albumString = $input->getArgument('album'); $location = $input->getOption('location'); $user = $this->userManager->get($userString); if ($user === null) { throw new \Exception("User $userString was not found"); } $userID = $user->getUID(); $album = $this->albumMapper->getByName($albumString, $userString); if ($album) { throw new \Exception("Album $albumString already exists and cannot be created."); } try { $this->albumMapper->create($userID, $albumString, $location); } catch (\Exception $ex) { $output->writeln('Problem creating album'); $output->writeln($ex->getMessage()); return 1; } return 0; } }