aepromptcmd - change prompt color by change state
The bash(1) shell has an interesting property: If the PROMPT_COMMAND
vaiable is set, the value is executed as a command prior to issuing
each primary prompt. (Actually, it can be a seties of semicolon
In order to change the text back to normal, the PS1 variable needs to
have "\33[0m" somewhere near the end, otherwise things can get a little
difficult to read. If you are using bash(1), you need to let it know
these are unprintable (like this: "\[\33[0m\]") or it messes up command
The aepromptcmd command is used to set the color of the prompt, based
on the state of the current change. This is an idea taken from Kent
Beck’s Test Driven Development book. If the change is in the being
developed or being integrated state and it needs to be built, the
prompt is red; if it is built but it needs to be tested, the prompt is
magenta, otherwise it is green.
Here is a short script you can put in your .bashrc file to turn on
if [ "$PS1" ] then
case "$PROMPT_COMMAND" in
"" ) PROMPT_COMMAND="aepromptcmd" PS1="$PS1^[[0m"
export PS1 fi
Note that this usually leaves your prompt default (black) when you are
not somewhere inside a development directory.
The aepromptcmd command uses the ANSI color escape sequences. It
really should to use the tigetstr(3) function from terminfo(3) to do
this in a terminal independent way. Code contributions welcome.
The following options are understood:
This option may be used to specify a particular change within a
project. See aegis(1) for a complete description of this
This option may be used to select the project of interest.
When no -Project option is specified, the AEGIS_PROJECT
environment variable is consulted. If that does not exist, the
user’s $HOME/.aegisrc file is examined for a default project
field (see aeuconf(5) for more information). If that does not
exist, when the user is only working on changes within a single
project, the project name defaults to that project. Otherwise,
it is an error.
This option may be used to obtain more information about how to
use the aepromptcmd program.
By default error messages are supressed, so that the prompt
will be normal when you are outside an Aegis work area. Use
this option to tuen error messages back on.
See also aegis(1) for options common to all aegis commands.
All options may be abbreviated; the abbreviation is documented as the
upper case letters, all lower case letters and underscores (_) are
optional. You must use consecutive sequences of optional letters.
All options are case insensitive, you may type them in upper case or
lower case or a combination of both, case is not important.
For example: the arguments "-project, "-PROJ" and "-p" are all
interpreted to mean the -Project option. The argument "-prj" will not
be understood, because consecutive optional characters were not
Options and other command line arguments may be mixed arbitrarily on
the command line, after the function selectors.
The GNU long option names are understood. Since all option names for
aepromptcmd are long, this means ignoring the extra leading ’-’. The
"--option=value" convention is also understood.
The aepromptcmd command will exit with a status of 1 on any error. The
aepromptcmd command will only exit with a status of 0 if there are no
See aegis(1) for a list of environment variables which may affect this
command. See aepconf(5) for the project configuration file’s project_
specific field for how to set environment variables for all commands
executed by Aegis.
aepromptcmd version 4.24.3.D001
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Peter
The aepromptcmd program comes with ABSOLUTELY NO WARRANTY; for details
use the ’aepromptcmd -VERSion License’ command. This is free software
and you are welcome to redistribute it under certain conditions; for
details use the ’aepromptcmd -VERSion License’ command.
Peter Miller E-Mail: email@example.com
/\/\* WWW: http://www.canb.auug.org.au/~millerp/