Blog

Article Tags

Hua Orphans Mode

By William Jeffrey Rankin, Thu Feb 13 2025

Hua has an "orphans" mode that enables the identification of files that exist in the output directory but not in the entries file. Here's an example using the sample content files:

$ pwsh hua.ps1 example.cfg -O
orphan-1.html

As there may be perfectly valid reasons for the file to exist (e.g., a file referenced in generated content like a PDF or a download) Hua takes no action beyond listing the orphan filename.

It occurred to me this mode could also be used to look for orphans in the content directory. All that's required is to change the output_dir variable value in the Hua config file to the location of the content directory. In the example.cfg file change this:

...    
output_dir     =  .\blog
...

to this:

...    
output_dir     =  .\content
...

and run Hua in the same way as above. Content is not processed in orphans mode. Don't forget to change output_dir to its prior value!

    Article Tags

    Hua Linux Package

    By William Jeffrey Rankin, Mon Dec 30 2024

    A Hua tar archive is now available for Linux hosts. It is designed to be installed in /usr/local. An executable shell script is included (hua) as well as a man page.

    Like the zip version, it includes a sample web site. To try it out, run the following:

    $ mkdir temp
    $ cd temp
    $ cp /usr/local/share/hua/example.cfg .
    $ cp -r /usr/local/share/hua/content .
    $ mkdir blog
    $ hua example.cfg
    

    The installation looks like this:

    \---usr
        \---local
            +---bin
            |       hua
            |       hua-paging.ps1
            |       hua.ps1
            |
            \---share
                +---hua
                |   |   entries.csv
                |   |   example.cfg
                |   |   Hua.pdf
                |   |   meta.csv
                |   |   MIT-License.txt
                |   |
                |   +---content
                |   |   |   another.html
                |   |   |   first.html
                |   |   |   latest.html
                |   |   |   markdown-2.md
                |   |   |   markdown.md
                |   |   |   new-article.md
                |   |   |   new-tag.md
                |   |   |   no-content.html
                |   |   |
                |   |   \---inc
                |   |           comments.html
                |   |           footer.html
                |   |           header.html
                |   |           read_more.html
                |   |
                |   \---markdown
                |           md-template.html
                |
                \---man
                    \---man1
                            hua.1
    

        Article Tags

        Running Hua as a Scheduled Task (or Cron Job)

        By William Jeffrey Rankin, Thu Dec 5 2024

        Hua can be run at regular intervals using a scheduled task (on Windows) or a cron job (on Linux/Cygwin). On Windows, I use a simple batch script:

        D:
        cd Documents\Hua
        D:\PowerShell-7.4.6-win-x64\pwsh .\hua.ps1 .\hua.cfg
        

        Then I create a scheduled task. Two examples are shown below: the first runs daily, the second every hour.

        schtasks /create /sc daily /st 23:50 /tn "Hua" /tr D:\Documents\Hua.bat
        schtasks /create /sc hourly /st 08:05 /tn "Hua" /tr D:\Documents\Hua.bat
        

        On Linux and Cygwin it's a little simpler since the batch script is not necessary. The equivalent cron jobs look like this:

        50 23 * * * cd Hua; pwsh hua.ps1 hua.cfg
        5 * * * * cd Hua; pwsh hua.ps1 hua.cfg
        

        Note that in the case of Cygwin, you'll need to use the full path to pwsh:

        50 23 * * * cd Hua; /cygdrive/c/PowerShell-7.4.6-win-x64/pwsh ./hua.ps1 ./hua.cfg
        

        If you want to suppress Hua's output, direct it to /dev/null as shown below. Output is still sent to Hua's log file.

        50 23 * * * cd Hua; pwsh hua.ps1 hua.cfg > /dev/null
        

            Article Tags

            Hua Error Handling Enhancements

            By William Jeffrey Rankin, Sat Nov 23 2024

            Revision 195 includes improvements to Hua's handling of non-critical errors. These are instances where Hua will continue processing all content except for the suspect entries. Examples of this include zero-length (empty) article files, entries lacking a filename, and entries lacking an ID. When possible, the entry ID is shown so the record can be quickly located and fixed.

            The latest Hua download package demonstrates these errors. For example:

            jeffr@Callisto: ~/Documents/Hua $ pwsh ./hua.ps1 ./hua.cfg 
            Content file error. File (ID: 000045) is empty. Skipping.
            Entries file error. There is an entry (ID: 000040) without a filename. Skipping.
            ...
            Entries file error. There is an entry without an ID. Skipping.
            

            Related Articles

                Article Tags

                Hua Pandoc Integration

                By William Jeffrey Rankin, Mon Oct 14 2024

                Revision 169 of Hua supports PDF generation through Pandoc and the GNU roff (groff) typesetting system. This allows for much better looking print output than is possible through HTML and CSS.

                Example Usage & Output

                Groff output mode is used in conjunction with article mode:

                .\hua.ps1 .\hua.cfg -A '00110' -G
                

                This command outputs two files: the HTML version of the article and a version for use in groff (it's given an .ms extension). To convert this file to PDF, run the following:

                pdfroff -ms -mpdfmark -mspdf pandoc-int.html.ms > pandoc-int.html.pdf
                

                The result looks like this (pandoc-int.html.pdf). Here's a more verbose example (old-church-stone.html.pdf). Note that only absolute links work in documents generated this way.

                Related Articles

                    Older Articles