Overview of changes:
* Added SFPI functions to find and dereference plugin variables
* Renamed SFPI name-access functions to be less confusing
* Fixed broken sfpi__import()
* Finished style guide on naming, capitalization and namespacing
* Minor fixes and cleanups
Overview of changes:
* Switched to in-line `do`/`then` style
Many projects actually use it already.
* Updated docs and meta-data after moving from GitHub to pagure.io
* Updated docs after mofing COPR repos
* Added VCS Browser URL to specfile
* Codebase maintenance and cleanups
Overview of changes:
* Added command to list imported modules
Useful for introspection, eg. reporting versions of imported
modules.
* Worked around sfdoc problem with old /usr/bin/man
Turns out we can use man 1.x if we save file to temp and pass it as
single argument.
* Codebase maintenance
Overview of changes:
* Added sfpi.sh, Shellfu's favorite plugin interface
One way to make Shellfu-based modules and applications a bit more
modular.
* sfdoc will now accept function or variable name instead of MODULE
New -O switch changes meaning of MODULE to mean function or
variable; sfdoc will then look it up in installed modules and act
as if the module name was provided. Works for default manpage mode
as well as export modes (sfdoc always acts upon whole module, not
just the object.)
* Improved several usage messages
* Codebase maintenance
Overview of changes:
* Added isa.sh, a Shellfu/sh containing few simple validation helpers
* Fixed copy/paste error in shellfu-bash-exit %description
* Re-tuned notification urgencies
Increased urgencies for think(), warn() and mkusage(). Applications
should be either silent (by default or by option) or the messages
should count.
* sfdoc will now use colon to separate module and object in listing
Use of dot can be confusing as the line might look like filename or
a reference in some object-oriented languages.
* Update TFKit to v0.0.16
A significant change is that new TFKit uses term 'relics' rather
than 'artifacts' for general test results. This has been reflected
in local .gitignore.
* Removed grep leak from sfdoc
* Updated MKit to v0.0.29
Overview of changes:
* Many docstrings fixed, updated and added
* Fixed problems with POD encoding
* sfdoc now supports --which and -s|--src to help with debugging
* Improved error handling in hidden object filtering in sfdoc.sh
* sfembed will not force debugging mode anymore
* sfembed now removes its temp directory
* Codebase maintenance
Overview of changes:
* Revamped version directive format
This is a backwards-incompatible change, but is an exception because
(well, we're in 0.x.y phase and) it's only used in manpage
generator, so at worst people will lose the version info from
manpage footer. Also it hasn't been around for a long.
* Moved most sfdoc code to separate module
Yet another module has been born. This enables better design, reuse
and also easier testing.
* mkusage will not force empty line before indent mode (-i)
This way it's much more useful; one can produce much more concise
listings (*and* have them indented, *and* read them from array).
* Added -o|--only option to sfdoc for single-directory sets
* sfdoc will now correctly report module version (not Shellfu version)
* sfpath now supports -V, short version of --version-semver
* sfpath now makes sure to sort items consistently under C locale
* Added __usage sub-command to shellfu()
* Moved perl dependency correctly to shellfu-bash-inigrep
* Fixed bad shebang line (thx lintian)
* Solved or muted last ShellCheck issues
* Revised coding style an docstrings
* Codebase maintenance
Overview of changes:
* Override SHELLFU_INCLUDE in test runs
Otherwise modules are actually loaded from system, if they are
installed.
* SHELLFU_PATH now has preference over SHELLFU_INCLUDE
This should have been all along; SHELLFU_PATH would not be able to
force a particular module version in cases like testing.
* Added shellfu() docstring
* Minor co
* Improved and updated test header
Overview of changes:
* Re-packaged with better granularity
Having multi-module packages such as 'shellfu-core' limits dependency
control on user part. Additionally, after splitting packages
to one-per-module, we could move some of modules to 'sh' space,
ie. increase their usability.
* Removed old 'sync' module
Having one "wait" function does not really justify its presence in
the main shellfu repo; if anyone needs it anyway, I can provide it
as a separate package.
* Renamed binaries shellfu-doc and shellfu-get to sfpath and sfdoc
Both were kind of hard to type. "shellfu-get" was a bit too generic
given that it really only prints path. Also 'sfdoc' resembles other
doc viewers such as 'perldoc' and 'pydoc'.
* Moved sfdoc to main package
sfdoc can be useful everywhere Shellfu style is used; not just in
Shellfu modules.
* Moved packages to /usr space
Eventually, if packages should reach distributions, they should be
there anyway. Also it makes it easier to use Shellfu in
environments where /usr/local/bin might be missing on PATH (eg. cron
on debian).
* Improved and cleaned up lot of meta-data
From SPEC file to debian directory to mkit.ini, there have been many
changes in meta-data.
* Excluded shellfu_import test from Debian build time
This test cannot succeed because it relies on shell features ouside
POSIX that Debian's minimalistic dash does not implement. The test
will have to be rewritten; the issue is tracked here:
https://github.com/AloisMahdal/shellfu/issues/1
* Added 'version' sub-command to shellfu()
Now shellfu() function can report version of a Shellfu module.
Versioning is not mandatory but can be useful for module unit tests
to provide more rich reports. (E.g. TF_HEADER in external module
shellfu-bash-saturnin makes use of this)
* Refactored shellfu() a bit
* Made sfpath respect SHELLFU_DIR from environment
* Added warning in sfdoc if pod2man is missing
* Changed license to LGPLv2
* Fixed pretty.debug() bug that would hide caller name
* Fixed test bug with debug -v and Bash 4.4+
* Refactored tests a bit
* Added build-time tests
* Codebase maintenance
Overview of changes:
* Improved and updated README.md
Actually, the main reason for this update is to make new README
visible sooner, since it's been significantly improved. Most
important change is that the introduction has been moved to own
document. Also Installation section has been clarified. That and
some tiny fixes.
* Made minor visual improvement to mkusage()
* Added tests for mkusage() '-w' option
* Made SHELLFU_IMPORTED into an internal variable
* Added some ShellCheck exceptions
Overview of changes:
* Added workaround to shellfu_api test only against own modules
* Added option to append clarifying message to usage messages
Usage messages can now be made more useful by warning user what
exactly was wrong. Warnings will appear after the usage message
and before command exits and decorated with 'bad usage: ' prefix;
this is so that user will be more likely notice and understand them.
Note that this could be done earlier by using -E option and adding
the warning yourself inside usage() function, but the -w option lets
you keep usage() very simple and yet leads to more consistency.
* Codebase maintenance
* Refactored charmenu.sh
The docstring was not very useful so this it was overhauled
completely. Also more proper coding style is now in place.
* `shellfu` command will now de-duplicate $SHELLFU_PATH
shellfu init function, and by extension some shellfu-doc modes,
would list a module twice if its path ended up twice on
SHELLFU_PATH. That should no longer happen.
* Added mdfmt, a Markdown formatting helper
This module consists of single function with aim to help generate
Markdown text from your scripts.
* Updated and improved usage-related pretty.sh docstrings
* Fixed PRETTY_DEBUG_EXCLUDE double double-underscore bug
PRETTY_DEBUG_EXCLUDE would not work properly on functions like
`foo__bar__baz`, where the second double-underscore would make it
think module name was `foo__bar`, when in fact it's `foo`.
* Added journald logging module for pretty.sh
Using systemd-cat, this module employs journald as way of
communicating with user.
* Added shellfu-sh pseudo-package
On RPM-based distributions, somebody has to own 'include-sh'
directory. Also having shellfu-FOO package helps module packages
declare their "Shellfu flavor" (ie. `Requires: shellfu-sh` sends
clear message that a module is "POSIX-oriented".
* Updated packaging and meta-data
Files responsinle for packaging and versioning meta-data have been
altered to catch up with newer versions of MKit. This should have
almost no effect on package (only 'effect' I can think of is a purely
decorative change in `--version` output).
* Fixed typo in SPEC file
SPEC file claimed that Shellfu is distributed under LGPL2, while
it's actually GPL3. (We should consider changing it to LGPL2,
though.)
* Replaced LICENSE file with Markdown version
Because Markdown is cooler. For a more serious reason, MKit now has
*newstub* script, which can help regenerate MKit structure including
LICENSE file, and this script can only do Markdown (because Markdown
is cooler). TL;DR: It will be less hassle to keep MKit stuff fresh.
* Updated emnedded TFKit (v0.0.14) and MKit (v0.0.21)
Overview of changes:
* Fixed bug in function doc exporting that caused all function
docstrings be treated as verbatim text in POD
* Fixed case when shellfu-doc was called with non-existent file
* Added --encoding option to shellfu-doc
* Added inigrep test for special chars in section/key/value
* Added validation of section/key names to inigrep
* Build scripts maintenance
Overview of changes:
* Added possibility to set self name for mkusage() explicitly
* pretty/notify now won't spam with one notification per line
* Fixed pretty/html format for die()
* Code maintenance and cleanup
Overview of changes:
* Split tools to shellfu-dependency to get rid of (broken) cyclic
dependency.
Actually shellf-doc and shellfu-embed both make use of pretty.sh, so
we could have either cyclic package dependency or -devel package.
The latter seems more appropriate.
* Updated bash completion
Turns out that since shellfu-doc uses pretty.sh (and makes good use of
it), what we had was broken cyclic dependency.
shellfu-doc and shellfu-embed are useful mostly for developers, though,
so it's no shame to split them.
Overview of changes:
* Improved manpage generation: added --name option to override page
name and re-polished to look a bit more like traditional manpages
* Fixed an outdated test
Overview of changes:
* Breaking changes:
* Added support for shell-specific modules
shellfu() is now POSIX-compliant, and on init, will now detect
shell type (bash, sh) and use that later to decide where to look
for modules.
This means that all libraries are now placed under folders
named according to compatibility with bash, Bourne shell (POSIX)
or similar, and meaning of SHELLFU_INCLUDE changes from single
folder path to *prefix* to the separate shell-specific folders.
(SHELLFU_PATH, intended for library bundlers remains unchanged,
so other than deployment-related code should not be affected.)
This has also effect on file distribution in packages: lot of
stuff has moved under (previously "empty") *shellfu* package.
* Moved library exploration to shellfu-doc
Inerface (and code) for features like listing available modules or
showing documentation has been moved to shellfu-doc. shellfu-get
is now just a fixed string printer.
* Hid "private" functions / modules in listings
By default, shellfu-doc will not list functions and modules
starting with underscore.
You can use `-a` option to show all, but remember that these are
*not* intended for use outside module files. In other words,
these interfaces are not supported and can (and will) be removed
or changed as needed *without any notice*.
* Rewrote inigrep to reduced version with new API
inigrep API has started to show its age, making trivial things
less than trivial and corner cases standing in the way. Also,
from design perspective, it did too much; in particular, the
feature to guess filename from key path was really outside the
original scope.
This file-guessing feature has been thus moved to saturnin,
which has been designed to deal with things like that (and after
all was the only user of this inigrep feature); it should have
been there all along.
inigrep ended up with simpler, easier to grasp API.
* Renamed most globals
Module globals now don't have the `SHELLFU_` prefix. This
renames basically all module globals.
Also, SHELLFU_DEBUG_EXCLUDE, SHELLFU_DEBUG and SHELLFU_VERBOSE
now belong to pretty.sh, as they should be, so now it's
PRETTY_DEBUG, PRETTY_VERBOSE and PRETTY_DEBUG_EXCLUDE.
* Switched all read(1) calls to raw mode (won't interpret backslash
escape sequences)
read(1) calls won't interpret sequences such as `\n`, `\t` or
backslash at the end of a line. This mode (default for read(1)
is counter-intuitive and confusing; and should be almost never
used.
* Rewrote shellfu-doc to clean up CLI and improve usability; new
features include reading as manpage, export in Markdown, POD and
man and support for module ("main") docstrings and variable
docstrings.
* Revamped mkusage backend with focus on more rich but still
simple and consistent usage messages.
* Hid few minor APIs
Namely, globals `PRETTY_COLOR_*` from _pretty_color.sj and
sub-command try_import from `shellfu()`. None of these were
documented or easy to reach, so this should not break anything.
* Documentation:
* Added proper README.md
Shellfu at last has something that (albeit a bit long) can be
called a proper README without too much shame. It contains some
basic story of Why, installation instructions as well as tiny
tutorial to get people started.
* Added some missing sections to Shellfu Style Guide.
The guide is now somehow complete-ish; it does not yet cover eg.
the namespacing, but I'm not sure that should be even included.
* Added few missing docstrings
Rather arbitrarily, but working towards goal of having all
modules documented. (New shellfu-doc sure is something we want
to be able to show off)
* Removed old documentation, examples, guidelines and notes.
Most of these were either confusing, incomplete or obsolete;
the new README (and shellfu-doc) serve much better purpose.
* Core library:
* Added support for Bash variable types in pretty.debug -v
* Improved caller detection in pretty.sh
* Added notify mode to pretty.sh (uses notify-send)
* Fixed bug when empty lined were excluded from debug_pipe()
* Fixed bug when SHELLFU_DEBUG_EXCLUDE would affect also think(),
warn() and die()
* Improved shellfu() internal debug
* Maintenance:
* Cleaned up style guide
* Updated test suite
* Minor performance improvements
* Minor cleanups
* Cleaned up and improved style of supporting scripts
* Improved packaging
* Infrastructure maintenance