in src/localizationStringsUploader.ts [20:118]
public static async UploadStringsToCommonRepo(updatedVisuals: IndexedFoldersSet) {
if (!Object.keys(updatedVisuals).length) {
console.log("Nothing to update");
return null;
}
let sha: ShaModel;
let github: GitHubApi = GithubApiCreator.CreateGithubApi();
let prExists: boolean = await LocalizationStringsUploader.IsPullRequestExists(LocalizationStringsUploader.ms,
LocalizationStringsUploader.localizationUtilsRepoName,
"pbicvbot:master");
sha = await LocalizationStringsUploader.GetShaModelForCurrentCommit(github, LocalizationStringsUploader.localizationUtilsRepoName, "heads/master");
let namedBlobs: { [key: string]: string } = {};
let promises: Promise<any>[] = [];
for (let visualName in updatedVisuals) {
let content: IndexedObjects = updatedVisuals[visualName][LocalizationStringsUploader.enUs];
promises.push(
github.gitdata.createBlob({
content: JSON.stringify(content, null, "\t"),
encoding: "utf-8",
owner: LocalizationStringsUploader.pbicvbot,
repo: LocalizationStringsUploader.localizationUtilsRepoName
})
.then((blob) => {
namedBlobs[visualName] = blob.data.sha;
})
);
}
await Promise.all(promises)
.catch(err => {
console.log(err);
});
let trees: object[] = [];
for (let visualName in namedBlobs) {
let blobSha: string = namedBlobs[visualName];
trees.push({
"path": visualName + "/en-US/resources.resjson",
"mode": "100644",
"type": "blob",
"sha": blobSha
});
}
github.gitdata.createTree({
owner: LocalizationStringsUploader.pbicvbot,
repo: LocalizationStringsUploader.localizationUtilsRepoName,
base_tree: sha.treeSha,
tree: JSON.stringify(trees)
})
.then((newTree) => {
return github.gitdata.createCommit({
message: "updated localization strings",
tree: newTree.data.sha,
owner: LocalizationStringsUploader.pbicvbot,
repo: LocalizationStringsUploader.localizationUtilsRepoName,
parents: [sha.headCommitSha]
});
})
.then((ref) => {
return github.gitdata.updateReference({
force: true,
owner: LocalizationStringsUploader.pbicvbot,
repo: LocalizationStringsUploader.localizationUtilsRepoName,
ref: "heads/master",
sha: ref.data.sha
});
})
.then(() => {
return github.pullRequests.getAll({
owner: LocalizationStringsUploader.ms,
repo: LocalizationStringsUploader.localizationUtilsRepoName
})
.then((pullRequests) => {
if (!prExists) {
return github.pullRequests.create({
base: "master",
owner: LocalizationStringsUploader.ms,
repo: LocalizationStringsUploader.localizationUtilsRepoName,
head: "pbicvbot:master",
title: "Localization strings update"
});
}
})
})
.catch((error) => {
console.log(error);
});
}