#!/usr/bin/env php
<?php
if (empty($argv[1])) {
exit;
}
const exceptions = [
"vs", "above", "across", "against", "at", "between", "by", "along", "among", "down", "in",
"once", "around", "of", "off", "on", "to", "with", "before", "behind", "below", "beneath",
"down", "from", "near", "toward", "upon", "within", "a", "an", "the", "and", "but", "for",
"or", "nor", "so", "till", "when", "yet", "that", "than", "in", "into", "like", "onto", "over",
"past", "as", "if"
];
// Gather arguments and join into title-cased string.
$title_words = array_slice($argv, 1);
$title_words = array_map(
fn (string $word) => in_array($word, exceptions) ? lcfirst($word) : ucfirst($word),
$title_words
);
$title_words[0] = ucfirst($title_words[0]);
end($title_words);
$key = key($title_words);
$title_words[$key] = ucfirst($title_words[$key]);
// Generate HTML title.
$title = implode(' ', $title_words);
$title = "<h1>$title</h1>\n\n";
// Generate post filename/URL.
$filename = strtolower(implode('-', $title_words));
$date = date('Y-m-d');
$filename = "$date-$filename.md";
if (!$handle = fopen("./drafts/$filename", 'a')) {
fwrite(STDERR, "Cannot append to file: $filename\n");
exit;
}
if (fwrite($handle, $title) === false) {
fwrite(STDERR, "Cannot write contents to file: $filename\n");
exit;
}
printf("Created post %s\n", $filename);