Exemple #1
0
        static void Main(string[] args)
        {
            Berrybrew BB = new Berrybrew();

            if (args.Length != 0 && args[0] == "debug")
            {
                BB.Debug = true;
                args     = args.Skip(1).ToArray();
            }

            if (BB.Debug)
            {
                Console.WriteLine("\nberrybrew debugging enabled...\n");
                Console.WriteLine(
                    "install dir: {0}\nperl root dir: {1}\ntemp dir: {2}",
                    BB.installPath, BB.rootPath, BB.archivePath
                    );
            }

            if (args.Length == 0)
            {
                BB.Message.Print("help");
                Environment.Exit(0);
            }

            switch (args[0])
            {
            case "available":
                BB.Available();
                break;

            case "clean":
                if (args.Length > 1)
                {
                    if (args[1].StartsWith("h"))
                    {
                        BB.Message.Say("subcmd.clean");
                    }
                    else
                    {
                        BB.Clean(args[1]);
                    }
                }
                else
                {
                    BB.Clean();
                }

                break;

            case "clone":
                if (args.Length != 3)
                {
                    BB.Message.Say("clone_command_usage");
                }
                bool ok = BB.Clone(args[1], args[2]);

                if (!ok)
                {
                    Environment.Exit(0);
                }

                break;

            case "config":
                BB.Config();
                break;

            case "exec":
                if (args.Length == 1)
                {
                    BB.Message.Say("exec_command_required");
                }
                args[0] = "";

                if (args[1] == "-h" || args[1] == "help")
                {
                    BB.Message.Say("subcmd.exec");
                }
                BB.ExecCompile(String.Join(" ", args).Trim());
                break;

            case "install":
                if (args.Length == 1)
                {
                    BB.Message.Say("install_ver_required");
                }
                try
                {
                    BB.Install(args[1]);
                }
                catch (ArgumentException error)
                {
                    if (BB.Debug)
                    {
                        Console.WriteLine(error);
                    }

                    BB.Message.Say("install_ver_unknown");
                }
                break;

            case "license":
                if (args.Length == 1)
                {
                    BB.Message.Say("license");
                }
                break;

            case "off":
                BB.Off();
                break;

            case "remove":
                if (args.Length == 1)
                {
                    BB.Message.Say("remove_ver_required");
                }
                BB.PerlRemove(args[1]);
                break;

            case "switch":
                if (args.Length == 1)
                {
                    BB.Message.Say("switch_ver_required");
                }
                BB.Switch(args[1]);
                break;

            case "unconfig":
                BB.Unconfig();
                break;

            case "upgrade":
                BB.Upgrade();
                break;

            case "version":
                Console.WriteLine(BB.Version());
                break;

            default:
                BB.Message.Say("help");
                break;
            }
        }
