%PDF- %PDF-
| Direktori : /var/www/projetos/suporte.iigd.com.br/vendor/wapmorgan/unified-archive/src/Commands/ |
| Current File : /var/www/projetos/suporte.iigd.com.br/vendor/wapmorgan/unified-archive/src/Commands/ListCommand.php |
<?php
namespace wapmorgan\UnifiedArchive\Commands;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class ListCommand extends BaseArchiveCommand
{
protected static $defaultName = 'files:list';
protected function configure()
{
parent::configure();
$this
->setDescription('Lists archive entries')
->setHelp('Lists archive entries.')
->addArgument('filter', InputArgument::OPTIONAL, 'Files filter (as for fnmatch). If no * passed in filter, it will be added at the end of filter')
->addOption('longFormat', 'l', InputOption::VALUE_NONE, 'Use long format')
->addOption('human-readable-size', null, InputOption::VALUE_NONE, 'Use human-readable size')
;
}
public function execute(InputInterface $input, OutputInterface $output)
{
$archive = $this->getArchive($input, $output);
$filter = $input->getArgument('filter');
$long_format = $input->getOption('longFormat');
$human_readable_size = $input->getOption('human-readable-size');
if (!empty($filter) && strpos($filter, '*') === false) {
$filter .= '*';
}
if ($long_format) {
$uncomp_size_length = $comp_size_length = 0;
foreach ($archive->getFiles($filter) as $file) {
$details = $archive->getFileData($file);
if ($human_readable_size) {
$un_comp_size = implode($this->formatSize($details->uncompressedSize));
$comp_size = implode($this->formatSize($details->compressedSize));
} else {
$un_comp_size = $details->uncompressedSize;
$comp_size = $details->compressedSize;
}
$len = strlen($un_comp_size);
if ($len > $uncomp_size_length) {
$uncomp_size_length = $len;
}
$len = strlen($comp_size);
if ($len > $comp_size_length) {
$comp_size_length = $len;
}
}
foreach ($archive->getFiles($filter) as $file) {
$details = $archive->getFileData($file);
$output->writeln(($details->isCompressed && $details->uncompressedSize > 0 ? 'x' : '-')
. ' ' . str_pad(
$human_readable_size ? implode($this->formatSize($details->uncompressedSize)) : $details->uncompressedSize,
$uncomp_size_length,
' ',
STR_PAD_LEFT)
. ' ' . str_pad(
$human_readable_size ? implode($this->formatSize($details->compressedSize)) : $details->compressedSize,
$comp_size_length,
' ',
STR_PAD_LEFT)
. ' ' . $this->formatDateShort($details->modificationTime) . ' ' . $details->path);
}
} else {
foreach ($archive->getFiles($filter) as $file) {
$output->writeln($file);
}
}
return 0;
}
protected function formatDateShort($timestamp)
{
static $current_year;
if ($current_year === null) {
$current_year = strtotime('1 january');
}
if ($timestamp < $current_year) {
return strtolower(date('M d o', $timestamp));
} else {
return strtolower(date('M d H:i', $timestamp));
}
}
}