Пример #1
0
        private void ScanDirectory()
        {
            BotLocations.Clear();
            // Disable all.
            foreach (var bot in Bots)
            {
                bot.Info = bot.Info.SetIsActive(true);
            }

            foreach (var dir in RootDirectory.GetDirectories().Where(d => d.Name != "bin" && d.Name != "zips"))
            {
                BotInfo info;
                if (BotInfo.TryCreate(dir, out info))
                {
                    var bot = Bots.GetOrCreate(info);
                    if (!info.Inactive)
                    {
                        BotLocations[bot.Info] = dir;
                    }
                }
            }
        }
		private MethodInfo GetMainMethod(BotInfo info)
		{
			var exe = BotLocations[info].GetFiles("*.exe").FirstOrDefault();
			if (exe != null)
			{
				var assembly = Assembly.LoadFile(exe.FullName);

				var program = assembly.GetTypes().FirstOrDefault(tp => tp.GetMethod("Main", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) != null);

				if (program != null)
				{
					var main = program.GetMethod("Main", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
					return main;
				}
			}
			return null;
		}
Пример #3
0
		public static bool TryParse(string dir, out BotInfo info)
        {
            var match = DirectoryPattern.Match(dir ?? String.Empty);

            if (match.Success)
            {
                var inactive = !String.IsNullOrEmpty(match.Groups["disabled"].Value);
                var name = match.Groups["name"].Value;
                var version = String.IsNullOrEmpty(match.Groups["version"].Value) ? 0 : Int32.Parse(match.Groups["version"].Value);

                info = new BotInfo(name, version, inactive);
                return true;
            }
            else
            {
                info = default(BotInfo);
                return false;
            }
        }
Пример #4
0
 public static bool TryCreate(DirectoryInfo dir, out BotInfo info)
 {
     return(TryParse(dir.Name, out info));
 }
Пример #5
0
		public static bool TryCreate(DirectoryInfo dir, out BotInfo info)
		{
			return TryParse(dir.Name, out info);
		}