public Uploader(IO.Google.Drive drive) { this.drive = drive; }
static int Main(string[] args) { var options = new Options(); string verb = ""; object subOptions = null; var ps = new CommandLine.ParserSettings(); IUserCredentialApplication credential = new Auth.UserCredentialApplicationFromFile(); CommandLine.Parser parser = new CommandLine.Parser(new CommandLine.ParserSettings { MutuallyExclusive = true, CaseSensitive = false, HelpWriter = Console.Error }); parser = CommandLine.Parser.Default; if (parser.ParseArguments(args, options, (_verb, _subOptions) => { verb = _verb; subOptions = _subOptions; })) { (subOptions as BaseOptions).CommandLine = string.Join(" ", args); switch (verb) { case "upload": { var uploadOptions = subOptions as UploadOptions; if (!uploadOptions.Batch && string.IsNullOrWhiteSpace(uploadOptions.ModuleName)) { Console.Error.Write(options.GetUsage("upload")); return(-1); } var drive = new IO.Google.Drive(credential); var uploader = new Uploader(drive); uploader.Upload(uploadOptions); } break; case "download": { var drive = new IO.Google.Drive(credential); var downloader = new Downloader(drive); downloader.Download(subOptions as DownloadOptions); } break; case "diff": { var diffOptions = subOptions as DiffOptions; var drive = new IO.Google.Drive(credential); var folder = drive.FindFolder(diffOptions.GDriveFolder); ITranslationModule localModule = IO.ResX.FromResX(diffOptions.ResXDir, diffOptions.ModuleName, "en"); var downloader = new Downloader(drive); var xlsx = downloader.DownloadXlsx(diffOptions); var _remoteModule = IO.XlsX.FromXLSX(diffOptions.FileName, "en", xlsx); _remoteModule.Name = diffOptions.ModuleName; ITranslationModule remoteModule = _remoteModule.FilterByTags(diffOptions.Tags); TranslationModuleDiff diff = localModule.Diff(remoteModule); var diffJson = Newtonsoft.Json.JsonConvert.SerializeObject(diff, Newtonsoft.Json.Formatting.Indented); Console.OutputEncoding = System.Text.Encoding.UTF8; Console.Write(diffJson); if (diffOptions.HTML) { var htmlLogger = new HTMLConcatLogger(); diff.Print(htmlLogger); var fileName = System.IO.Path.GetTempFileName() + ".html"; System.IO.File.WriteAllText(fileName, htmlLogger.HTML); System.Diagnostics.Process.Start(fileName); } } break; case "patch": { var patchOptions = subOptions as PatchOptions; //read patch data from stdin Console.InputEncoding = System.Text.Encoding.UTF8; var jsonReader = new System.Text.StringBuilder(); string s; while ((s = Console.ReadLine()) != null) { jsonReader.AppendLine(s); } string json = jsonReader.ToString(); //string json = System.IO.File.ReadAllText(@".\diff"); var diff = Newtonsoft.Json.JsonConvert.DeserializeObject <TranslationModuleDiff>(json); TranslationModule localModule = IO.ResX.FromResX(patchOptions.ResXDir, patchOptions.ModuleName, "en"); localModule.Patch(diff); IO.ResX.ToResX(localModule, patchOptions.ResXDir); } break; } } return(0); }