|
|
- #!/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
|