Implementation
IsiSetup is implemented as a set of Bash scripts.
Why Bash
Bash is a Posix compatible shell. As such it is well suited to script the execution of applications. Since IsiSetup started out as simple sequences of darcs calls, Bash was the language of choice. IsiSetup has since grown in code quantity quite significantly. There is now much more flow control and output code in IsiSetup, things that Bash isn't king in. But as the main functionality is still to call the underlying Git/Cogito revision control tools, we'll stay with Bash.
Shell Libraries
As there are quite a number of scripts, common code is moved into a few shel llibraries. They are located in /usr/share/isisetup/. Current libraries are:
lib_isisetup.sh: IsiSetup helper functions e.g. to check if a directory is a module, extract the module type etc.
- lib_isisetup_scm.sh: Simple revision control abstraction API. It shields Git/Cogito calls from the main isisetup scripts.
- lib_isisetup_log.sh: Some simple logging functions, providing colored output
lib_isisetup_debian.sh: Functions to work with Debian packages. While IsiSetup is only supporting Debian for now, there's some abstraction to ease further porting.
- lib_isisetup_tmp.sh: Functions to request temporary files and directories.