Exemple #2
0
        private static void Main(string[] args)
        {
            Berrybrew bb = new Berrybrew();

            if (args.Length != 0 && args[0] == "debug")
            {
                bb.Debug = true;
                args     = args.Skip(1).ToArray();
            }

            if (bb.Debug)
            {
                Console.WriteLine("\nberrybrew debugging enabled...\n");
                Console.WriteLine(
                    "install dir: {0}\nperl root dir: {1}\ntemp dir: {2}\n",
                    bb.installPath, bb.rootPath, bb.archivePath
                    );
            }

            if (args.Length != 0 && args[0] == "test")
            {
                bb.Testing = true;
                Console.WriteLine("\nberrybrew testing enabled");
                args = args.Skip(1).ToArray();
            }

            if (args.Length != 0 && args[0] == "trace")
            {
                bb.Trace = true;
                args     = args.Skip(1).ToArray();
            }

            if (args.Length != 0 && args[0] == "status")
            {
                bb.Status = true;
                args      = args.Skip(1).ToArray();
            }

            if (args.Length == 0)
            {
                bb.Message.Print("help");
                bb.Exit(0);
            }

            switch (args[0])
            {
            case "associate":
                if (args.Length > 1)
                {
                    if (args[1] == "-h" || args[1] == "help")
                    {
                        bb.Message.Print("subcmd.associate");
                        bb.Exit(0);
                    }
                    else
                    {
                        bb.FileAssoc(args[1]);
                        bb.Exit(0);
                    }
                }
                bb.FileAssoc();
                bb.Exit(0);
                break;

            case "available":
                if (args.Length > 1)
                {
                    if (args[1].StartsWith("h"))
                    {
                        bb.Message.Print("subcmd.available");
                        bb.Exit(0);
                    }
                    else if (args[1] == "all")
                    {
                        bb.Available(true);
                        bb.Exit(0);
                    }
                }

                bb.Available();
                bb.Exit(0);
                break;

            case "currentperl":
                Console.WriteLine(bb.PerlInUse().Name);
                bb.Exit(0);
                break;

            case "clean":
                if (args.Length > 1)
                {
                    if (args[1].StartsWith("h"))
                    {
                        bb.Message.Print("subcmd.clean");
                    }
                    else
                    {
                        bb.Clean(args[1]);
                    }
                }
                else
                {
                    bb.Clean();
                    bb.Exit(0);
                }
                break;

            case "clone":
                if (args.Length != 3)
                {
                    bb.Message.Print("clone_command_usage");
                    bb.Exit(0);
                }

                bb.Clone(args[1], args[2]);
                bb.Exit(0);
                break;

            case "config":
                string cwd = Directory.GetCurrentDirectory();

                if (String.Equals(cwd, @"c:\berrybrew", StringComparison.OrdinalIgnoreCase))
                {
                    Console.Error.WriteLine("\nAt this time, berrybrew can not be installed in C:\\berrybrew. Please move the directory and try again\n");
                    bb.Exit(-1);
                }

                bb.Config();
                bb.Exit(0);
                break;

            case "exit":
                if (args.Length == 1)
                {
                    Console.Error.WriteLine("'exit' requires an error code integer\n");
                    bb.Exit(-1);
                }
                bb.Exit(Int32.Parse(args[1]));
                break;

            case "error":
                if (args.Length == 1)
                {
                    bb.Message.Error("error_number_required");
                    bb.Exit(-1);
                }

                string errorName = Enum.GetName(typeof(Berrybrew.ErrorCodes), Int32.Parse(args[1]));
                if (errorName == null)
                {
                    errorName = "EXTERNAL_PROCESS_ERROR";
                }
                Console.WriteLine("\nError Code {0}: {1}\n", args[1], errorName);
                bb.Exit(0);
                break;

            case "error-codes":
                bb.bypassOrphanCheck = true;
                foreach (int code in Enum.GetValues(typeof(Berrybrew.ErrorCodes)))
                {
                    string exitCodeName = Enum.GetName(typeof(Berrybrew.ErrorCodes), code);
                    Console.WriteLine("{0} - {1}", code, exitCodeName);
                }
                break;

            case "exec":
                if (args.Length == 1)
                {
                    bb.Message.Print("exec_command_required");
                    Console.Error.WriteLine("'exec' requires a command");
                    bb.Exit(-1);
                }

                args[0] = "";

                if (args[1] == "-h" || args[1] == "help")
                {
                    bb.Message.Print("subcmd.exec");
                    bb.Exit(0);
                }

                List <String> newArgs = args.ToList();
                newArgs.RemoveAt(0);
                bb.ExecCompile(newArgs);
                bb.Exit(0);
                break;

            case "fetch":
                bb.PerlUpdateAvailableList();
                bb.Exit(0);
                break;

            case "help":
                if (args.Length == 1)
                {
                    bb.Message.Print("help");
                    bb.Exit(0);
                }
                else
                {
                    switch (args[1].ToLower())
                    {
                    case "clean":
                        bb.Message.Print("subcmd.clean");
                        bb.Exit(0);
                        break;

                    case "exec":
                        bb.Message.Print("subcmd.exec");
                        bb.Exit(0);
                        break;

                    case "fetch":
                        bb.Message.Print("subcmd.fetch");
                        bb.Exit(0);
                        break;

                    case "use":
                        bb.Message.Print("subcmd.use");
                        bb.Exit(0);
                        break;

                    default:
                        bb.Message.Print("help");
                        bb.Exit(0);
                        break;
                    }
                }
                break;

            case "hidden":
                bb.Message.Say("hidden");
                bb.Exit(0);
                break;

            case "info":
                if (args.Length == 1)
                {
                    bb.Message.Print("info_option_required");
                    bb.Exit(0);
                }

                bb.Info(args[1]);
                bb.Exit(0);
                break;

            case "install":
                if (args.Length == 1)
                {
                    bb.Message.Print("install_ver_required");
                    bb.Exit(0);
                }

                try {
                    bb.Install(args[1]);
                    bb.Exit(0);
                }
                catch (ArgumentException error) {
                    if (bb.Debug)
                    {
                        Console.WriteLine(error);
                    }

                    bb.Message.Print("install_ver_unknown");
                    Console.Error.WriteLine(error);
                    bb.Exit(-1);
                }
                break;

            case "license":
                if (args.Length == 1)
                {
                    bb.Message.Print("license");
                    bb.Exit(0);
                }
                bb.Exit(0);
                break;

            case "list":
                bb.List();
                bb.Exit(0);
                break;

            case "modules":
                if (args.Length == 1)
                {
                    bb.Message.Print("modules_command_required");
                    bb.Exit(0);
                }

                args[0] = "";

                if (args[1] == "-h" || args[1] == "help")
                {
                    bb.Message.Print("subcmd.modules");
                    bb.Exit(0);
                }

                if (args[1] != "import" && args[1] != "export")
                {
                    Console.Error.WriteLine("\ninvalid option...\n");
                    bb.Message.Print("subcmd.modules");
                    bb.Exit(-1);
                }

                if (args[1] == "import")
                {
                    if (args.Length < 3)
                    {
                        bb.ImportModules();
                        bb.Exit(0);
                    }
                    else
                    {
                        bb.ImportModules(args[2]);
                        bb.Exit(0);
                    }
                }

                if (args[1] == "export")
                {
                    bb.ExportModules();
                    bb.Exit(0);
                }

                bb.Exit(0);
                break;

            case "off":
                bb.Off();
                bb.Exit(0);
                break;

            case "options":
                if (args.Length > 1)
                {
                    if (args[1].StartsWith("h"))
                    {
                        bb.Message.Print("subcmd.options");
                        bb.Exit(0);
                    }
                }
                if (args.Length == 1)
                {
                    bb.Options();
                    bb.Exit(0);
                }
                if (args.Length == 2)
                {
                    bb.Options(args[1]);
                    bb.Exit(0);
                }
                if (args.Length == 3)
                {
                    bb.Options(args[1], args[2]);
                    bb.Exit(0);
                }
                bb.Exit(0);
                break;

            case "options-update":
                bb.OptionsUpdate();
                bb.Exit(0);
                break;

            case "options-update-force":
                bb.OptionsUpdate(true);
                bb.Exit(0);
                break;

            case "orphans":
                bb.bypassOrphanCheck = false;
                bb.OrphanedPerls();
                bb.bypassOrphanCheck = true;
                bb.Exit(0);
                break;

            case "register":
                if (args.Length == 1)
                {
                    bb.Message.Print("register_ver_required");
                    bb.Exit(0);
                }

                bb.PerlRegisterCustomInstall(args[1]);
                bb.Exit(0);
                break;

            case "register-orphans":
                bb.PerlUpdateAvailableListOrphans();
                bb.Exit(0);
                break;

            case "remove":
                if (args.Length == 1)
                {
                    bb.Message.Print("remove_ver_required");
                    bb.Exit(0);
                }

                bb.PerlRemove(args[1]);
                bb.Exit(0);
                break;

            case "switch":
                if (args.Length == 1)
                {
                    bb.Message.Print("switch_ver_required");
                    bb.Exit(0);
                }

                if (args.Length == 2)
                {
                    if (args[1].StartsWith("h"))
                    {
                        bb.Message.Print("subcmd.switch");
                        bb.Exit(0);
                    }
                }

                bool switchQuick = false;

                if (args.Length == 3 && args[2] == "quick")
                {
                    switchQuick = true;
                }

                bb.Switch(args[1], switchQuick);
                bb.Exit(0);
                break;

            case "unconfig":
                bb.Unconfig();
                bb.Exit(0);
                break;

            case "upgrade":
                bb.Upgrade();
                bb.Exit(0);
                break;

            case "use":
                if (args.Length == 1)
                {
                    bb.Message.Print("use_ver_required");
                    bb.Exit(0);
                }
                switch (args[1].ToLower())
                {
                case "-h":
                case "help":
                case "-help":
                case "--help":
                    bb.Message.Print("subcmd.use");
                    bb.Exit(0);
                    break;

                case "--win":
                case "--window":
                case "--windowed":
                    if (args.Length < 3)
                    {
                        bb.Message.Print("use_ver_required");
                        bb.Exit(0);
                    }
                    else
                    {
                        bb.UseCompile(args[2], true);
                        bb.Exit(0);
                    }
                    break;

                default:
                    bb.UseCompile(args[1]);
                    bb.Exit(0);
                    break;
                }
                break;

            case "virtual":
                if (args.Length == 1)
                {
                    bb.Message.Print("virtual_command_required");
                    bb.Exit(0);
                }
                bb.PerlRegisterVirtualInstall(args[1]);
                bb.Exit(0);
                break;

            case "version":
                Console.WriteLine(bb.Version());
                bb.Exit(0);
                break;

            default:
                bb.Message.Print("help");
                bb.Exit(0);
                break;
            }
        }
