The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

wax - webify your CLI

SYNOPSIS

    wax [OPTIONS] program [OPTIONS] ...

DESCRIPTION

wax is a command-line program which runs other command-line programs and converts their URL arguments to file paths. By default, the files are removed after the command has exited.

As well as adding transparent support for remote resources to commands that don't support them natively, wax can be used to:

  • add support for HTTPS (and any other protocols supported by LWP) to programs that only support HTTP

  • add a mirroring layer to network requests (remote resources are only fetched if they've been updated)

  • add a caching layer to network requests (remote resources are only fetched once)

OPTIONS

The following wax options can be supplied before the command name. Subsequent options are passed to the command verbatim, apart from URLs, which are converted to paths to the corresponding files. URL arguments can be excluded from the conversion process by supplying a separator token. Arguments after this are no longer processed by wax and are passed through verbatim e.g.:

    wax --cache --separator --no-wax cmd http://example.com/foo --no-wax --referrer http://example.com

Note that the --cache and --mirror options are mutually exclusive i.e. only one (or neither) should be supplied. Supplying both will cause wax to terminate with an error.

-c, --cache

Don't remove the downloaded file(s) after the command exits. Subsequent invocations will resolve the URL(s) to the cached files(s) (if still available) rather than hitting the network.

If the local file no longer exists, the resource will be re-downloaded.

Note: by default, files are saved to the system's temp directory, which is typically cleared when the system restarts. To save files to another directory, use the --directory option.

-d, --dir, --directory STRING

Specify the directory to download files to. Default: the system's temp directory.

-?, -h, --help

Display this documentation.

-m, --mirror

Like the --cache option, this keeps the downloaded file(s) after the command exits. In addition, each invocation issues a HEAD request to see if each resource has been updated. If so, the latest version is downloaded; otherwise, the cached version is used (if still available).

If the local file no longer exists, the resource will be re-downloaded.

-s, --separator STRING

Set the token used to mark the end of waxable options e.g.:

    wax --cache --separator :: cmd http://example.com/foo :: --referrer http://example.com

Note: the separator token is removed from the list of options passed to the command.

-t, --timeout INTEGER

Set the timeout for network requests in seconds. Default: 60.

-u, --user-agent STRING

Set the user-agent string for network requests.

-v, --verbose

Print diagnostic information to STDERR.

-V, --version

Print the version of wax.

EXAMPLES

grep

    $ wax grep -B1 demons http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.txt

espeak

    $ alias espeak="wax espeak"
    $ espeak -f http://www.setec.org/mel.txt

nman

    #!/bin/sh

    # nman - Node.js man-page viewer

    node_version=${NODE_VERSION:-`node --version`}
    docroot="https://cdn.rawgit.com/joyent/node/$node_version-release/doc/api"

    # https://stackoverflow.com/a/7603703
    wax --cache pandoc --standalone --from markdown --to man "$docroot/$1.markdown" | man -l -

CAVEATS

As with any command-line programs that take URL parameters, care should be taken to ensure that special shell characters are suitably quoted. As a general rule, URLs that contain &, ~, <, >, $ &c. should be quoted in shells on Unix-like systems and quoted with embedded escapes in Windows cmd/command.exe-like shells.

It's worth checking that a program actually needs waxing. Many command-line programs already support URLs e.g:

    eog http://upload.wikimedia.org/wikipedia/commons/4/4c/Eye_of_GNOME.png
    gedit http://projects.gnome.org/gedit/
    gimp http://upload.wikimedia.org/wikipedia/commons/6/6c/Gimpscreen.png
    perldoc -F "http://www.pair.com/~comdog/brian's_guide.pod"
    vim http://www.vim.org/

&c.

VERSION

1.0.5

SEE ALSO

AUTHOR

chocolateboy <chocolate@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2015 by chocolateboy

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.