public static void Main(string[] args) { new Mono.Terminal.LineEditor("#force-mono.terminal-assembly-load#"); BootClojureAndNostrand(); if (args.Length > 0) { AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolver.Resolve; if (File.Exists("project.edn")) { var projectEdn = EdnReader.readString(File.ReadAllText("project.edn"), PersistentHashMap.EMPTY); RT.var("nostrand.core", "establish-environment").invoke(projectEdn); } RT.PostBootstrapInit(); var input = ReadArguments(args); var inputString = input.first().ToString(); if (inputString.IndexOf("./", StringComparison.InvariantCulture) == 0) { inputString = inputString.Substring(2); } Var.pushThreadBindings(RT.mapUniqueKeys(RT.CurrentNSVar, Namespace.find(Symbol.intern("nostrand.core")))); try { Var fn = FindFunction(inputString); if (fn != null) { //referAll.invoke(fn.Namespace, nostrandCore); fn.applyTo(input.next()); return; } if (File.Exists(inputString)) { try { IFn mainFn = FindFunction(FileToRelativePath(inputString) + "/-main"); if (mainFn != null) { mainFn.applyTo(input.next()); } return; } catch (FileNotFoundException) { } } Terminal.Message("Quiting", "could not find function or file named `" + args[0] + "'", ConsoleColor.Yellow); } finally { Var.popThreadBindings(); } } else { Terminal.Message("Nostrand", Version(), ConsoleColor.White); // Terminal.Message("Mono", GetRuntimeVersion(), ConsoleColor.White); Terminal.Message("Clojure", RT.var("clojure.core", "clojure-version").invoke(), ConsoleColor.White); } }