MCPcopy Create free account
hub / github.com/Squirrel/Squirrel.Windows / main

Method main

src/SyncReleases/Program.cs:36–84  ·  view source on GitHub ↗
(string[] args)

Source from the content-addressed store, hash-verified

34 }
35
36 async Task<int> main(string[] args)
37 {
38 using (var logger = new SetupLogLogger(false) { Level = Squirrel.SimpleSplat.LogLevel.Info }) {
39 Squirrel.SimpleSplat.SquirrelLocator.CurrentMutable.Register(() => logger, typeof(Squirrel.SimpleSplat.ILogger));
40
41 var releaseDir = default(string);
42 var repoUrl = default(string);
43 var token = default(string);
44
45 opts = new OptionSet() {
46 "Usage: SyncReleases.exe command [OPTS]",
47 "Builds a Releases directory from releases on GitHub",
48 "",
49 "Options:",
50 { "h|?|help", "Display Help and exit", _ => {} },
51 { "r=|releaseDir=", "Path to a release directory to download to", v => releaseDir = v},
52 { "u=|url=", "When pointing to GitHub, use the URL to the repository root page, else point to an existing remote Releases folder", v => repoUrl = v},
53 { "t=|token=", "The OAuth token to use as login credentials", v => token = v},
54 };
55
56 opts.Parse(args);
57
58 if (repoUrl == null || repoUrl.StartsWith("http", true, CultureInfo.InvariantCulture) == false) {
59 ShowHelp();
60 return -1;
61 }
62
63 var releaseDirectoryInfo = new DirectoryInfo(releaseDir ?? Path.Combine(".", "Releases"));
64 if (!releaseDirectoryInfo.Exists) releaseDirectoryInfo.Create();
65
66 var githubException = default(Exception);
67 try {
68 await SyncImplementations.SyncFromGitHub(repoUrl, token, releaseDirectoryInfo);
69 return 0;
70 } catch (Exception ex) {
71 githubException = ex;
72 Console.Error.WriteLine("Attempting to sync URL as remote RELEASES folder");
73 }
74
75 try {
76 await SyncImplementations.SyncRemoteReleases(new Uri(repoUrl), releaseDirectoryInfo);
77 } catch (Exception) {
78 Console.Error.WriteLine("Failed to sync URL as GitHub repo: " + githubException.Message);
79 throw;
80 }
81 }
82
83 return 0;
84 }
85
86 public void ShowHelp()
87 {

Callers 1

MainMethod · 0.45

Calls 5

SyncFromGitHubMethod · 0.80
SyncRemoteReleasesMethod · 0.80
RegisterMethod · 0.45
ParseMethod · 0.45
CreateMethod · 0.45

Tested by

no test coverage detected