Posted to tcl by evilotto at Mon Mar 18 18:40:15 GMT 2013view pretty

#!/usr/bin/tclsh
package require sqlite3

sqlite3 db directory.db3

set dbvalues {
  firstname "First"
  lastname "last" 
  gender     "Unspecified"
  uuid          "1 1A 2B"
}

namespace eval ::commands {
  proc add {} {
    dict with ::dbvalues {
      db eval {INSERT INTO contacts(firstName, lastName, gender, contactUUID) VALUES($fistname, $lastname, $gender, $uuid)}
    }
  }

  # warning: defining a "list" command can be dangerous
  proc list {} {
    db eval {SELECT firstName, lastName, gender, dateOfBirth AS DOB, contactUUID AS UUID FROM contacts} values {
      parray values
      puts ""
    }
  }

}

set command [lindex $argv 0]
foreach {flag value} [lrange $argv 1 end] {
	switch -exact -- $flag {
		-f - --first-name {dict set dbvalues firstname $value}
		-m - --middle-name {dict set dbvalues middlename $value}
		-l - --last-name {dict set dbvalues lastname $value}
		-g - --gender {dict set dbvalues gender $value}
		default {error "Unkown flag! Please modify the command."}
	}
}

::commands::$command