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;
}