Orion API - Build

[DRAFT] Last updated by Joe Schaefer on Sat, 13 Apr 2024    source
 

This document covers the Build System APIs.


Build System

SunStarSys::View

single_narrative(%args)

Mandatory Arguments:

Optional Argmuents:

news_page(%args)

sitemap(%args)

Locale-specific, sorted index of dependencies.

Mandatory Arguments:

Optional Arguments:

asymptote(%args)

Builds and Caches asymptote triple-backquoted-code blocks.

Mandatory Arguments:

skip(%args)

Don’t build these at all. Instead, build the associated generated source files (e.g. .bib\$lang \mapsto \$base.page/bibliography.yml\$lang) to be built on a secondary build system run.

yml2ext(%args)

Convert YAML files.

Optional Arguments:

fetch_deps($path, $data, $quick)

Mandatory Arguments:

breadcrumbs($path)

Returns HTML breadcrumbs list for $path.

memoize(%args)

Caches the build; mainly used with fetch_deps and quick_deps > 2.

compress(%args)

Deprecated.

next_view(%args)

Utility for processing $args{view}.

ssi(%args)

Recursively evaluates ssi tags.

offline(%args)

Runs the next_view in offline mode.

snippet(%args)

Processes snippet lines.

reconstruct(%args)

Reprocesses Template directives in built content from next_view.

Trims file extensions from local links.

Normalizes local links (./ and ../).


SunStarSys::Util

read_text_file($file, $out, $content_lines)

Parses headers+content of UTF-8 encoded file $file and stores results in $out. $content_lines is the (optional) maximum number of content lines to read.
Returns actual number of lines read (including headers).

$file may be a reference to a raw string, representing the full contents of a file. The results in $out will still be UTF-8 encoded.

copy_if_newer($src, $dest)

Copies $src to $dest if the former’s modification timestamp is newer than the latter’s. On copy, additionally gzip-compresses the $dest file if it’s a text file, and adds “.gz” extension to the name.

get_lock($lockfile)

Takes an exclusive (f)lock (for the current UNIX process) on $lockfile.

shuffle(\@deck)

In-place random (Fisher-Yates) shuffle of @deck.

sort_tables($content)

Sorts Markdown Tables in $content according to each table’s column spec. Exactly one column may be sorted per table, optionally numerically n, in either descending v or ascending ^ order.

fixup_code($prefix, $type, @_)

Strips $prefix from every arg in @_. The function of the $type argument is implementation specific, but is mainly used to seed the editor.md “mode” for processing this content in @_.

unload_package($pkg)

Aggressively unloads Perl package $pkg from the Symbol Table (STASH).

purge_from_inc(@paths)

Removes @paths from @INC.

touch(@_)

Touches all files in @_. If no args are passed, uses $_.

normalize_svn_path(@_)

Normalizes all paths in @_ for safe use as raw arguments to SVN::Client commands.

sanitize_relative_path(@_)

Secures paths in @_ for use as pure relative paths in Dotiac::DTL (Django Template) path-specific commands.

parse_filename($path)

Wrapper around File::Basename::fileparse. Without arguments, uses $_ as the filename to parse.

walk_content_tree($code)

Conditionally walks the ./content tree of the build system checkout, first normalizing $_ as the formal subpath and then invoking $code, on each item in the the treewalk.

archived($path)

Flags each Status: archive $path. Uses $_ if no args are passed.

seed_file_deps($path)

Updates %path::dependencies for this $path, based on its Dependencies header glob(s). Defaults to using $_ as the path if no args are passed.

seed_file_acl($path)

Updates @path::acl for this $path, based on its ACL header spec. Defaults to using $_ as the path if no args are passed.

Load

Same as YAML::XS::Load.

Dump

Same as YAML::XS::Dump.