public void ejecutar(Caché caché, Explorador expl, Dictionary <string, List <string> > args) { // Crea una instancia de Dafny Dafny dafny = new Dafny(args["dafnyexe"][0]); if (!dafny.Accesible) { AyudanteConsola.imprimirError("no se encuentra el ejecutable «" + args["dafnyexe"][0] + "»"); return; } // Verifica los archivos int correctos = 0; int erroneos = 0; foreach (UnidadDafny dfy in expl.Unidades) { InformeDafny informe = null; bool yaMostrado = false; if (!caché.Consulta(dfy.Uri, out informe)) { Console.WriteLine("Verificando " + dfy.Uri + "..."); informe = dafny.Verificar(dfy.Uri); caché [dfy.Uri] = informe; MostrarInforme(dfy, informe); yaMostrado = true; } if (informe.Resultado == InformeDafny.Result.CORRECTO) { correctos++; } else { erroneos++; if (!yaMostrado) { MostrarInforme(dfy, informe); } } } Console.WriteLine(); Console.WriteLine("{0} verificados correctamente, {1} erróneos.", correctos, erroneos); }
public void ejecutar(Caché caché, Explorador expl, Dictionary <string, List <string> > args) { int puerto = 0; if (!int.TryParse(args ["puerto"] [0], out puerto)) { AyudanteConsola.imprimirError("«" + args ["puerto"] [0] + "» no parece ser un número de puerto"); return; } string credencial = null; if (args.ContainsKey("acceso")) { credencial = args ["acceso"] [0]; if (!credencial.Contains(":")) { AyudanteConsola.imprimirError("«" + credencial + "» no sigue el formato usuario:clave"); return; } } ServidorWeb sw = new ServidorWeb(args["dafnyexe"][0], puerto, credencial); sw.DCaché = caché; sw.DExplorador = expl; sw.Run(); Console.WriteLine("Servidor funcionando en el puerto " + puerto + "."); Console.WriteLine("Pulse una tecla para salir..."); Console.ReadKey(); sw.Stop(); }
public void ejecutar(Caché caché, Explorador expl, Dictionary <string, List <string> > args) { this.caché = caché; // Crea un directorio temporal var tmpdir = Path.Combine( Path.GetTempPath(), "dafnytex-" + DateTime.Now.ToFileTimeUtc() ); Directory.CreateDirectory(tmpdir); // Copia el paquete Dafny de Rustan Leino using (var arch = File.Create(Path.Combine(tmpdir, "dafny.sty"))) { Assembly.GetExecutingAssembly().GetManifestResourceStream("vaed.aux.dafny.sty"). CopyTo(arch); }; // Crea un archivo temporal tex = File.CreateText(Path.Combine(tmpdir, "código.tex")); Prólogo.CopyTo(tex.BaseStream); tex.Write(@"\begin{document}"); nord = 0; nivel = 0; // Escribe los archivos siguiendo la jerarquía foreach (NodoMapa nodo in expl.Raíz) { Imprimir(nodo); } tex.Write(@"\end{document}"); tex.Close(); // Ejecuta lualatex para compilar el tex generado ProcessStartInfo psi = new ProcessStartInfo("lualatex", "código.tex"); psi.WorkingDirectory = tmpdir; try { var lualatex = Process.Start(psi); lualatex.WaitForExit(); if (lualatex.ExitCode == 0) { File.Copy(Path.Combine(tmpdir, "código.pdf"), "código.pdf", true); } else { Console.Write("Error al compilar con lualatex."); } } catch (System.ComponentModel.Win32Exception) { AyudanteConsola.imprimirError("luatex no está instalado o no se encuentra"); } // Borra el directorio temporal Directory.Delete(tmpdir, true); }