Exemple #3
0
        private static void Main(string[] args)
        {
            Berrybrew bb = new Berrybrew();

            if (args.Length != 0 && args[0] == "debug")
            {
                bb.Debug = true;
                args     = args.Skip(1).ToArray();
            }

            if (bb.Debug)
            {
                Console.WriteLine("\nberrybrew debugging enabled...\n");
                Console.WriteLine(
                    "install dir: {0}\nperl root dir: {1}\ntemp dir: {2}",
                    bb.InstallPath, bb.RootPath, bb.ArchivePath
                    );
            }

            if (args.Length != 0 && args[0] == "test")
            {
                bb.Testing = true;
                Console.WriteLine("\nberrybrew testing enabled");
                args = args.Skip(1).ToArray();
            }

            if (args.Length == 0)
            {
                bb.Message.Print("help");
                Environment.Exit(0);
            }

            switch (args[0])
            {
            case "available":
                bb.Available();
                break;

            case "list":
                bb.List();
                break;

            case "currentperl":
                Console.WriteLine(bb.PerlInUse().Name);
                break;

            case "clean":
                if (args.Length > 1)
                {
                    if (args[1].StartsWith("h"))
                    {
                        bb.Message.Say("subcmd.clean");
                    }
                    else
                    {
                        bb.Clean(args[1]);
                    }
                }
                else
                {
                    bb.Clean();
                }

                break;

            case "clone":
                if (args.Length != 3)
                {
                    bb.Message.Say("clone_command_usage");
                }

                bool ok = bb.Clone(args[1], args[2]);

                if (!ok)
                {
                    Environment.Exit(0);
                }

                break;

            case "config":
                string cwd = Directory.GetCurrentDirectory();

                if (String.Equals(cwd, @"c:\berrybrew", StringComparison.OrdinalIgnoreCase))
                {
                    Console.WriteLine("\nAt this time, berrybrew can not be installed in C:\\berrybrew. Please move the directory and try again\n");
                    Environment.Exit(0);
                }

                bb.Config();
                break;

            case "exec":
                if (args.Length == 1)
                {
                    bb.Message.Say("exec_command_required");
                }

                args[0] = "";

                if (args[1] == "-h" || args[1] == "help")
                {
                    bb.Message.Say("subcmd.exec");
                }

                List <String> newArgs = args.ToList();
                newArgs.RemoveAt(0);
                bb.ExecCompile(newArgs);
                break;

            case "fetch":
                bool allPerls = false;
                if (args.Length > 1)
                {
                    if (args[1].StartsWith("h"))
                    {
                        bb.Message.Say("subcmd.fetch");
                    }
                    else
                    {
                        allPerls = args[1].Equals("all");
                    }
                }

                bb.PerlUpdateAvailableList(allPerls);
                bb.PerlUpdateAvailableListOrphans();
                break;

            case "help":
                if (args.Length == 1)
                {
                    bb.Message.Say("help");
                }
                else
                {
                    switch (args[1].ToLower())
                    {
                    case "clean":
                        bb.Message.Say("subcmd.clean");
                        break;

                    case "exec":
                        bb.Message.Say("subcmd.exec");
                        break;

                    case "fetch":
                        bb.Message.Say("subcmd.fetch");
                        break;

                    case "use":
                        bb.Message.Say("subcmd.use");
                        break;

                    default:
                        bb.Message.Say("help");
                        break;
                    }
                }
                break;

            case "install":
                if (args.Length == 1)
                {
                    bb.Message.Say("install_ver_required");
                }

                try {
                    bb.Install(args[1]);
                }

                catch (ArgumentException error) {
                    if (bb.Debug)
                    {
                        Console.WriteLine(error);
                    }

                    bb.Message.Say("install_ver_unknown");
                }

                break;

            case "license":
                if (args.Length == 1)
                {
                    bb.Message.Say("license");
                }

                break;

            case "modules":
                if (args.Length == 1)
                {
                    bb.Message.Say("modules_command_required");
                }

                bb.Message.Print("warning_modules_beta");

                args[0] = "";

                if (args[1] == "-h" || args[1] == "help")
                {
                    bb.Message.Say("subcmd.modules");
                }

                if (args[1] != "import" && args[1] != "export")
                {
                    Console.WriteLine("\ninvalid option...\n");
                    bb.Message.Say("subcmd.modules");
                }

                if (args[1] == "import")
                {
                    if (args.Length < 3)
                    {
                        bb.ImportModules();
                    }
                    else
                    {
                        bb.ImportModules(args[2]);
                    }
                }

                if (args[1] == "export")
                {
                    bb.ExportModules();
                }

                break;

            case "off":
                bb.Off();
                break;

            case "register":
                if (args.Length == 1)
                {
                    bb.Message.Say("register_ver_required");
                }

                bb.PerlRegisterCustomInstall(args[1]);
                break;

            case "remove":
                if (args.Length == 1)
                {
                    bb.Message.Say("remove_ver_required");
                }

                bb.PerlRemove(args[1]);
                break;

            case "switch":
                if (args.Length == 1)
                {
                    bb.Message.Say("switch_ver_required");
                }

                bb.Switch(args[1]);
                break;

            case "unconfig":
                bb.Unconfig();
                break;

            case "upgrade":
                bb.Upgrade();
                break;

            case "use":     // pryrt's added feature
                if (args.Length == 1)
                {
                    bb.Message.Say("use_ver_required");
                }
                switch (args[1].ToLower())
                {
                case "-h":
                case "help":
                case "-help":
                case "--help":
                    bb.Message.Say("subcmd.use");
                    break;

                case "--win":
                case "--window":
                case "--windowed":
                    if (args.Length < 3)
                    {
                        bb.Message.Say("use_ver_required");
                    }
                    else
                    {
                        bb.UseCompile(args[2], true);
                    }
                    break;

                default:
                    bb.UseCompile(args[1]);
                    break;
                }
                break;

            case "version":
                Console.WriteLine(bb.Version());
                break;

            default:
                bb.Message.Say("help");
                break;
            }
        }