Пример #1
0
 public Uploader(IO.Google.Drive drive)
 {
     this.drive = drive;
 }
Пример #2
0
        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);
        }