nicer print_usage
git-svn-id: https://projects.brucker.ch/su4sml/svn/infsec-import/trunk/src/su4sml@6201 3260e6d1-4efc-4170-b0a7-36055960796d
This commit is contained in:
parent
849d9fdded
commit
7f6370d1ad
|
@ -70,85 +70,100 @@ type cartridge = {lang : string, (* identifier (for input) *)
|
||||||
|
|
||||||
(* maybe these should be declared by the individual cartridges and simply concatenated here? *)
|
(* maybe these should be declared by the individual cartridges and simply concatenated here? *)
|
||||||
(* FIXME: add long descriptions *)
|
(* FIXME: add long descriptions *)
|
||||||
val cartridge_list = [ {lang = "base",
|
val supported_cartridges = [
|
||||||
name = "Base Cartridge",
|
(* Base Cartridge *)
|
||||||
description = "",
|
{lang = "base",
|
||||||
recommended = false,
|
name = "Base Cartridge",
|
||||||
generator = Base_Gcg.generate,
|
description = "",
|
||||||
parser = RepParser.readFile,
|
recommended = false,
|
||||||
template = "base.tpl"},
|
generator = Base_Gcg.generate,
|
||||||
{lang = "c#",
|
parser = RepParser.readFile,
|
||||||
name = "C# Cartridge",
|
template = "base.tpl"},
|
||||||
description = "",
|
(* C# Cartridge *)
|
||||||
recommended = true,
|
{lang = "c#",
|
||||||
generator = CSharp_Gcg.generate,
|
name = "C# Cartridge",
|
||||||
parser = RepParser.readFile,
|
description = "",
|
||||||
template = "C#.tpl"},
|
recommended = true,
|
||||||
{lang = "c#_secure",
|
generator = CSharp_Gcg.generate,
|
||||||
name = "C# SecureUML Cartridge",
|
parser = RepParser.readFile,
|
||||||
description = "",
|
template = "C#.tpl"},
|
||||||
recommended = true,
|
(* C# SecureUML Cartridge *)
|
||||||
generator = CSharpSecure_Gcg.generate,
|
{lang = "c#_secure",
|
||||||
parser = RepParser.readFile,
|
name = "C# SecureUML Cartridge",
|
||||||
template = "C#_SecureUML.tpl"},
|
description = "",
|
||||||
{lang = "c#_net1",
|
recommended = true,
|
||||||
name = "C# .NET1 Cartridge",
|
generator = CSharpSecure_Gcg.generate,
|
||||||
description = "",
|
parser = RepParser.readFile,
|
||||||
recommended = true,
|
template = "C#_SecureUML.tpl"},
|
||||||
generator = CSharp_NET1_Gcg.generate,
|
(* C# .NET1 Cartridge *)
|
||||||
parser = RepParser.readFile,
|
{lang = "c#_net1",
|
||||||
template = "C#.pl"},
|
name = "C# .NET1 Cartridge",
|
||||||
{lang = "c#_net1_secure",
|
description = "",
|
||||||
name = "C# .NET1 SecureUML Cartridge",
|
recommended = true,
|
||||||
description = "",
|
generator = CSharp_NET1_Gcg.generate,
|
||||||
recommended = true,
|
parser = RepParser.readFile,
|
||||||
generator = CSharpSecure_NET1_Gcg.generate,
|
template = "C#.pl"},
|
||||||
parser = RepParser.readFile,
|
(* C# .NET1 SecureUML Cartridge *)
|
||||||
template = "C#_SecureUML.tpl"},
|
{lang = "c#_net1_secure",
|
||||||
{lang = "c#_sm",
|
name = "C# .NET1 SecureUML Cartridge",
|
||||||
name = "C# StateMachine Cartridge",
|
description = "",
|
||||||
description = "",
|
recommended = true,
|
||||||
recommended = true,
|
generator = CSharpSecure_NET1_Gcg.generate,
|
||||||
generator = CSharpSM_Gcg.generate,
|
parser = RepParser.readFile,
|
||||||
parser = RepParser.readFile,
|
template = "C#_SecureUML.tpl"},
|
||||||
template = "C#_SM.tpl"},
|
(* C# StateMachine Cartridge *)
|
||||||
{lang = "java",
|
{lang = "c#_sm",
|
||||||
name = "Java Cartridge",
|
name = "C# StateMachine Cartridge",
|
||||||
description = "",
|
description = "",
|
||||||
recommended = true,
|
recommended = true,
|
||||||
generator = Java_Gcg.generate,
|
generator = CSharpSM_Gcg.generate,
|
||||||
parser = RepParser.readFile,
|
parser = RepParser.readFile,
|
||||||
template = "java.tpl"},
|
template = "C#_SM.tpl"},
|
||||||
{lang = "junit",
|
(* Java Cartridge *)
|
||||||
name = "Junit Cartridge",
|
{lang = "java",
|
||||||
description = "",
|
name = "Java Cartridge",
|
||||||
recommended = true,
|
description = "",
|
||||||
generator = Junit_Gcg.generate,
|
recommended = true,
|
||||||
parser = RepParser.readFile,
|
generator = Java_Gcg.generate,
|
||||||
template = "junit.tpl"},
|
parser = RepParser.readFile,
|
||||||
{lang = "java_ocl",
|
template = "java.tpl"},
|
||||||
name = "Java OCL Cartridge",
|
(* Junit Cartridge *)
|
||||||
description = "",
|
{lang = "junit",
|
||||||
recommended = true,
|
name = "Junit Cartridge",
|
||||||
generator = Java_Ocl_Gcg.generate,
|
description = "",
|
||||||
parser = RepParser.readFile,
|
recommended = true,
|
||||||
template = "java_ocl.tpl"},
|
generator = Junit_Gcg.generate,
|
||||||
{lang = "securemova",
|
parser = RepParser.readFile,
|
||||||
name = "SecureMOVA Cartridge",
|
template = "junit.tpl"},
|
||||||
description = "",
|
(* Java OCL Cartridge *)
|
||||||
recommended = false,
|
{lang = "java_ocl",
|
||||||
generator = SecureMova_Gcg.generate,
|
name = "Java OCL Cartridge",
|
||||||
parser = RepParser.transformXMI o XmiParser.readFile,
|
description = "",
|
||||||
template = "securemova.tpl"}]:cartridge list
|
recommended = true,
|
||||||
|
generator = Java_Ocl_Gcg.generate,
|
||||||
|
parser = RepParser.readFile,
|
||||||
|
template = "java_ocl.tpl"},
|
||||||
|
(* SecureMOVA Cartridge *)
|
||||||
|
{lang = "securemova",
|
||||||
|
name = "SecureMOVA Cartridge",
|
||||||
|
description = "",
|
||||||
|
recommended = false,
|
||||||
|
generator = SecureMova_Gcg.generate,
|
||||||
|
parser = RepParser.transformXMI o XmiParser.readFile,
|
||||||
|
template = "securemova.tpl"}]:cartridge list
|
||||||
|
|
||||||
|
|
||||||
val supported_languages = map #lang cartridge_list
|
val recommended_cartridges = List.filter #recommended supported_cartridges
|
||||||
val recommended_languages = map #lang (List.filter #recommended cartridge_list)
|
|
||||||
val string_of_languages = String.concatWith " | " recommended_languages
|
|
||||||
|
|
||||||
fun is_supported lang = ListEq.includes supported_languages lang
|
val supported_languages = map #lang supported_cartridges
|
||||||
|
val recommended_languages = map #lang recommended_cartridges
|
||||||
|
|
||||||
fun cartridge_of lang = Option.valOf (List.find (fn c => #lang c = lang) cartridge_list)
|
fun is_supported lang = ListEq.includes supported_languages lang
|
||||||
|
fun is_recommended lang = ListEq.includes recommended_languages lang
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fun cartridge_of lang = Option.valOf (List.find (fn c => #lang c = lang) supported_cartridges)
|
||||||
|
|
||||||
fun generateWithTemplate xmi_file lang template =
|
fun generateWithTemplate xmi_file lang template =
|
||||||
let val cart = cartridge_of lang
|
let val cart = cartridge_of lang
|
||||||
|
@ -172,8 +187,17 @@ fun generateWithCart xmi_file (cart:cartridge) =
|
||||||
fun generateFromModel model lang = genFromModelWithCart model (cartridge_of lang)
|
fun generateFromModel model lang = genFromModelWithCart model (cartridge_of lang)
|
||||||
fun generate xmi_file lang = generateWithCart xmi_file (cartridge_of lang)
|
fun generate xmi_file lang = generateWithCart xmi_file (cartridge_of lang)
|
||||||
|
|
||||||
fun print_usage () = print ("usage: codegen <xmi_file> <language>\n"^
|
fun print_usage () = let val language_names = map #name recommended_cartridges
|
||||||
"\tlanguage = "^string_of_languages ^"\n")
|
val string_of_languages = String.concatWith " | " recommended_languages
|
||||||
|
val desc_of_languages = map (fn (l,n) => l^":\t"^n)
|
||||||
|
(ListPair.zip (recommended_languages,
|
||||||
|
language_names))
|
||||||
|
in
|
||||||
|
print ("usage: codegen <xmi_file> <language>\n"^
|
||||||
|
"where <language> = "^string_of_languages ^"\n\n"^
|
||||||
|
"supported languges are:\n"^
|
||||||
|
String.concatWith "\n" desc_of_languages^"\n")
|
||||||
|
end
|
||||||
|
|
||||||
fun main (_,[xmi_file,lang]) = ((if is_supported lang
|
fun main (_,[xmi_file,lang]) = ((if is_supported lang
|
||||||
then generate xmi_file lang
|
then generate xmi_file lang
|
||||||
|
|
Loading…
Reference in New Issue