| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | 
							- #!/bin/bash
 - #shellcheck disable=SC2034
 - # MKit - simple install helper
 - # See LICENSE file for copyright and license details.
 - 
 - 
 - #
 - # Add 'async' tag to build meta-data (true|false)
 - #
 - # If 'true' and during the version computation git branch is behind
 - # or ahead its remote counterpart, build meta-data (part after '+'
 - # sign) will contain word 'async'.
 - #
 - # This is to warn testers and developers when build was done after
 - # automatic rebase done by CI system.
 - #
 - # Defaults to 'true'.
 - #
 - MKIT_ASYNC=${MKIT_ASYNC:-true}
 - 
 - #
 - # Bump size (for vbump_? and release_?)
 - #
 - MKIT_BUMPSIZE=${MKIT_BUMPSIZE:-1}
 - 
 - #
 - # Debug mode (true|false)
 - #
 - MKIT_DEBUG=${MKIT_DEBUG:-false}
 - 
 - #
 - # Default deploy mode for files
 - #
 - MKIT_DEFAULT_MODE="644"
 - 
 - #
 - # Dry mode (true|false)
 - #
 - # Set to true to not install anything. Implies MKIT_DEBUG.
 - #
 - MKIT_DRY=${MKIT_DRY:-false}
 - 
 - #
 - # Is MKit running in CI (true|false)
 - #
 - # If MKit is running in CI, it's recommended to set this to 'true'
 - # to enable one or more useful warnings.
 - #
 - # Defaults to 'false'.
 - #
 - MKIT_IN_CI=${MKIT_IN_CI:-false}
 - 
 - #
 - # Path to mkit.ini
 - #
 - MKIT_INI=${MKIT_INI:-mkit.ini}
 - 
 - #
 - # Limit ini expansion depth
 - #
 - # To avoid endless loops, this value is subtracted each
 - # time ini() expands a reference; when zero is reached,
 - # no more expansions happen.
 - #
 - MKIT_INI_EXPAND=2
 - 
 - #
 - # Path to MKit local config and temp
 - #
 - # Typically hidden in project root, here MKit can
 - # save its temporary lists.
 - #
 - MKIT_LOCAL=${MKIT_LOCAL:-.mkit}
 - 
 - #
 - # Paths to MKit plugins
 - #
 - # Colon-separated list of paths where MKit will recognize
 - # plug-ins.
 - #
 - MKIT_PLUGINPATH=${MKIT_PLUGINPATH:-$MKIT_DIR/plugins:$MKIT_LOCAL/plugins:$MKIT_DIR-plugins}
 - 
 - #
 - # Package name
 - #
 - # Used as base for tarball and in some default macros.
 - #
 - MKIT_PROJ_PKGNAME=""
 - 
 - #
 - # Add time-based ordinal tag to SemVer build data?
 - #
 - # Can be 'none', 'ctime' or 'btime'.
 - #
 - # If 'ctime', devel builds have also timestamp-based tag in format of
 - # `t%Y%m%d%H%M%S`, that is, a small character 't' followed by timestamp
 - # without non-digit characters.  The timestamps are in UTC, ie. timezones
 - # need not apply.  'btime' has the same format, except that it's derived
 - # from build time, while 'ctime' is from last commit's commit date.
 - #
 - # This helps with deploying development builds where packaging system
 - # is not SemVer-compliant and makes it hard to install arbitrary version.
 - # For example, old yum version (as of RHEL-6) will not let you install
 - # version that it deems older than is installed, making it hard to
 - # continually upgrade during active development.  While packaging
 - # systems have their own rules (and SemVer says both versions should be
 - # considered same) this tag will make it more likely to "win" the build
 - # you made later.
 - #
 - # Note that this does not affect clean builds (ie. builds from clean
 - # repo with HEAD corresponding to latest version tag.).
 - #
 - # Also note that 'btime' makes the version non-deterministic: merely
 - # initiating the build a second later will result in different version.
 - #
 - MKIT_TSTAMP=${MKIT_TSTAMP:-ctime}
 - 
 - #
 - # Upstream hash to add to build meta-data
 - #
 - # If set to non-empty string, it must represent a short-hash of
 - # upstream commit on which local branch was automatically rebased
 - # before build.
 - #
 - # If CI system automatically rebases branches, the resulting short-hash
 - # (appearing with `g` prefix) will be meaningless, and might be
 - # misleading -- testers and developers might see the build as coming
 - # from an unknown source.
 - #
 - # In that case, it's strongly recommended for CI to set this to the
 - # original pushed short-hash before the rebase.  Resulting meta-data
 - # will contain both hashes, allowing users to pair test results with
 - # original push.  The appearance of the extra hash will also warn
 - # about the fact that the rebase took place.
 - #
 - # For example, if developer pushed branch 'foo' that pointed to
 - # `5faf551`, and CI system rebased it, altering the HEAD to
 - # `bb4baa4`, by default the version would look like:
 - #
 - #     0.0.1+t202103011224.foo.gbb4baa4
 - #
 - # This would be meaningless for testing, as the `bb4baa4` hash is
 - # completely temporary and unknonwn.
 - #
 - # However, a conformant CI should set `MKIT_UPSTREAM=5faf551`, which
 - # will result in version like:
 - #
 - #     0.0.1+t202103011224.foo.gbb4baa4.u5faf551
 - #
 - # which still has technically correct git hash after `g`, but contains
 - # the original hash as pushed after `u`.
 - #
 - # Defaults to empty value.
 - #
 - MKIT_UPSTREAM=${MKIT_UPSTREAM:-}
 - 
 - #
 - # This MKit version
 - #
 - MKIT_VERSION=0.1.3
 
 
  |