Advertisement
Guest User

Untitled

a guest
Jul 27th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. <target name="deploy" depends="prepBuildDir,prepFlows">
  2. <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployRoot="build" singlePackage="true" maxPoll="${sf.maxPoll}" pollWaitMillis="${sf.maxWaitMillis}" testLevel="${test.level}" checkOnly="${check.only}" logType="${log.type}" ignoreWarnings="true" />
  3. </target>
  4.  
  5. <target name="prepBuildDir">
  6. <delete dir="build"/>
  7. <mkdir dir="build"/>
  8. <sync todir="build">
  9. <fileset dir="src">
  10. <exclude name="flows/*"/>
  11. </fileset>
  12. </sync>
  13. </target>
  14.  
  15. <target name="prepFlows" depends="prepBuildDir,retrieveCurrentFlows,findFlowsToDeploy"/>
  16.  
  17. <target name="retrieveCurrentFlows" depends="orgType,setCredentials">
  18. <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" retrieveTarget="build" unpackaged="flowDefinitions.xml" />
  19. </target>
  20.  
  21. <!--
  22. Compare retrieved flowDefinitions to ones in src
  23. If different and activeVersionNumber in src is greater, copy flow with activeVersionNumber to build/flows
  24. -->
  25. <target name="findFlowsToDeploy">
  26. <script language="javascript"><![CDATA[
  27. var File = java.io.File;
  28.  
  29. function version(xml) {
  30. var matches = (''+ xml).match(/activeVersionNumber>(d+)</);
  31. if (matches) {
  32. return parseInt(matches[1], 10);
  33. }
  34. }
  35.  
  36. function getFileContents(javaFile) {
  37. var contents = '';
  38. var lines = java.nio.file.Files.readAllLines(java.nio.file.Paths.get(javaFile.getPath()), java.nio.charset.Charset.forName('UTF-8'));
  39. for (var i = 0; i < lines.size(); i++) {
  40. contents += lines.get(i);
  41. }
  42. return contents;
  43. }
  44.  
  45. function getFlowVersion(flowFile) {
  46. var content = getFileContents(flowFile);
  47. return version(content);
  48. }
  49.  
  50. function addFileToFileset(fileset, path) {
  51. java.lang.System.out.println('Flow needs to be deployed: ' + path);
  52. fileset.appendIncludes([path]);
  53. }
  54.  
  55. function copyFiles(files, dest) {
  56. var copyTask = project.createTask('copy');
  57. if (typeof files === 'string') {
  58. copyTask.setFile(new File(files));
  59. } else {
  60. copyTask.add(files);
  61. }
  62. copyTask.setTodir(new File(dest));
  63. copyTask.setOverwrite(true);
  64. copyTask.perform();
  65. }
  66.  
  67. function createFileset(dir) {
  68. var fileset = project.createDataType('fileset');
  69. fileset.setDir(new File(dir));
  70. return fileset;
  71. };
  72.  
  73. function flowName(flowDefinition, version) {
  74. return flowDefinition.replace('.flowDefinition', '') + '-' + version + '.flow';
  75. }
  76.  
  77. var flowsToDeploy = createFileset('src/flows');
  78. var flowDefinitions = createFileset('src/flowDefinitions');
  79.  
  80. var srcFiles = flowDefinitions.getDirectoryScanner(project).getIncludedFiles();
  81. var flowFileNamesToDeploy = srcFiles.map(function(filename) {
  82. var orgFlow = new File('./build/flowDefinitions/', filename);
  83. var gitFlow = new File('./src/flowDefinitions/', filename);
  84. var gitVersion = getFlowVersion(gitFlow);
  85. if (!orgFlow.exists()) {
  86. return flowName(filename, gitVersion);
  87. }
  88. var orgVersion = getFlowVersion(orgFlow);
  89. if (gitVersion > orgVersion) {
  90. return flowName(filename, gitVersion);
  91. }
  92. return null;
  93. })
  94. .filter(function(filename) {
  95. return !!filename;
  96. });
  97. flowFileNamesToDeploy.forEach(addFileToFileset.bind(null, flowsToDeploy));
  98.  
  99. // Overwrite fetched FlowDefinitions and package.xml
  100. copyFiles(flowDefinitions, 'build/flowDefinitions');
  101. copyFiles('src/package.xml', 'build');
  102.  
  103. if (!flowsToDeploy.hasPatterns()) {
  104. java.lang.System.out.println('No Flows to deploy');
  105. } else {
  106. copyFiles(flowsToDeploy, 'build/flows');
  107. }
  108. ]]></script>
  109. </target>
  110.  
  111. <?xml version="1.0" encoding="UTF-8"?>
  112. <Package xmlns="http://soap.sforce.com/2006/04/metadata">
  113. <types>
  114. <members>*</members>
  115. <name>FlowDefinition</name>
  116. </types>
  117. <version>36.0</version>
  118. </Package>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement