Skip to content

Commit

Permalink
Update import.php
Browse files Browse the repository at this point in the history
added a new option -d to get all files ending in .jsonl from a directory and make a batch import
  • Loading branch information
rotelok authored Jan 16, 2025
1 parent c2d49a5 commit 0ab2de6
Showing 1 changed file with 42 additions and 18 deletions.
60 changes: 42 additions & 18 deletions external/import.php
Original file line number Diff line number Diff line change
@@ -1,37 +1,61 @@
#!/usr/bin/env php
<?php

use XHGui\Application;

require __DIR__ . '/../vendor/autoload.php';

$options = getopt('f:');
$options = getopt('f:d:');

if (!isset($options['f'])) {
throw new InvalidArgumentException('You should define a file to be loaded');
var_dump($options);
if (!isset($options['f']) && !isset($options['d'])) {
throw new InvalidArgumentException('You should define either a file or a directory to be loaded');
}
$file = $options['f'];

if (!is_readable($file)) {
throw new InvalidArgumentException($file . ' isn\'t readable');
$files = [];
if (isset($options['f'])) {
$files[] = $options['f'];
}

$fp = fopen($file, 'r');
if (!$fp) {
throw new RuntimeException('Can\'t open ' . $file);
if (isset($options['d'])) {
$directory = $options['d'];
if (!is_dir($directory)) {
throw new InvalidArgumentException($directory . ' isn\'t a valid directory');
}
if (!is_readable($directory)) {
throw new InvalidArgumentException($directory . ' isn\'t readable');
}
$dirFiles = glob($directory . '/*.jsonl');
if ($dirFiles === false) {
throw new RuntimeException('Failed to read directory: ' . $directory);
}

$files = array_merge($files, $dirFiles);
}

$app = new Application();
$saver = $app->getSaver();

while (!feof($fp)) {
$line = fgets($fp);
$data = json_decode($line, true);
if ($data) {
try {
$saver->save($data);
} catch (Throwable $e) {
error_log($e);
foreach ($files as $file) {
if (!is_readable($file)) {
throw new InvalidArgumentException($file . ' isn\'t readable');
}

$fp = fopen($file, 'r');
if (!$fp) {
throw new RuntimeException('Can\'t open ' . $file);
}
echo "Processing file:" . $file . PHP_EOL;
while (!feof($fp)) {
$line = fgets($fp);
$data = json_decode($line, true);
if ($data) {
try {
$saver->save($data);
} catch (Throwable $e) {
error_log($e);
}
}
}
fclose($fp);
}
fclose($fp);

0 comments on commit 0ab2de6

Please sign in to comment.