v1.6.0 #16
@ -2,6 +2,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
const EOL = PHP_EOL;
|
||||||
|
const DS = DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
use PmConverter\Processor;
|
use PmConverter\Processor;
|
||||||
|
|
||||||
@ -24,10 +26,10 @@ $processor = new Processor($argv);
|
|||||||
try {
|
try {
|
||||||
$processor->convert();
|
$processor->convert();
|
||||||
} catch (InvalidArgumentException $e) {
|
} catch (InvalidArgumentException $e) {
|
||||||
fwrite(STDERR, sprintf('ERROR: %s%s', $e->getMessage(), PHP_EOL));
|
fwrite(STDERR, sprintf('ERROR: %s%s', $e->getMessage(), EOL));
|
||||||
print(implode(PHP_EOL, $processor->usage()));
|
print(implode(EOL, $processor->usage()));
|
||||||
die(1);
|
die(1);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
fwrite(STDERR, sprintf('ERROR: %s%s', $e->getMessage(), PHP_EOL));
|
fwrite(STDERR, sprintf('ERROR: %s%s', $e->getMessage(), EOL));
|
||||||
die(1);
|
die(1);
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ abstract class AbstractConverter implements ConverterContract
|
|||||||
*/
|
*/
|
||||||
protected function prepareOutputDir(string $outputPath): void
|
protected function prepareOutputDir(string $outputPath): void
|
||||||
{
|
{
|
||||||
$outputPath = sprintf('%s%s%s', $outputPath, DIRECTORY_SEPARATOR, static::OUTPUT_DIR);
|
$outputPath = sprintf('%s%s%s', $outputPath, DS, static::OUTPUT_DIR);
|
||||||
$this->outputPath = FileSystem::makeDir($outputPath);
|
$this->outputPath = FileSystem::makeDir($outputPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ abstract class AbstractConverter implements ConverterContract
|
|||||||
static $dir_tree;
|
static $dir_tree;
|
||||||
foreach ($item->item as $subitem) {
|
foreach ($item->item as $subitem) {
|
||||||
$dir_tree[] = $item->name;
|
$dir_tree[] = $item->name;
|
||||||
$path = implode(DIRECTORY_SEPARATOR, $dir_tree);
|
$path = implode(DS, $dir_tree);
|
||||||
if ($this->isItemFolder($subitem)) {
|
if ($this->isItemFolder($subitem)) {
|
||||||
$this->convertItem($subitem);
|
$this->convertItem($subitem);
|
||||||
} else {
|
} else {
|
||||||
@ -181,9 +181,9 @@ abstract class AbstractConverter implements ConverterContract
|
|||||||
*/
|
*/
|
||||||
protected function writeRequest(RequestContract $request, string $subpath = null): bool
|
protected function writeRequest(RequestContract $request, string $subpath = null): bool
|
||||||
{
|
{
|
||||||
$filedir = sprintf('%s%s%s', $this->outputPath, DIRECTORY_SEPARATOR, $subpath);
|
$filedir = sprintf('%s%s%s', $this->outputPath, DS, $subpath);
|
||||||
$filedir = FileSystem::makeDir($filedir);
|
$filedir = FileSystem::makeDir($filedir);
|
||||||
$filepath = sprintf('%s%s%s.%s', $filedir, DIRECTORY_SEPARATOR, $request->getName(), static::FILE_EXT);
|
$filepath = sprintf('%s%s%s.%s', $filedir, DS, $request->getName(), static::FILE_EXT);
|
||||||
$content = $this->interpolate((string)$request);
|
$content = $this->interpolate((string)$request);
|
||||||
return file_put_contents($filepath, $content) > 0;
|
return file_put_contents($filepath, $content) > 0;
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ abstract class AbstractRequest implements Stringable, RequestContract
|
|||||||
*/
|
*/
|
||||||
public function getName(): string
|
public function getName(): string
|
||||||
{
|
{
|
||||||
return str_replace(DIRECTORY_SEPARATOR, '_', $this->name);
|
return str_replace(DS, '_', $this->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,6 +78,6 @@ class CurlRequest extends AbstractRequest
|
|||||||
$this->prepareBody()
|
$this->prepareBody()
|
||||||
);
|
);
|
||||||
$output[] = rtrim(array_pop($output), '\ ');
|
$output[] = rtrim(array_pop($output), '\ ');
|
||||||
return implode(PHP_EOL, array_merge($output, ['']));
|
return implode(EOL, array_merge($output, ['']));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,6 @@ class HttpRequest extends AbstractRequest
|
|||||||
$this->prepareHeaders(),
|
$this->prepareHeaders(),
|
||||||
$this->prepareBody()
|
$this->prepareBody()
|
||||||
);
|
);
|
||||||
return implode(PHP_EOL, $output);
|
return implode(EOL, $output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ class Postman20Converter extends AbstractConverter implements ConverterContract
|
|||||||
protected function writeCollection(): bool
|
protected function writeCollection(): bool
|
||||||
{
|
{
|
||||||
$filedir = FileSystem::makeDir($this->outputPath);
|
$filedir = FileSystem::makeDir($this->outputPath);
|
||||||
$filepath = sprintf('%s%s%s.%s', $filedir, DIRECTORY_SEPARATOR, $this->collection->name(), static::FILE_EXT);
|
$filepath = sprintf('%s%s%s.%s', $filedir, DS, $this->collection->name(), static::FILE_EXT);
|
||||||
return file_put_contents($filepath, $this->collection) > 0;
|
return file_put_contents($filepath, $this->collection) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ class Postman21Converter extends AbstractConverter implements ConverterContract
|
|||||||
protected function writeCollection(): bool
|
protected function writeCollection(): bool
|
||||||
{
|
{
|
||||||
$filedir = FileSystem::makeDir($this->outputPath);
|
$filedir = FileSystem::makeDir($this->outputPath);
|
||||||
$filepath = sprintf('%s%s%s.%s', $filedir, DIRECTORY_SEPARATOR, $this->collection->name(), static::FILE_EXT);
|
$filepath = sprintf('%s%s%s.%s', $filedir, DS, $this->collection->name(), static::FILE_EXT);
|
||||||
return file_put_contents($filepath, $this->collection) > 0;
|
return file_put_contents($filepath, $this->collection) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +89,6 @@ class WgetRequest extends AbstractRequest
|
|||||||
$output[] = sprintf("\t%s", $this->getUrl());
|
$output[] = sprintf("\t%s", $this->getUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return implode(PHP_EOL, array_merge($output, ['']));
|
return implode(EOL, array_merge($output, ['']));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ class FileSystem
|
|||||||
public static function normalizePath(string $path): string
|
public static function normalizePath(string $path): string
|
||||||
{
|
{
|
||||||
$path = str_replace('~', $_SERVER['HOME'], $path);
|
$path = str_replace('~', $_SERVER['HOME'], $path);
|
||||||
return rtrim($path, DIRECTORY_SEPARATOR);
|
return rtrim($path, DS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,7 +101,7 @@ class FileSystem
|
|||||||
$path = static::normalizePath($path);
|
$path = static::normalizePath($path);
|
||||||
$records = array_diff(@scandir($path) ?: [], ['.', '..']);
|
$records = array_diff(@scandir($path) ?: [], ['.', '..']);
|
||||||
foreach ($records as &$record) {
|
foreach ($records as &$record) {
|
||||||
$record = sprintf('%s%s%s', $path, DIRECTORY_SEPARATOR, $record);
|
$record = sprintf('%s%s%s', $path, DS, $record);
|
||||||
}
|
}
|
||||||
return $records;
|
return $records;
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,11 @@ class Processor
|
|||||||
*/
|
*/
|
||||||
protected Environment $env;
|
protected Environment $env;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool Flag to output some debug-specific messages
|
||||||
|
*/
|
||||||
|
protected bool $devMode = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -98,7 +103,7 @@ class Processor
|
|||||||
protected function parseArgs(): void
|
protected function parseArgs(): void
|
||||||
{
|
{
|
||||||
if (count($this->argv) < 2) {
|
if (count($this->argv) < 2) {
|
||||||
die(implode(PHP_EOL, $this->usage()) . PHP_EOL);
|
die(implode(EOL, $this->usage()) . EOL);
|
||||||
}
|
}
|
||||||
foreach ($this->argv as $idx => $arg) {
|
foreach ($this->argv as $idx => $arg) {
|
||||||
switch ($arg) {
|
switch ($arg) {
|
||||||
@ -108,7 +113,7 @@ class Processor
|
|||||||
$normpath = FileSystem::normalizePath($rawpath);
|
$normpath = FileSystem::normalizePath($rawpath);
|
||||||
if (!FileSystem::isCollectionFile($normpath)) {
|
if (!FileSystem::isCollectionFile($normpath)) {
|
||||||
throw new InvalidArgumentException(
|
throw new InvalidArgumentException(
|
||||||
sprintf("not a valid collection:%s\t%s %s", PHP_EOL, $arg, $rawpath)
|
sprintf("not a valid collection:%s\t%s %s", EOL, $arg, $rawpath)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$this->collectionPaths[] = $this->argv[$idx + 1];
|
$this->collectionPaths[] = $this->argv[$idx + 1];
|
||||||
@ -179,11 +184,15 @@ class Processor
|
|||||||
|
|
||||||
case '-v':
|
case '-v':
|
||||||
case '--version':
|
case '--version':
|
||||||
die(implode(PHP_EOL, $this->version()) . PHP_EOL);
|
die(implode(EOL, $this->version()) . EOL);
|
||||||
|
|
||||||
case '-h':
|
case '-h':
|
||||||
case '--help':
|
case '--help':
|
||||||
die(implode(PHP_EOL, $this->usage()) . PHP_EOL);
|
die(implode(EOL, $this->usage()) . EOL);
|
||||||
|
|
||||||
|
case '--dev':
|
||||||
|
$this->devMode = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (empty($this->collectionPaths)) {
|
if (empty($this->collectionPaths)) {
|
||||||
@ -277,22 +286,26 @@ class Processor
|
|||||||
$this->initCollections();
|
$this->initCollections();
|
||||||
$this->initEnv();
|
$this->initEnv();
|
||||||
$count = count($this->collections);
|
$count = count($this->collections);
|
||||||
$current = 0;
|
$current = $success = 0;
|
||||||
$success = 0;
|
print(implode(EOL, array_merge($this->version(), $this->copyright())) . EOL . EOL);
|
||||||
print(implode(PHP_EOL, array_merge($this->version(), $this->copyright())) . PHP_EOL . PHP_EOL);
|
|
||||||
foreach ($this->collections as $collectionName => $collection) {
|
foreach ($this->collections as $collectionName => $collection) {
|
||||||
++$current;
|
++$current;
|
||||||
printf("Converting '%s' (%d/%d):%s", $collectionName, $current, $count, PHP_EOL);
|
printf("Converting '%s' (%d/%d):%s", $collectionName, $current, $count, EOL);
|
||||||
foreach ($this->converters as $type => $exporter) {
|
foreach ($this->converters as $type => $exporter) {
|
||||||
printf('> %s%s', strtolower($type), PHP_EOL);
|
printf('> %s%s', strtolower($type), EOL);
|
||||||
$outputPath = sprintf('%s%s%s', $this->outputPath, DIRECTORY_SEPARATOR, $collectionName);
|
$outputPath = sprintf('%s%s%s', $this->outputPath, DS, $collectionName);
|
||||||
if (!empty($this->env)) {
|
if (!empty($this->env)) {
|
||||||
$exporter->withEnv($this->env);
|
$exporter->withEnv($this->env);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
$exporter->convert($collection, $outputPath);
|
$exporter->convert($collection, $outputPath);
|
||||||
printf(' OK: %s%s', $exporter->getOutputPath(), PHP_EOL);
|
printf(' OK: %s%s', $exporter->getOutputPath(), EOL);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
printf(' ERROR %s: %s%s', $e->getCode(), $e->getMessage(), EOL);
|
||||||
|
$this->devMode && array_map(static fn ($line) => printf(" %s%s", $line, EOL), $e->getTrace());
|
||||||
}
|
}
|
||||||
print(PHP_EOL);
|
}
|
||||||
|
print(EOL);
|
||||||
++$success;
|
++$success;
|
||||||
}
|
}
|
||||||
unset($this->converters, $type, $exporter, $outputPath, $this->collections, $collectionName, $collection);
|
unset($this->converters, $type, $exporter, $outputPath, $this->collections, $collectionName, $collection);
|
||||||
@ -315,7 +328,7 @@ class Processor
|
|||||||
$timeFmt = 'sec';
|
$timeFmt = 'sec';
|
||||||
}
|
}
|
||||||
$ram = (memory_get_peak_usage(true) - $this->initRam) / 1024 / 1024;
|
$ram = (memory_get_peak_usage(true) - $this->initRam) / 1024 / 1024;
|
||||||
printf("Converted %d/%d in %.2f $timeFmt using up to %.2f MiB RAM%s", $success, $count, $time, $ram, PHP_EOL);
|
printf("Converted %d/%d in %.2f $timeFmt using up to %.2f MiB RAM%s", $success, $count, $time, $ram, EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user