Beispiel #1
0
        static bool FindProgramUnix(string name, string description, out string command)
        {
            if (m_Cache.TryGetValue(name, out command))
            {
                return(true);
            }

            IniReader reader = IniReader.FromLocation(RootLocation.LocalUserConfig);

            command = reader.ReadSetting("Software", name);
            if (command != null && File.Exists(command))
            {
                if (!m_Arguments.IsOptionPresent("reset-toolchain"))
                {
                    m_Cache[name] = command;
                    return(true);
                }
            }

            SystemConsole.WriteLine("\n<yellow>Warning:<default> Build tool <yellow>{0}<default> not set, searching...", description);

            ProcessResult result = ProcessRunner.Run("whereis", name);

            if (result.ExitCode != 0)
            {
                SystemConsole.WriteLine("<red>Cannot find program {0} with whereis!", name);
                SystemConsole.WriteLine(result.Combined);
                return(false);
            }
            command = result.StdOut.GetString(-1, ": ", " ");
            SystemConsole.Write("Selected <cyan>{0}<default> for <cyan>{1}<default>...", command, description);

            result = ProcessRunner.Run(command, "");
            if (result.StartException != null)
            {
                SystemConsole.WriteLine(" <red>error");
                SystemConsole.WriteLine(result.Combined);
                return(false);
            }
            SystemConsole.WriteLine(" <green>ok");
            m_Cache[name] = command;
            IniWriter writer = new IniWriter(reader);

            writer.WriteSetting("Software", name, command);
            writer.Save();
            return(true);
        }
Beispiel #2
0
        public static void Save(IEnumerable <Category> categories, string file)
        {
            IniWriter writer = new IniWriter();

            foreach (Category category in categories)
            {
                for (int i = 0; i < category.Count; i++)
                {
                    writer.AddValue(category[i].ToFormat(), category.ToFormat());
                }
            }
            string tempFile = Path.GetTempFileName();

            writer.Save(tempFile);
            File.Copy(tempFile, file, true);
            File.Delete(tempFile);
        }
Beispiel #3
0
        /// <summary>
        /// Persisis a Template object into a file.
        /// </summary>
        /// <param name="template">The template object to save.</param>
        /// <param name="file">The file to save the data into.</param>
        public static void Save(Template template, string file)
        {
            IniWriter writer = new IniWriter();

            foreach (Category category in template)
            {
                string strCategory = CategoryToFormat(category);

                foreach (var item in category)
                {
                    writer.AddValue(CategoryItemToFormat(item), strCategory);
                }
            }
            string tempFile = Path.GetTempFileName();

            writer.Save(tempFile);
            File.Copy(tempFile, file, true);
            File.Delete(tempFile);
        }
Beispiel #4
0
        /// <summary>Writes the artist ini.</summary>
        /// <param name="folder">The folder.</param>
        /// <param name="artist">The artist.</param>
        /// <exception cref="ArgumentNullException">MusicBrainzArtistGuid</exception>
        public void WriteArtistIni(MDBFolder folder, MDBArtist artist)
        {
            if (artist.MusicBrainzArtistGuid == null)
            {
                throw new ArgumentNullException("MusicBrainzArtistGuid");
            }

            string artistIniFile = folder.GetFullPath(this, "artist.ini");

            FileSystem.TouchFile(artistIniFile);
            var ini = IniReader.FromFile(artistIniFile);

            var writer = new IniWriter(ini);

            writer.WriteSetting("Artist", "Guid", artist.MusicBrainzArtistGuid.ToString());
            var artists = new Set <string>(ini.ReadSection("Artists"));

            artists.Include(artist.Name);
            writer.WriteSection("Artists", artists);
            writer.Save();
        }
