Cleanup, bugfixes
This commit is contained in:
parent
c3e651440f
commit
8d6c1800b9
@ -3,11 +3,12 @@
|
|||||||
|
|
||||||
foreach ([
|
foreach ([
|
||||||
__DIR__."/../vendor",
|
__DIR__."/../vendor",
|
||||||
__DIR__."/../../../vendor"
|
__DIR__."/../../../vendor",
|
||||||
|
__DIR__."/vendor",
|
||||||
] as $dir) {
|
] as $dir) {
|
||||||
if (file_exists($dir."/autoload.php")) {
|
if (file_exists($dir."/autoload.php")) {
|
||||||
|
define("COMPOSER_VENDOR_PATH", $dir);
|
||||||
require_once $dir."/autoload.php";
|
require_once $dir."/autoload.php";
|
||||||
echo $dir."\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,5 +17,13 @@ $datasetManager = new NoccyLabs\Dataset\DatasetManager();
|
|||||||
$datasets = $datasetManager->getAvailableDatasets();
|
$datasets = $datasetManager->getAvailableDatasets();
|
||||||
|
|
||||||
foreach ($datasets as $dataset) {
|
foreach ($datasets as $dataset) {
|
||||||
echo $dataset->getIdentifier()."\n";
|
echo $dataset->getIdentifier()." (".$dataset->getVersion().")\n";
|
||||||
|
$reader = $dataset->open();
|
||||||
|
$rows = 0;
|
||||||
|
$headers = null;
|
||||||
|
foreach ($reader as $row) {
|
||||||
|
if (!$headers) $headers = array_keys($row);
|
||||||
|
$rows++;
|
||||||
|
}
|
||||||
|
echo " ".$rows." rows\n - ".join("\n - ",$headers)."\n";
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,13 @@ class Dataset
|
|||||||
|
|
||||||
protected array $options;
|
protected array $options;
|
||||||
|
|
||||||
public function __construct(string $identifier, array $options)
|
protected ?string $version;
|
||||||
|
|
||||||
|
public function __construct(string $identifier, array $options, ?string $version=null)
|
||||||
{
|
{
|
||||||
$this->identifier = $identifier;
|
$this->identifier = $identifier;
|
||||||
$this->options = $options;
|
$this->options = $options;
|
||||||
|
$this->version = $version;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getIdentifier(): string
|
public function getIdentifier(): string
|
||||||
@ -22,6 +25,11 @@ class Dataset
|
|||||||
return $this->identifier;
|
return $this->identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getVersion(): ?string
|
||||||
|
{
|
||||||
|
return $this->version;
|
||||||
|
}
|
||||||
|
|
||||||
public function open(): ReaderInterface
|
public function open(): ReaderInterface
|
||||||
{
|
{
|
||||||
$filename = $this->options['filename'];
|
$filename = $this->options['filename'];
|
||||||
|
@ -11,9 +11,9 @@ namespace NoccyLabs\Dataset;
|
|||||||
*/
|
*/
|
||||||
class DatasetManager
|
class DatasetManager
|
||||||
{
|
{
|
||||||
|
private static array $packageVersions = [];
|
||||||
|
|
||||||
|
private static array $datasets = [];
|
||||||
private static $datasets = [];
|
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@ -47,6 +47,15 @@ class DatasetManager
|
|||||||
|
|
||||||
$glob = glob($root."/*/*/dataset.json");
|
$glob = glob($root."/*/*/dataset.json");
|
||||||
|
|
||||||
|
self::$packageVersions = [];
|
||||||
|
$fn = realpath($root."/composer/installed.php");
|
||||||
|
if (file_exists($fn)) {
|
||||||
|
$versions = include $fn;
|
||||||
|
foreach ($versions['versions'] as $name=>$version) {
|
||||||
|
self::$packageVersions[$name] = $version['version'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($glob as $match) {
|
foreach ($glob as $match) {
|
||||||
$path = dirname($match);
|
$path = dirname($match);
|
||||||
$package = basename(dirname($path))."/".basename($path);
|
$package = basename(dirname($path))."/".basename($path);
|
||||||
@ -81,20 +90,24 @@ class DatasetManager
|
|||||||
|
|
||||||
private function loadDatasets(array $datasets, ?string $prefix, string $package, string $path)
|
private function loadDatasets(array $datasets, ?string $prefix, string $package, string $path)
|
||||||
{
|
{
|
||||||
foreach ($datasets as $name=>$info) {
|
foreach ($datasets as $name=>$options) {
|
||||||
if (!array_key_exists('filename', $info)) {
|
if (!array_key_exists('filename', $options)) {
|
||||||
$this->loadDatasets($info, ltrim($prefix . "." . $name, "."), $package, $path);
|
$this->loadDatasets($options, ltrim($prefix . "." . $name, "."), $package, $path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$info['filename'] = $path . "/" . $info['filename'];
|
$options['filename'] = $path . "/" . $options['filename'];
|
||||||
$pn = sprintf("%s#%s", $package, ltrim($prefix.".".$name,"."));
|
$pn = sprintf("%s#%s", $package, ltrim($prefix.".".$name,"."));
|
||||||
$ds = new Dataset($pn, $info);
|
$pv = self::$packageVersions[$package]??null;
|
||||||
|
$ds = new Dataset($pn, $options, $pv);
|
||||||
$this->registerDataset($ds);
|
$this->registerDataset($ds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function determineVendorPath(): ?string
|
private function determineVendorPath(): ?string
|
||||||
{
|
{
|
||||||
|
if (defined("COMPOSER_VENDOR_PATH")) {
|
||||||
|
return COMPOSER_VENDOR_PATH;
|
||||||
|
}
|
||||||
if (file_exists(__DIR__."/../../../autoload.php")) {
|
if (file_exists(__DIR__."/../../../autoload.php")) {
|
||||||
// we are installed as a composer package
|
// we are installed as a composer package
|
||||||
return dirname(__DIR__, 3);
|
return dirname(__DIR__, 3);
|
||||||
@ -127,4 +140,4 @@ class DatasetManager
|
|||||||
|
|
||||||
return self::$datasets[$identifier];
|
return self::$datasets[$identifier];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user