private static async Task CommitDocumentsAsync()

in CommandLine/XblConfig/Program.cs [174:224]


        private static async Task<int> CommitDocumentsAsync(CommitDocumentsOptions options)
        {
            if (options.DocumentType == DocumentType.Sandbox && string.IsNullOrEmpty(options.Sandbox))
            {
                throw new ArgumentException("Sandbox must be specified when committing sandbox documents.");
            }

            if (options.DocumentType == DocumentType.Account)
            {
                options.Sandbox = null;
            }

            IEnumerable<string> files = Glob(options.Files);
            int fileCount = files.Count();
            if (fileCount == 0)
            {
                Console.Error.WriteLine("There are no files selected to commit.");
                return -1;
            }

            Console.WriteLine($"Committing {fileCount} file(s) to Xbox Live.");

            string eTag = options.ETag ?? GetETag(files, options.Sandbox);
            if (options.Force)
            {
                eTag = null;
            }

            Task<ConfigResponse<ValidationResponse>> documentsTask;
            if (options.DocumentType == DocumentType.Sandbox)
            {
                Console.WriteLine("Committing sandbox documents.");
                documentsTask = ConfigurationManager.CommitSandboxDocumentsAsync(files, options.Scid, options.Sandbox, eTag, options.ValidateOnly, options.Message);
            }
            else
            {
                Console.WriteLine("Committing account documents.");
                documentsTask = ConfigurationManager.CommitAccountDocumentsAsync(files, options.AccountId, eTag, options.ValidateOnly, options.Message);
            }

            ConfigResponse<ValidationResponse> result = await documentsTask;

            SaveETag(result.Result.ETag, Path.GetDirectoryName(files.First()), options.Sandbox);

            Console.WriteLine($"Can Commit: {result.Result.CanCommit}");
            Console.WriteLine($"Committed:  {result.Result.Committed}");

            PrintValidationInfo(result.Result.ValidationInfo);

            return 0;
        }