generator-office
Version:
Yeoman generator for creating Microsoft Office projects using any text editor.
127 lines • 5.11 kB
JavaScript
import fs from 'fs';
import _ from 'lodash';
export default class projectsJsonData {
m_projectJsonDataFile = '/projectProperties.json';
m_projectJsonData;
constructor(templatePath) {
const jsonData = fs.readFileSync(templatePath + this.m_projectJsonDataFile);
this.m_projectJsonData = JSON.parse(jsonData.toString());
}
isValidProjectType(input) {
for (const key in this.m_projectJsonData.projectTypes) {
if (_.toLower(input) == key) {
return true;
}
}
return false;
}
isValidHost(input) {
for (const key in this.m_projectJsonData.hostTypes) {
if (_.toLower(input) == key) {
return true;
}
}
return false;
}
isValidManifestType(input) {
for (const key in this.m_projectJsonData.manifestTypes) {
if (_.toLower(input) == key) {
return true;
}
}
return false;
}
getProjectDisplayName(projectType) {
return this.m_projectJsonData.projectTypes[_.toLower(projectType)].displayname;
}
getParsedProjectJsonData() {
return this.m_projectJsonData;
}
getProjectTemplateNames() {
const projectTemplates = [];
for (const key in this.m_projectJsonData.projectTypes) {
projectTemplates.push(key);
}
return projectTemplates;
}
projectBothScriptTypes(projectType) {
return this.m_projectJsonData.projectTypes[_.toLower(projectType)].templates.javascript != undefined && this.m_projectJsonData.projectTypes[_.toLower(projectType)].templates.typescript != undefined;
}
getManifestOptions(projectType, host) {
const selectedHost = this.m_projectJsonData.projectTypes[projectType]?.supportedHosts[host];
return selectedHost ? selectedHost.supportedManifestTypes : [];
}
getHostOptions(projectType) {
const selectedProjectType = this.m_projectJsonData.projectTypes[projectType];
return selectedProjectType ? Object.keys(selectedProjectType.supportedHosts) : [];
}
getScriptTypeOptions(projectType) {
const scriptTypes = [];
for (const template in this.m_projectJsonData.projectTypes[projectType].templates) {
let scriptType = "unknown";
if (template === "javascript") {
scriptType = "JavaScript";
}
else if (template === "typescript") {
scriptType = "TypeScript";
}
scriptTypes.push(scriptType);
}
return scriptTypes;
}
getHostDisplayName(hostKey) {
for (const key in this.m_projectJsonData.hostTypes) {
if (_.toLower(hostKey) == key) {
return this.m_projectJsonData.hostTypes[key].displayname;
}
}
return "";
}
getManifestDisplayName(hostKey) {
return this.m_projectJsonData.manifestTypes[hostKey]?.displayname;
}
getProjectTemplateRepository(projectTypeKey, scriptType) {
for (const key in this.m_projectJsonData.projectTypes) {
if (_.toLower(projectTypeKey) == key) {
if (projectTypeKey == 'manifest') {
return this.m_projectJsonData.projectTypes[key].templates.manifestonly.repository;
}
else {
return this.m_projectJsonData.projectTypes[key].templates[scriptType].repository;
}
}
}
return undefined;
}
getProjectTemplateBranchName(projectTypeKey, scriptType, prerelease) {
for (const key in this.m_projectJsonData.projectTypes) {
if (_.toLower(projectTypeKey) == key) {
if (projectTypeKey == 'manifest') {
return this.m_projectJsonData.projectTypes.manifest.templates.branch;
}
else {
if (prerelease) {
if (this.m_projectJsonData.projectTypes[key].templates[scriptType].prerelease) {
return this.m_projectJsonData.projectTypes[key].templates[scriptType].prerelease;
}
else {
return "master";
}
}
else {
return this.m_projectJsonData.projectTypes[key].templates[scriptType].branch;
}
}
}
}
return undefined;
}
getProjectRepoAndBranch(projectTypeKey, scriptType, prerelease) {
scriptType = scriptType === 'ts' ? 'typescript' : 'javascript';
const repoBranchInfo = { repo: undefined, branch: undefined };
repoBranchInfo.repo = this.getProjectTemplateRepository(projectTypeKey, scriptType);
repoBranchInfo.branch = (repoBranchInfo.repo) ? this.getProjectTemplateBranchName(projectTypeKey, scriptType, prerelease) : undefined;
return repoBranchInfo;
}
}
//# sourceMappingURL=projectsJsonData.js.map