public static void Main(string [] args) { if (args.Length < 2) { Console.Error.WriteLine ("factory-status: [https://API_URL/]DEVEL_PROJECTS [https://API_URL/]FACTORY_PROJECT"); return; } accounts = new OscRcAccountCollection (); Console.Error.Write ("\r"); Console.Write ("Loading revision data... "); var devel_packages = new Dictionary<string, Package> (); var factory_packages = new Dictionary<string, Package> (); for (int i = 0; i < args.Length - 1; i++) { LoadPackages (devel_packages, args[i]); } LoadPackages (factory_packages, args[args.Length - 1]); int total_count = devel_packages.Count + factory_packages.Count; int completed_count = 0; var start_time = DateTime.Now; foreach (var package_set in new Dictionary<string, Package> [] { devel_packages, factory_packages }) { foreach (var entry in package_set) { var package = package_set[entry.Key]; package.SrcMd5 = GetPackageCurrentRevision (package); UpdateStatus (start_time, total_count, ++completed_count); } } var to_update = new List<Package> (); var to_remove = new List<Package> (); // Find packages that are not up-to-date foreach (var package in devel_packages.Values) { if (!factory_packages.ContainsKey (package.Name) || factory_packages[package.Name].SrcMd5 != package.SrcMd5) { to_update.Add (package); } } to_update.Sort ((a, b) => a.Project == b.Project ? a.Name.CompareTo (b.Name) : a.Project.CompareTo (b.Project)); // Find packages that are obsolete foreach (var package in factory_packages.Values) { if (!devel_packages.ContainsKey (package.Name)) { to_remove.Add (package); } } Console.WriteLine (); Console.WriteLine ("Loaded revision data."); Console.WriteLine (); if (to_update.Count == 0 && to_remove.Count == 0) { Console.WriteLine ("The Factory project is up-to-date. Congratulations!"); return; } if (to_update.Count > 0) { Console.WriteLine ("Packages that need updating in Factory ({0}):", to_update.Count); foreach (var package in to_update) { Console.WriteLine (" - {0} ({1}, {2})", package.Name, package.Project, package.SrcMd5); } } if (to_remove.Count > 0) { Console.WriteLine ("Packages not in a devel project ({0}):", to_remove.Count); foreach (var package in to_remove) { Console.WriteLine (" - {0}", package.Name); } } }
private void LoadSubmitRequests() { var accounts = new OscRcAccountCollection (); var account = accounts.DefaultAccount; using (var reader = new StreamReader (BuildPath (BasePath, ".osc", "_apiurl"))) { account = accounts[reader.ReadToEnd ().Trim ()]; } Console.WriteLine ("Checking for submit requests..."); var doc = new XPathDocument (XmlReader.Create (account.ApiRequest.Get ( @"/search/request?match=" + @"state/@name=""new"" and " + @"action/target/@project=""" + Name + @"""" ))); var nav = doc.CreateNavigator (); var iter = nav.Select ("/collection/request"); while (iter.MoveNext ()) { Requests.Add (new ObsRequestNode (iter.Current)); } }