#! /usr/bin/env fan
//
// Copyright (c) 2009, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 1 Dec 09 Brian Frank Creation
//
using util
**
** Illustrates how to use AbstractMain.
**
class DemoMain : AbstractMain
{
@Opt { help = "Integer option" }
Int int := 123
@Opt { help = "String option" }
Str? str
@Opt { help = "Date option" }
Date? date
@Opt { help = "Bool debug option"; aliases=["v"] }
Bool debug := false
@Opt { help = "Use Opt suffix to avoid naming conflicts" }
Bool logOpt := false
@Arg { help = "1st argument" }
File? arg1
@Arg { help = "2nd argument" }
Str? arg2
@Arg { help = "List argument" }
Str[]? varArg
override Int run()
{
echo("DemoMain.run")
echo(" log = $log")
echo(" homeDir = $homeDir")
this.typeof.fields.each |f|
{
if (f.isStatic) return
echo(" ${f.name.padr(8)} = ${f.get(this)}")
}
return 0
}
}