Example #1
0
        private void RunScriptInteractive(List <ScriptDto> listScript)
        {
            while (true)
            {
                int           nbEltParLigne = 3;
                StringBuilder strShow       = new StringBuilder();

                String tpl = "[{0:" + new String(' ', 2) + "}] {1,-25}";
                tpl = "[{0}] {1,-25}";

                int i = 0;
                for (; i < listScript.Count; i++)
                {
                    ScriptDto scriptDto = listScript[i];

                    strShow.AppendFormat(tpl, i, scriptDto.Id);

                    if ((i + 1) % nbEltParLigne == 0)
                    {
                        strShow.AppendLine();
                    }
                }


                strShow.AppendFormat(tpl, i, "Quitter");



                Console.WriteLine(strShow.ToString());
                Console.WriteLine();
                Console.Write("Faites votre choix : ");
                String choiceStr = Console.ReadLine();

                int choice = -1;
                if ((choice = MiscAppUtils.IntParse(choiceStr)) >= 0)
                {
                    if (choice == i)
                    {
                        break;
                    }

                    if (RunScriptInteractiveSub(listScript[choice]))
                    {
                        return;
                    }
                    Console.Clear();
                }
            }
        }
Example #2
0
        private bool RunScriptInteractiveSub(ScriptDto scriptDto)
        {
            Console.WriteLine();



            bool isDoReturn = SubA();

            return(isDoReturn);

            bool SubA()
            {
                while (true)
                {
                    String msgPresentScript = $"Script {scriptDto.Id} :";
                    Console.WriteLine(new String('=', msgPresentScript.Length + 2));
                    Console.WriteLine($" {msgPresentScript}");
                    Console.WriteLine(new String('=', msgPresentScript.Length + 2));

                    Console.WriteLine("[0] Lancer le script");
                    Console.WriteLine("[1] Revenir en arrière");

                    Console.WriteLine();
                    Console.Write("Faites votre choix : ");
                    String choiceStr = Console.ReadLine();

                    int choice = -1;
                    if ((choice = MiscAppUtils.IntParse(choiceStr)) >= 0)
                    {
                        if (choice == 1)
                        {
                            break;
                        }
                        else
                        {
                            if (SubB())
                            {
                                return(true);
                            }
                            Console.Clear();
                        }
                    }
                }

                return(false);
            }

            bool SubB()
            {
                while (true)
                {
                    Console.WriteLine();

                    string argScript    = ScriptRunner.GetScriptArgsTpl(scriptDto);
                    int    nbArgsScript = ScriptRunner.ExtractNbArgs(argScript);

                    if (nbArgsScript == 0)
                    {
                        Console.WriteLine("Aucun argument à fournir pour ce script");
                    }
                    else
                    {
                        Console.WriteLine("Paramètres de lancement :");
                        Console.WriteLine(argScript);
                        Console.WriteLine();

                        List <String> listArgs = new List <string>(nbArgsScript);

                        for (int i = 0; i < nbArgsScript; i++)
                        {
                            Console.Write("Valorisez %1: ");
                            listArgs.Insert(i, Console.ReadLine());
                        }
                        listArgs.Insert(0, String.Join(" ", listArgs));

                        Console.WriteLine();
                        string argScriptRepl = ScriptRunner.ReplaceArgsInTpl(argScript, listArgs);
                        Console.WriteLine("Le script sera lancé avec ces paramètres :");
                        Console.WriteLine(argScriptRepl);
                        Console.WriteLine();

                        Console.WriteLine();
                        Console.Write("Voulez-vous continuer ? [o/n/a] : ");
                        String choiceStr = Console.ReadLine();

                        if (choiceStr == null || choiceStr.Equals("n", StringComparison.CurrentCultureIgnoreCase))
                        {
                            continue;
                        }
                        else if (choiceStr.Equals("a", StringComparison.CurrentCultureIgnoreCase))
                        {
                            return(false);
                        }


                        appArgs.ScriptArgsInput = listArgs;
                    }

                    try
                    {
                        ScriptRunner sRun = new ScriptRunner(scriptDto);
                        _handler += new EventHandler(sRun.HandleUnusalExit);
                        SetConsoleCtrlHandler(_handler, true);
                        sRun.Run(appArgs.ScriptArgsInput);
                    }
                    catch (Exception e)
                    {
                        Thread.Sleep(5000);
                        return(false);
                    }

                    break;
                }

                return(true);
            }
        }