Beispiel #5
0
        public void IniReaderWriterTest()
        {
            var temp = Path.GetTempFileName();

            Console.WriteLine($"{nameof(IniReaderWriterTest)}.cs: info TI0002: TestFile {temp}");
            foreach (var culture in allCultures)
            {
                Console.WriteLine($"{nameof(IniReaderWriterTest)}.cs: info TI0002: Test {culture}");

                if (!(culture.Calendar is GregorianCalendar))
                {
                    Console.WriteLine($"- Skipping calendar {culture.Calendar}");
                    continue;
                }

                var settings   = new SettingsStructFields[10];
                var properties = IniProperties.Default;
                properties.Culture = culture;
                var writer = new IniWriter(temp, properties);

                {
                    var setting = SettingsStructFields.Random(null);
                    settings[0] = setting;
                    writer.WriteFields($"Section 0", setting);
                }
                for (var i = 1; i < settings.Length; i++)
                {
                    var setting = SettingsStructFields.Random(culture);
                    settings[i] = setting;
                    writer.WriteFields($"Section {i}", setting);
                }
                writer.Save(temp);

                TestReader((IniReader)writer.ToReader(), settings);
                TestReader(IniReader.FromFile(temp, properties), settings);
            }
        }
Beispiel #6
0
        private void CoreUI_FormClosing(object sender, FormClosingEventArgs e)
        {
            Globals.AttackOn   = false;
            Globals.AttackMode = false;
            Globals.Terminate  = true;

            if (RoomsPanel.Rooms.Count > 0)
            {
                RegistryUtil.Save();
                IniWriter.Save();
                ConfigSerializer.WriteFile("config.xml", Settings);
            }

            // clean up notifyicon
            if (mNotifyIcon != null)
            {
                mNotifyIcon.Visible = false;
                mNotifyIcon.Dispose();
                mNotifyIcon = null;
            }

            Application.Exit();
            Process.GetCurrentProcess().Kill();
        }
Beispiel #7
0
        /// <summary>
        /// Attacks with accounts
        /// </summary>
        private static void Run()
        {
            // save settings
            RegistryUtil.Save();
            IniWriter.Save();
            ConfigSerializer.WriteFile("config.xml", CoreUI.Instance.Settings);

            CoreUI.Instance.ToggleNotifyIcon(true);

            lock (mAccounts)
            {
                foreach (Account a in mAccounts)
                {
                    CoreUI.Instance.LogPanel.Log("Refreshing " + a.Name + "'s position...");
                    if (!a.Mover.RefreshRoom())
                    {
                        CoreUI.Instance.ToggleNotifyIcon(false);
                        return;
                    }

                    // no point in moving if we don't have rage
                    if (a.Mover.Account.Rage > -1 && a.Mover.Account.Rage < Math.Max(1, CoreUI.Instance.Settings.StopBelowRage))
                    {
                        // go to next account
                        CoreUI.Instance.LogPanel.Log(string.Format("Not attacking on {0}, reached rage limit", a.Name));
                        continue;
                    }

                    a.Mover.ReturnToStartHandler.SetOriginal();

                    CoreUI.Instance.AccountsPanel.Engine.SetMain(a);
                    switch (mType)
                    {
                    case AttackingType.CurrentArea:
                        CoreUI.Instance.DoAttackArea();
                        break;

                    case AttackingType.MultiArea:
                        CoreUI.Instance.DoAttackMultiAreas(mAreas);
                        break;

                    case AttackingType.Mobs:
                        CoreUI.Instance.DoAttackMobs(mMobs);
                        break;

                    case AttackingType.Rooms:
                        CoreUI.Instance.DoAttackRooms(mRooms);
                        break;
                    }


                    // update account state
                    a.RefreshState();

                    // Finished
                    CoreUI.Instance.LogPanel.Log(a.Name + " attack coverage complete");

                    if (!Globals.AttackMode)
                    {
                        break;
                    }
                }
            }

            CoreUI.Instance.ToggleNotifyIcon(false);

            // submit any newfound mobs to pathfinding database
            if (Pathfinding.MobCollector.Count > 0)
            {
                CoreUI.Instance.LogPanel.Log("Submitting " + Pathfinding.MobCollector.Count + " new mobs");
                Pathfinding.MobCollector.Submit();
            }
        }