export function fileTransformations(isFolderBasedDeployment: boolean, JSONFiles: any, xmlTransformation: boolean, xmlVariableSubstitution: boolean, folderPath: string) { if(xmlTransformation) { var environmentName = tl.getVariable('Release.EnvironmentName'); if(tl.osType().match(/^Win/)) { var transformConfigs = ["Release.config"]; if(environmentName && environmentName != 'Release') { transformConfigs.push(environmentName + ".config"); } xdtTransformationUtility.basicXdtTransformation(folderPath, transformConfigs); console.log(tl.loc("XDTTransformationsappliedsuccessfully")); } else { throw new Error(tl.loc("CannotPerformXdtTransformationOnNonWindowsPlatform")); } } if(xmlVariableSubstitution) { xmlSubstitutionUtility.substituteAppSettingsVariables(folderPath, isFolderBasedDeployment); console.log(tl.loc('XMLvariablesubstitutionappliedsuccessfully')); } if(JSONFiles.length != 0) { jsonSubstitutionUtility.jsonVariableSubstitution(folderPath, JSONFiles); console.log(tl.loc('JSONvariablesubstitutionappliedsuccessfully')); } }
export function advancedFileTransformations(isFolderBasedDeployment: boolean, targetFiles: any, xmlTransformation: boolean, variableSubstitutionFileFormat: string, folderPath: string, transformationRules: any) { if(xmlTransformation) { if(!tl.osType().match(/^Win/)) { throw Error(tl.loc("CannotPerformXdtTransformationOnNonWindowsPlatform")); } else { let isTransformationApplied: boolean = true; if(transformationRules.length > 0) { transformationRules.forEach(function(rule) { var args = ParameterParser.parse(rule); if(Object.keys(args).length < 2 || !args["transform"] || !args["xml"]) { tl.error(tl.loc("MissingArgumentsforXMLTransformation")); } else if(Object.keys(args).length > 2) { isTransformationApplied = xdtTransformationUtility.specialXdtTransformation(folderPath, args["transform"].value, args["xml"].value, args["result"].value) && isTransformationApplied; } else { isTransformationApplied = xdtTransformationUtility.specialXdtTransformation(folderPath, args["transform"].value, args["xml"].value) && isTransformationApplied; } }); } else{ var environmentName = tl.getVariable('Release.EnvironmentName'); let transformConfigs = ["Release.config"]; if(environmentName && environmentName.toLowerCase() != 'release') { transformConfigs.push(environmentName + ".config"); } isTransformationApplied = xdtTransformationUtility.basicXdtTransformation(folderPath, transformConfigs); } if(isTransformationApplied) { console.log(tl.loc("XDTTransformationsappliedsuccessfully")); } } } if(variableSubstitutionFileFormat === "xml") { if(targetFiles.length == 0) { xmlSubstitutionUtility.substituteAppSettingsVariables(folderPath, isFolderBasedDeployment); } else { targetFiles.forEach(function(fileName) { xmlSubstitutionUtility.substituteAppSettingsVariables(folderPath, isFolderBasedDeployment, fileName); }); } console.log(tl.loc('XMLvariablesubstitutionappliedsuccessfully')); } if(variableSubstitutionFileFormat === "json") { // For Json variable substitution if no target files are specified file files matching **\*.json if(!targetFiles || targetFiles.length == 0) { targetFiles = ["**/*.json"]; } jsonSubstitutionUtility.jsonVariableSubstitution(folderPath, targetFiles, true); console.log(tl.loc('JSONvariablesubstitutionappliedsuccessfully')); } }
export async function fileTransformations(isFolderBasedDeployment: boolean, JSONFiles: any, xmlTransformation: boolean, xmlVariableSubstitution: boolean, webDeployPkg: string) { var tempPackagePath; var folderPath = utility.generateTemporaryFolderOrZipPath(tl.getVariable('System.DefaultWorkingDirectory'), true); if(isFolderBasedDeployment) { tl.cp(path.join(webDeployPkg, '/*'), folderPath, '-rf', false); } else { await zipUtility.unzip(webDeployPkg, folderPath); } if(xmlTransformation) { var environmentName = tl.getVariable('Release.EnvironmentName'); if(tl.osType().match(/^Win/)) { var transformConfigs = ["Release.config"]; if(environmentName) { transformConfigs.push(environmentName + ".config"); } xdtTransformationUtility.basicXdtTransformation(folderPath, transformConfigs); console.log(tl.loc("XDTTransformationsappliedsuccessfully")); } else { throw new Error(tl.loc("CannotPerformXdtTransformationOnNonWindowsPlatform")); } } if(xmlVariableSubstitution) { await xmlSubstitutionUtility.substituteAppSettingsVariables(folderPath); console.log(tl.loc('XMLvariablesubstitutionappliedsuccessfully')); } if(JSONFiles.length != 0) { jsonSubstitutionUtility.jsonVariableSubstitution(folderPath, JSONFiles); console.log(tl.loc('JSONvariablesubstitutionappliedsuccessfully')); } if(isFolderBasedDeployment) { tempPackagePath = folderPath; webDeployPkg = folderPath; } else { var tempWebPackageZip = utility.generateTemporaryFolderOrZipPath(tl.getVariable('System.DefaultWorkingDirectory'), false); webDeployPkg = await zipUtility.archiveFolder(folderPath, "", tempWebPackageZip); tempPackagePath = webDeployPkg; tl.rmRF(folderPath, true); } return { "webDeployPkg": webDeployPkg, "tempPackagePath": tempPackagePath }; }
async function xmlVarSub() { var tags = ["applicationSettings", "appSettings", "connectionStrings", "configSections"]; var configFiles = [path.join(__dirname, 'L1XmlVarSub/Web_test.config'), path.join(__dirname, 'L1XmlVarSub/Web_test.Debug.config')]; var variableMap = { 'conntype' : 'new_connType', 'connectionString' : 'database_connection_string', 'webpages:Version' : '1.1.7.3', 'rmtype' : 'newRM@type', 'xdt:Transform' : 'DelAttributes', 'xdt:Locator' : 'Match(tag)' } for(var configFile of configFiles) { await xmlSubstitutionUtility.substituteXmlVariables(configFile, tags, variableMap); } }
async function xmlVarSub() { var tags = ["applicationSettings", "appSettings", "connectionStrings", "configSections"]; var configFiles = [path.join(__dirname, 'L1XmlVarSub/Web_test.config'), path.join(__dirname, 'L1XmlVarSub/Web_test.Debug.config')]; var variableMap = { 'conntype' : 'new_connType', "MyDB": "TestDB", 'webpages:Version' : '1.1.7.3', 'xdt:Transform' : 'DelAttributes', 'xdt:Locator' : 'Match(tag)', 'DefaultConnection': "Url=https://primary;Database=db1;ApiKey=11111111-1111-1111-1111-111111111111;Failover = {Url:'https://secondary', ApiKey:'11111111-1111-1111-1111-111111111111'}", 'OtherDefaultConnection': 'connectionStringValue2', 'ParameterConnection': 'New_Connection_String From xml var subs', 'connectionString': 'replaced_value' } var parameterFilePath = path.join(__dirname, 'L1XmlVarSub/parameters_test.xml'); for(var configFile of configFiles) { await xmlSubstitutionUtility.substituteXmlVariables(configFile, tags, variableMap, parameterFilePath); } }
export function fileTransformations(isFolderBasedDeployment: boolean, JSONFiles: any, xmlTransformation: boolean, xmlVariableSubstitution: boolean, folderPath: string, isMSBuildPackage: boolean) { if(xmlTransformation) { if(isMSBuildPackage) { var debugMode = tl.getVariable('system.debug'); if(debugMode && debugMode.toLowerCase() == 'true') { tl.warning(tl.loc('AutoParameterizationMessage')); } else { console.log(tl.loc('AutoParameterizationMessage')); } } var environmentName = tl.getVariable('Release.EnvironmentName'); if(tl.osType().match(/^Win/)) { var transformConfigs = ["Release.config"]; if(environmentName && environmentName.toLowerCase() != 'release') { transformConfigs.push(environmentName + ".config"); } var isTransformationApplied: boolean = xdtTransformationUtility.basicXdtTransformation(folderPath, transformConfigs); if(isTransformationApplied) { console.log(tl.loc("XDTTransformationsappliedsuccessfully")); } } else { throw new Error(tl.loc("CannotPerformXdtTransformationOnNonWindowsPlatform")); } } if(xmlVariableSubstitution) { xmlSubstitutionUtility.substituteAppSettingsVariables(folderPath, isFolderBasedDeployment); console.log(tl.loc('XMLvariablesubstitutionappliedsuccessfully')); } if(JSONFiles.length != 0) { jsonSubstitutionUtility.jsonVariableSubstitution(folderPath, JSONFiles); console.log(tl.loc('JSONvariablesubstitutionappliedsuccessfully')); } }
targetFiles.forEach(function(fileName) { xmlSubstitutionUtility.substituteAppSettingsVariables(folderPath, isFolderBasedDeployment, fileName); });