Almost-minimal filesystem based blog.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

145 lines
3.6 KiB

#!/bin/sh
# Initialize a stub wrt project.
: <<=cut
=pod
=head1 NAME
wrt-init - initialize a stub wrt repository
=head1 SYNOPSIS
wrt init # Initialize a wrt repository in current directory
wrt init foo # Initialize a wrt repository in directory named foo
wrt init -h # Print help message
=head1 DESCRIPTION
Creates a configuration file, a basic template, and archive and
publication directories in a given path for use with wrt.
If no path is given, the current working directory will be assumed.
Detailed documentation can be found in the L<App::WRT> man page or at
L<https://code.p1k3.com/gitea/brennen/wrt>.
=head1 LICENSE
wrt is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
=head1 AUTHOR
Brennen Bearnes <code@p1k3.com>
=cut
print_help() {
echo "wrt-init - initialize a stub wrt repository"
echo
echo "Usage:"
echo " wrt-init [target directory]"
echo
echo "Creates a configuration file, a basic template, and archive and"
echo "publication directories in a given path for use with wrt."
echo
echo "If no path is given, the current working directory will be assumed."
exit 1
}
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
print_help
fi
init_target="."
if [ "$1" ]; then
init_target="$1"
fi
echo "Initializing new wrt repository in $init_target"
if [ ! -e "$init_target" ]; then
echo "$init_target not found"
exit 66
fi
if [ ! -d "$init_target" ]; then
echo "$init_target is not a directory"
exit 73
fi
if [ -e "$init_target/wrt.json" ]; then
echo "$init_target/wrt.json already exists"
exit 73
fi
printf 'Entries:\t%s/archives/\n' "$init_target"
mkdir -p "$init_target/archives"
printf 'Entries:\t%s/filters/\n' "$init_target"
mkdir -p "$init_target/filters"
printf 'Publish to:\t%s/public/\n' "$init_target"
mkdir -p "$init_target/public"
printf 'Configuration:\t%s/wrt.json\n' "$init_target"
cat > "$init_target/wrt.json" << 'JSON'
{
"entry_dir": "./archives",
"filter_dir": "./filters",
"publish_dir": "./public",
"title_prefix": "your title here",
"template": "default",
"description": "a wrt site",
"url_root": "https://example.com/",
"image_url_root": "https://example.com/",
"favicon_url": "https://example.com/favicon.png",
"template_dir": "./templates",
"stylesheet_url": "https://example.com/css/wrt.css",
"author": "Your Name Here",
"entry_descriptions": {
"new": "newest entries",
"all": "all entries"
}
}
JSON
printf 'Template:\t%s/templates/default\n' "$init_target"
mkdir -p "$init_target/templates"
cat > "$init_target/templates/default" << 'HTML'
<!DOCTYPE html>
<html>
<head>
<title>${title_prefix}::${title}</title>
<meta name="keywords" content="keywords here" />
<meta name="description" content="${description}" />
<meta name="author" content="${author}" />
<link rel="stylesheet" href="${stylesheet_url}" />
<link rel="icon" type="image/x-png" href="${favicon_url}" />
<link rel=alternate type="application/atom+xml" title="${title_prefix} atom feed" href="${url_root}${feed_alias}" />
<link rel=feed type="application/atom+xml" title="${title_prefix} atom feed" href="${url_root}${feed_alias}" />
<link rel="alternate" title="${title_prefix} JSON feed" type="application/json" href="${url_root}${feed_alias}.json" />
</head>
<body>
<perl>
return $self->link_bar();
</perl>
<h1>${title}</h1>
${content}
${page_navigation}
<p><small><em>${license}</em></small></p>
</body>
</html>
HTML