#!/bin/bash
# dev/package/cli - package CLI
set -e
lib_load 'dev/package/load'
######
# Package CLI
package_cli_dispatch() { lib_cmd_dispatch package_cli "$@"; }
package_cli_usage() {
cat <<USAGE
<cmd> ...
Package Commands:
contrib ... Package source dependency commands
dist ... Package distribution commands
version ... Package version commands
release ... Package release commands
publish ... Package publishing commands
install ... Package installation commands
Package Introspection Commands:
config ... Package configuration commands
sym ... Package symbol commands
USAGE
}
######
# Package Symbol Commands
package_cli_sym() { cmd_dispatch "$@"; }
package_cli_sym_usage() {
cat <<USAGE
...
Source Code Symbol Commands:
all Prints all global symbols
conf [<file>+] Prints tool/library setting symbols
vars [<file>+] Prints function symbols
funcs [<file>+] Prints function symbols
rename <old> <new> [<suffix>] Renames a symbol in all package files
USAGE
}
package_cli_sym_all() {
package_cli_sym_vars
package_cli_sym_funcs
package_cli_sym_conf
}
package_cli_sym_vars() {
lib_load 'dev/package/search'
package_grep '^[a-z0-9_]+=' -nE | sed -e 's,^,$,' -e 's,=.*$,,'
}
package_cli_sym_funcs() {
lib_load 'dev/package/search'
package_grep '[a-z0-9_]+\(\)' -nE | sed -e 's,().*$,(),'
}
package_cli_sym_conf() {
warn "unimplemented"
}
# package_cli_sym_rename() - Renames a package symbol ($1) to a new name ($2)
# and commits the changes on the current branch.
package_cli_sym_rename() {
has_args 2 "$@"
lib_load 'dev/package/edit'
package_symbol_rename "$@"
git_add $(package_files_sources)
git_commit -m "rename symbol: $1 -> $2"
}
######
# Package Configuration and Distribution
package_cli_config() {
lib_load 'dev/package/config'
package_config "$@"
}
package_cli_dist() {
lib_load 'dev/package/dist'
package_dist "$@"
}
######
# Package Source Dependency CLI
package_cli_contrib() {
lib_load 'dev/package/contrib'
cmd_dispatch "$@"
}
package_cli_contrib_usage() {
cat <<USAGE
...
Package Source Dependency Commands:
list Lists external source dependencies
init Checks out source dependencies
update Updates all working copies
USAGE
}
package_cli_contrib_list() { for_each vcs_spec_info "${CONTRIB[@]}"; }
package_cli_contrib_init() { package_contrib_init "${CONTRIB[@]}"; }
package_cli_contrib_update() { package_contrib_update "${CONTRIB[@]}"; }
######
# Package Version CLI
package_cli_version() {
lib_load 'dev/package/versions'
if [ "$*" ]; then
cmd_dispatch "$@"
else
package_version_read
fi
}
package_cli_version_usage() {
cat <<USAGE
[<cmd> ...]
Package Version Commands:
[show] Prints the package version
bump (micro|minor|major) Bumps package version and commit
unbump Drops the version bump commit at HEAD
tag Creates a new version tag
Note: These are emergency commands. Use 'package release' instead.
USAGE
}
package_cli_version_bump() { package_version_bump "$@"; }
package_cli_version_unbump() { package_version_unbump "$@"; }
package_cli_version_tag() { package_version_tag "$@"; }
package_cli_version_untag() { package_version_untag "$@"; }
######
# Package Releases
package_cli_release() {
lib_load 'dev/package/release'
cmd_dispatch "$@"
}
package_cli_release_usage() {
cat <<USAGE
...
Package Release Cmmmands:
wizard <type> Creates a new package release
create Creates a new package release
finish <type> Finalizes the release
Low-Level Release Cmmmands:
ready Verifies the release is ready
lock Makes local release files read-only.
unlock Makes local release files writable.
undo Reverts a local release
USAGE
}
package_cli_release_wizard() { package_release_wizard "$@"; }
package_cli_release_create() { run package_release_create "$@"; }
package_cli_release_finish() { run package_release_finish "$@"; }
package_cli_release_undo() { package_release_undo "$@"; }
package_cli_release_lock() { package_release_unlock "$@"; }
package_cli_release_unlock() { package_release_unlock "$@"; }
package_cli_release_ready() {
local not=''
package_release_ready || not=' NOT'
local func=app_echo
[ -z "$not" ] || func=error
$func "$PKG: package is$not ready to release"
}
######
# Package Publishing
package_cli_publish() {
lib_load 'dev/package/publish'
cmd_dispatch "$@"
}
package_cli_publish_usage() {
cat <<USAGE
<cmd> [...]
Package Publishing Commands:
upload Uploads all release artifacts
finish [<branch>] Finalizes the release
Release Upload Commands:
tarballs [<version>] Pushes tarballs to release server
docs [<version>] Pushes documentation to release server
installers [<version>] Publishes package installers
Release Finalization Commands:
lock [<version>] Locks uploaded release files
links [<version>] Updates symbolic links for <branch>
announce [<version>] Publishes a release announcement
Release Cleanup Commands:
unlock [<version>] Unlocks uploaded release files
cleanup [<version>] Removes uploads from a failed release
USAGE
}
package_cli_publish_upload() { package_publish_upload "$@"; }
package_cli_publish_finish() { package_publish_finish "$@"; }
package_cli_publish_tarballs() { package_publish_tarballs "$@"; }
package_cli_publish_docs() { package_publish_docs "$@"; }
package_cli_publish_installers() { package_publish_installers "$@"; }
package_cli_publish_links() { package_publish_links "$@"; }
package_cli_publish_announce() { package_publish_announce "$@"; }
package_cli_publish_lock() { package_publish_lock "$@"; }
package_cli_publish_unlock() { package_publish_unlock "$@"; }
package_cli_publish_cleanup() { package_publish_abort "$@"; }
######
# Package Installation
package_cli_install() {
lib_load 'dev/package/install'
cmd_dispatch "$@"
}
package_cli_install_usage() {
cat <<USAGE
<cmd>
Package Installation Commands:
local <vers> Installs the package locally
remote <vers> <host>+ Installs on the remote host(s)
script ... Commands to generate installer scripts
USAGE
}
package_cli_install_local() { package_install_local "$@"; }
package_cli_install_remote() { package_install_remote "$@"; }
######
# Package Installer Scripts
package_cli_install_script() { cmd_dispatch "$@"; }
package_cli_install_script_usage() {
cat <<USAGE
<cmd>
Package Installer Script Commands:
local <vers> Prints local installer script
remote <vers> Prints remote installer script
network <vers> Prints network installer script
complete <vers> Prints all-in-one installer script
USAGE
}
package_cli_install_script_local() { package_install_script_local "$@"; }
package_cli_install_script_remote() { package_install_script_remote "$@"; }
package_cli_install_script_network() { package_install_script_net "$@"; }
package_cli_install_script_complete() { package_install_script_complete "$@"; }
Generated on Fri Jul 28 14:35:19 PDT 2017 by mcsh d14 v0.23.0.