#!/bin/sh # vm is a tool to manage virtual machines. vm_version='vm-0.1' unset CDPATH export LC_ALL=C IFS=' ' add() { usage 'add name' 'Add a new VM' && return echo 'not implemented yet' } del() { usage 'del name' 'Delete a VM' && return echo 'not implemented yet' } die() { echo "$0: fatal: $@" >&2; exit 1; } help() { usage 'help' 'Print this help text' && return printf "$vm_version\nUsage: vm command [options] [args]\n" Opth=1; for c in $Cmdlist; do $c; done } info() { usage 'info name' 'Print informations on a VM' && return echo 'not implemented yet' } list() { usage 'list' 'list VMs' && return echo 'not implemented yet' } start() { usage 'start name' 'Start a VM' && return echo 'not implemented yet' } stop() { usage 'stop name' 'Stop a VM' && return echo 'not implemented yet' } usage() { [ "$Opth" ] && printf " %-34s %s\n" "$1" "$2"; } version() { usage 'version' 'Print version' && return echo "$vm_version" } # Main starts here. Cmdlist='add del info help list start stop version' [ "$1" ] && C=$1 && shift 1 || { help; exit 1; } for c in $Cmdlist do case $c in ($C) cmd=$c; break;; ($C*) [ "$cmd" ] && die "ambiguous command $C" || cmd=$c;; esac done [ "$cmd" ] || die "no command \"$C\"" && $cmd "$@"