Complete run.php using new classes
This commit is contained in:
parent
38da57caad
commit
6809268fb1
56
run.php
56
run.php
@ -4,12 +4,56 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
require __DIR__ . '/vendor/autoload.php';
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
|
|
||||||
$parser = new LogseqGem\Parser;
|
$opts = getopt('o:', rest_index: $rest_index);
|
||||||
|
$rest = array_slice($argv, $rest_index);
|
||||||
|
|
||||||
$page = file_get_contents("/Users/annika/sync/BTSync/logseq/pages/Gemlog.md");
|
$gemlog_input_path = $rest[0] ?? null;
|
||||||
$page = file_get_contents("/Users/annika/sync/BTSync/logseq/pages/Publishing to the Gemlog with logseq.md");
|
$gemlog_output_path = $opts['o'] ?? null;
|
||||||
|
|
||||||
$document = $parser->parse($page);
|
if (is_null($gemlog_input_path) || !file_exists($gemlog_input_path)) {
|
||||||
foreach ($document->iterator() as $node) {
|
throw new \Exception('Please provide an input gemlog file listing some articles. Got: ' . $gemlog_input_path);
|
||||||
echo 'Current node: ' . get_class($node) . "\n";
|
}
|
||||||
|
|
||||||
|
if (is_null($gemlog_output_path) || !is_dir($gemlog_output_path)) {
|
||||||
|
throw new \Exception('Please provide a destination directory using -o');
|
||||||
|
}
|
||||||
|
|
||||||
|
$dir = dirname($gemlog_input_path);
|
||||||
|
|
||||||
|
$gemlog = new LogseqGem\GemlogParser;
|
||||||
|
$article = new LogseqGem\ArticleParser;
|
||||||
|
|
||||||
|
$gemlog->load($gemlog_input_path);
|
||||||
|
$titles = $gemlog->getTitles();
|
||||||
|
|
||||||
|
foreach ($titles as $title) {
|
||||||
|
$article_path = $dir . '/' . $title . '.md';
|
||||||
|
$article->load($article_path);
|
||||||
|
$gemtext = $article->convert();
|
||||||
|
|
||||||
|
if (!$article->isPublished() || empty($gemtext)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sanitize_title = strtolower($title);
|
||||||
|
$sanitize_title = str_replace(' ', '-', $sanitize_title);
|
||||||
|
$sanitize_title .= '.gmi';
|
||||||
|
|
||||||
|
$output_path = $gemlog_output_path . '/' . $sanitize_title;
|
||||||
|
|
||||||
|
echo "Writing to ", $sanitize_title, "...\n";
|
||||||
|
|
||||||
|
$date = strtotime($article->getProperties()['date'] ?? null);
|
||||||
|
if (empty($date)) {
|
||||||
|
throw new Exception('Article ' . $title . ' has no date property');
|
||||||
|
}
|
||||||
|
|
||||||
|
$output = sprintf(
|
||||||
|
"# %s\n\n%s\n\n%s\n\n=> /gemlog.gmi gemlog\n=> / home\n",
|
||||||
|
$title,
|
||||||
|
date('j F Y', $date),
|
||||||
|
$gemtext
|
||||||
|
);
|
||||||
|
|
||||||
|
file_put_contents($output_path, $output);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user