in src/localizationStringsUploader.ts [120:226]
public static async UploadStringsToAllRepos(updatedVisuals: IndexedFoldersSet, source: SourceType) {
if (!Object.keys(updatedVisuals).length) {
console.log("Nothing to update");
return null;
}
let promises: Promise<any>[] = [];
let github: GitHubApi = GithubApiCreator.CreateGithubApi();
let branchRef: string = source === SourceType.Capabilities ? "heads/locUpdateCapabilities" : "heads/locUpdate";
let prHead: string = source === SourceType.Capabilities ? "pbicvbot:locUpdateCapabilities" : "pbicvbot:locUpdate";
for (let visualName in updatedVisuals) {
let folders: IndexedObjects = updatedVisuals[visualName];
let sha: ShaModel;
let prExists: boolean = await LocalizationStringsUploader.IsPullRequestExists(LocalizationStringsUploader.ms, visualName, prHead);
if (!prExists) {
sha = await LocalizationStringsUploader.UpdateBranchFromMasterRepo(github, visualName, branchRef);
} else {
sha = await LocalizationStringsUploader.GetShaModelForCurrentCommit(github, visualName, branchRef);
}
if (Object.keys(folders).length) {
let promises: Promise<any>[] = [];
for (let folderName in folders) {
if (folderName === LocalizationStringsUploader.enUs && source === SourceType.UtilsRepo) {
continue;
}
let content: DisplayNameAndKeyPairs = folders[folderName];
promises.push(github.gitdata.createBlob({
content: JSON.stringify(content, null, "\t"),
encoding: "utf-8",
owner: LocalizationStringsUploader.pbicvbot,
repo: visualName
})
.then((blob) => {
return {
path: "stringResources/" + folderName + "/resources.resjson",
sha: blob.data.sha
}
}));
}
Promise.all(promises)
.then((values: object[]) => {
let treesArrays: Array<object> = values.map((x: any) => {
return {
"path": x.path,
"mode": "100644",
"type": "blob",
"sha": x.sha
}
}
);
console.log("before create tree " + visualName);
return github.gitdata.createTree({
owner: LocalizationStringsUploader.pbicvbot,
repo: visualName,
base_tree: sha.treeSha,
tree: JSON.stringify(treesArrays)
});
})
.then((newTree) => {
console.log("after create tree " + visualName);
console.log("before create commit " + visualName);
return github.gitdata.createCommit({
message: "updated localization strings",
tree: newTree.data.sha,
owner: LocalizationStringsUploader.pbicvbot,
repo: visualName,
parents: [sha.headCommitSha]
});
})
.then((ref) => {
console.log("after create commit " + visualName);
return github.gitdata.updateReference({
force: true,
owner: LocalizationStringsUploader.pbicvbot,
repo: visualName,
ref: branchRef,
sha: ref.data.sha
});
})
.then(() => {
if (!prExists) {
let title: string = "Localization strings from " + (source === SourceType.Capabilities ? "capabilities" : "utils") + " update";
return github.pullRequests.create({
base: "master",
owner: LocalizationStringsUploader.ms,
repo: visualName,
head: prHead,
title: title
});
}
});
}
}
}