예제 #1
0
        public void DoShow()
        {
            AddonLocal = new AptLocal(AddonEnv);

            if (InitializeRepository())
            {
                if (AddonRepo.IsAddonInRepository(ArgAddons[0]))
                {
                    RepositoryAddonInfo info = AddonRepo.GetAddonInfo(ArgAddons[0]);

                    PrintAddonInfo("Name", info.Name);
                    if (AddonLocal.IsInstalled(info.Name))
                    {
                        PrintAddonInfo("State", "Installed");
                        Output.Append(String.Format(" (Version {0})", AddonLocal.GetAddonInfo(info.Name).Version.Major.ToString()));
                    }
                    else
                    {
                        PrintAddonInfo("State", "Not installed");
                    }
                    if (info.Category != null)
                    {
                        PrintAddonInfo("Category", info.Category);
                    }
                    if (info.Author != null)
                    {
                        PrintAddonInfo("Author", info.Author);
                    }
                    PrintAddonInfo("Version", info.Version.Major.ToString());
                    PrintAddonInfo("Interface", info.InterfaceVersion.ToString());
                    if (info.IsStable)
                    {
                        PrintAddonInfo("Stable", "Yes");
                    }
                    else
                    {
                        PrintAddonInfo("Stable", "No");
                    }
                    if (info.PubDate != null)
                    {
                        PrintAddonInfo("Published", info.PubDate);
                    }
                    if (info.RequiredDeps != null)
                    {
                        PrintAddonInfo("Dependencies", String.Join(", ", info.RequiredDeps.ToArray()));
                    }
                    if (info.Description != null)
                    {
                        Output.NewLine();
                        PrintAddonInfo(info.Description);
                        Output.NewLine();
                    }
                }
                else
                {
                    Output.Info("Addon not found in repository.");
                }
            }
        }
예제 #2
0
        public void DoRemove()
        {
            AddonLocal = new AptLocal(AddonEnv);

            Output.Info("Action: remove addon(s).");
            Output.Info(String.Format("Addons currently installed: {0}", AddonLocal.GetAddonNum()));

            if (InitializeRepository())
            {
                AptActionRemove remove = new AptActionRemove(AddonEnv, AddonLocal, AddonRemote, AddonRepo);
                remove.AddStatusListener(new AptAction.StatusMessageEventHandler(RemoveStatusMessage));

                foreach (string addon in ArgAddons)
                {
                    remove.Add(addon);
                }

                // check if exists
                List <string> queue      = remove.GetQueue();
                List <string> removeList = new List <string>();
                foreach (string addon in queue)
                {
                    removeList.Add(AddonLocal.GetAddonInfo(addon).Name);
                }

                // no addons to be removed
                if (removeList.Count == 0)
                {
                    Output.Error("No addons found matching given names.");
                    return;
                }

                Output.Info("The following addons will be removed:\n\n");
                Output.Append("  " + String.Join(", ", removeList.ToArray()));

                if (!Cfg.SilentMode)
                {
                    Output.Append("\n\nDo you want to proceed? [Y/N]: ");

                    if (Convert.ToChar(Console.Read()).ToString().ToLower() == "y")
                    {
                        remove.Run();
                    }
                }
                else
                {
                    remove.Run();
                }
            }
        }
예제 #3
0
        public void DoUnpack()
        {
            AddonLocal = new AptLocal(AddonEnv);

            if (ArgAddons.Count > 0)
            {
                foreach (string addon in ArgAddons)
                {
                    _DoUnpack(addon);
                }
            }
            else
            {
                foreach (LocalAddonInfo info in AddonLocal)
                {
                    _DoUnpack(info.Name);
                }
            }
        }
예제 #4
0
        public void DoInstall()
        {
            AddonLocal  = new AptLocal(AddonEnv);
            AddonRemote = new AptRemote(AddonEnv);

            if (Cfg.AutoUpdateIndex)
            {
                DoUpdate();
            }

            Output.Info("Action: install addon(s).");

            int installedAddons = 0;

            if (InitializeRepository())
            {
                if (!Cfg.AutoUpdateIndex)
                {
                    Output.Info(String.Format("There are currently {0} addons in the database.", AddonRepo.GetAddonNum()));
                    PrintEnvInfo();
                }

                AptActionInstall install = new AptActionInstall(AddonEnv, AddonLocal, AddonRemote, AddonRepo);
                install.AddStatusListener(new AptAction.StatusMessageEventHandler(InstallStatusMessage));

                foreach (string addon in ArgAddons)
                {
                    if (AddonRepo.IsAddonInRepository(addon))
                    {
                        if (install.Install(addon, false))
                        {
                            installedAddons++;
                        }
                    }
                    else
                    {
                        Output.Error(String.Format("Addon not found: {0}", addon));
                    }
                }

                Output.Info(String.Format("Addons installed: {0}", installedAddons));
            }
        }
예제 #5
0
        public void DoUpgrade()
        {
            AddonLocal  = new AptLocal(AddonEnv);
            AddonRemote = new AptRemote(AddonEnv);

            if (Cfg.AutoUpdateIndex)
            {
                DoUpdate();
            }

            if (InitializeRepository())
            {
                if (!Cfg.AutoUpdateIndex)
                {
                    Output.Info(String.Format("There are currently {0} addons in the database.", AddonRepo.GetAddonNum()));
                    PrintEnvInfo();
                }

                int updatedAddons;

                AptActionUpgrade upgrade = new AptActionUpgrade(AddonEnv, AddonLocal, AddonRemote, AddonRepo);
                upgrade.AddStatusListener(new AptAction.StatusMessageEventHandler(UpgradeStatusMessage));

                foreach (string excludeAddon in ArgExclude)
                {
                    upgrade.Exclude(excludeAddon);
                }

                if (ArgAddons.Count == 0)
                {
                    Output.Info("Action: upgrade all addons.");
                    updatedAddons = upgrade.Prepare();
                }
                else
                {
                    Output.Info("Action: upgrade some addons.");

                    for (int i = 0; i < ArgAddons.Count; ++i)
                    {
                        upgrade.AddPattern(ArgAddons[i]);
                    }
                    updatedAddons = upgrade.Prepare();
                }

                if (updatedAddons > 0)
                {
                    Output.Info("An update is available for the following addons");

                    List <string> updated = upgrade.GetQueue();

                    // calculate download size
                    int downloadSize = 0;
                    foreach (string addon in updated)
                    {
                        downloadSize += AddonRepo.GetAddonInfo(addon).ZipFileSize;
                    }

                    Output.Append(String.Format(" (approx. {0} KB to download):\n\n", (downloadSize / 1024)));

                    Output.Append("  " + String.Join(", ", updated.ToArray()));

                    if (!Cfg.SilentMode)
                    {
                        Output.Append("\n\nDo you want to proceed? [Y/N]: ");

                        if (Convert.ToChar(Console.Read()).ToString().ToLower() == "y")
                        {
                            upgrade.Run();
                        }
                    }
                    else
                    {
                        upgrade.Run();
                    }
                }
                else
                {
                    Output.Info("No updates available.");
                }
            }
        }