Overview of changes:
* Enabled adding meta command help text
User can now specify SATURNIN_META_HELP environment variable to
control what happens when meta-command is called with `--help`
argument.
* Removed `conf` from default sub-command list
The command is essentially internal; usage from outside is possible
but requires knowledge normally only available to developers.
conf is Saturnin's internal command to access common configuration. It
could be, in theory, useful for end-user to investigate the configuration,
but they would already need to know how it works and which configuration
keypaths or sections they want to look at.
Bettter hide it; it's not worth for the potential confusion.
Note that the command could actually even be removed one day since
internally it's much more efficient to use saturnin__conf().
Overview of changes:
* Properly filter subcommands on listing
In contexts like main --help and tab completion, Saturnin would show
also arbitrary files from libexec that did not start with dedicated
prefix ($SATURNIN_LIBEXEC_PREFIX). This was a mistake and was never
intended to work that way.
* Hook code is now run as separate bash process
Running it within sub-command code was a little bit too unsafe;
there's no need to be evil^Weval here.
* Rewrote saturnin__version() (used for app --version)
Newly, --version will only incorporate tagline if it was defined in
mkit.ini.
Also "Powered by Saturnin" line has been added so that we don't have
to ask user every time.
* Added --saturnin-get-saturnin-version
It's a good idea to include this with test reports and the like so
we're making it more accessible to scripts.
* API documentation clarifications
* Codebase maintenance
* Refactoring for code readability
Only print tagline if defined (similar to codename); do not make it up
with silly string.
Also we can do away without any local variables *and* very safely inside
79 character width recommendation.
Overview of changes:
* Added generic config file finder
This can be used to find config files other than INIs but using the
same merging mechanism. For example, `saturnin__conf_find "foo"`
should output to first existing instance of file "foo", which could
live under any of paths set in SATURNIN_CONF_PATH (typically
/usr/share/app/ini.d/dist/foo, /etc/app/foo, ~/.config/app/foo,
~/.config/app/ini.d/my/foo...).
This function is now also internally usef by saturnin__conf().
* Added module-version meta-data for future Shellfu generations
Current version of Shellfu does not support this yet, but in future
it should read this and display in lists, man pages, etc.
Overview of changes:
* Converted to pure shellfu library
So far we have relied on users embedding Saturnin inside their app
and updating it by porting changes manually. This has been awkward
but was safer for preliminary versions where feature set was not
stable and separation of the library and the app skeleton has not
been done properly.
Nowadays, these problems have been mostly resolved; the feature set
seems to be stable and the app skeleton has been reduced to only the
few lines, so it's time to make Saturnin a proper shellfu library.
Of course, Saturnin can still be embedded, but primary use case is
to depend on it and import it just as any other shellfu module.
The 'satcmd' demo app has been moved to a different repo.
* Ported conf merge tests from old inigrep
This was a long-standing debt from the inigrep split. Tests
originally created for inigrep have been ported to focus on
saturnin__conf(), throwing few more in for good measure.
* Enabled --help (friendly usage()) in saturnin__conf()
saturnin__conf() (exposed to user as `myapp conf`) now supports the
obligatory --help argument.
* Did some updates and cleanups.
Move satcmd to other repo and distribute saturnin as a stand-alone
shellfu library. Users can import just the library instead of
embedding it inside their source tree, which enables them to delegate
part of the job to package manager.
Overview of changes:
* Don't hide short options from usage message and Bash autocomplete
* saturnin-conf now has usage message
* saturnin-conf now exits with useful status in some scenarios
* Hacked completion code together so that updating should be easier
(command name is set only once)
* Cleanup and maintenance