1
0
Fork 0

Almost finished adding --file option, need to add unit test

pull/4479/head
MakiCode 2015-10-02 09:09:09 -05:00
parent edf14dab15
commit 87b5af60a8
2 changed files with 9 additions and 5 deletions

View File

@ -42,6 +42,7 @@ class ArchiveCommand extends Command
new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'), new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'),
new InputOption('format', 'f', InputOption::VALUE_OPTIONAL, 'Format of the resulting archive: tar or zip'), new InputOption('format', 'f', InputOption::VALUE_OPTIONAL, 'Format of the resulting archive: tar or zip'),
new InputOption('dir', false, InputOption::VALUE_OPTIONAL, 'Write the archive to this directory'), new InputOption('dir', false, InputOption::VALUE_OPTIONAL, 'Write the archive to this directory'),
new InputOption('file', false, InputOption::VALUE_OPTIONAL, 'Write the archive with the given file name.'),
)) ))
->setHelp(<<<EOT ->setHelp(<<<EOT
The <info>archive</info> command creates an archive of the specified format The <info>archive</info> command creates an archive of the specified format
@ -78,7 +79,8 @@ EOT
$input->getArgument('package'), $input->getArgument('package'),
$input->getArgument('version'), $input->getArgument('version'),
$input->getOption('format'), $input->getOption('format'),
$input->getOption('dir') $input->getOption('dir'),
$input->getOption("file")
); );
if (0 === $returnCode && $composer) { if (0 === $returnCode && $composer) {
@ -88,7 +90,7 @@ EOT
return $returnCode; return $returnCode;
} }
protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.') protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.', $fileName = null)
{ {
$factory = new Factory; $factory = new Factory;
$downloadManager = $factory->createDownloadManager($io, $config); $downloadManager = $factory->createDownloadManager($io, $config);
@ -105,7 +107,7 @@ EOT
} }
$io->writeError('<info>Creating the archive into "'.$dest.'".</info>'); $io->writeError('<info>Creating the archive into "'.$dest.'".</info>');
$packagePath = $archiveManager->archive($package, $format, $dest); $packagePath = $archiveManager->archive($package, $format, $dest, $fileName);
$fs = new Filesystem; $fs = new Filesystem;
$shortPath = $fs->findShortestPath(getcwd(), $packagePath, true); $shortPath = $fs->findShortestPath(getcwd(), $packagePath, true);

View File

@ -96,12 +96,14 @@ class ArchiveManager
* *
* @param PackageInterface $package The package to archive * @param PackageInterface $package The package to archive
* @param string $format The format of the archive (zip, tar, ...) * @param string $format The format of the archive (zip, tar, ...)
* @param string $targetDir The diretory where to build the archive * @param string $targetDir The directory where to build the archive
* @param string|null $fileName The file name to use for the archive, or null to use the generated
* package name
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
* @throws \RuntimeException * @throws \RuntimeException
* @return string The path of the created archive * @return string The path of the created archive
*/ */
public function archive(PackageInterface $package, $format, $targetDir) public function archive(PackageInterface $package, $format, $targetDir, $fileName = null)
{ {
if (empty($format)) { if (empty($format)) {
throw new \InvalidArgumentException('Format must be specified'); throw new \InvalidArgumentException('Format must be specified');