using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; namespace repomgr { public static class Program { public static RepoMgr Repo; public static void Main(string[] args) { if (args.Length < 2 || args[1].Equals("help")) PrintHelp(); Repo = new RepoMgr(args[0]); if (File.Exists(Path.Combine(args[0], "repomgr.index.json"))) Repo.ReadIndex(); switch (args[1]) { case "daemon": CreateWebHostBuilder(args).Build().Run(); break; case "init": if (args.Length != 4) PrintHelp(); try { Repo.Init(args[2], args[3]); } catch (Exception e) { Console.WriteLine("Init failed with error: " + e); } break; case "add": if (args.Length != 3) PrintHelp(); try { Repo.Add(args[2]); } catch (Exception e) { Console.WriteLine("Add failed with error: " + e); } break; case "update": if (args.Length < 3 || args.Length > 4) PrintHelp(); try { switch (args.Length) { case 3: Repo.Build(args[2]); break; case 4 when args[3] == "-f": Repo.Build(args[2], true); break; default: PrintHelp(); break; } } catch (Exception e) { Console.WriteLine("Build failed with error: " + e); } break; case "update-all": if (args.Length != 2) PrintHelp(); try { Repo.BuildAll(); } catch (Exception e) { Console.WriteLine("BuildAll failed with error: " + e); } break; case "remove": if (args.Length != 3) PrintHelp(); try { Repo.Remove(args[2]); } catch (Exception e) { Console.WriteLine("Remove failed with error: " + e); } break; case "list": if (args.Length != 2) PrintHelp(); try { Repo.List(); } catch (Exception e) { Console.WriteLine("List failed with error " + e); } break; default: PrintHelp(); break; } } private static void PrintHelp() { //TODO: add/remove [...] Console.WriteLine("Usage:"); Console.WriteLine("repomgr init "); Console.WriteLine("repomgr list"); Console.WriteLine("repomgr add "); Console.WriteLine("repomgr remove "); Console.WriteLine("repomgr update [-f]"); Console.WriteLine("repomgr update-all"); Console.WriteLine("repomgr daemon"); Environment.Exit(0); } private static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup(); } }