Skip to content

Instantly share code, notes, and snippets.

@mmilidoni
Created January 19, 2023 15:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mmilidoni/c0b10c82716317a2256d89fa7519b9ca to your computer and use it in GitHub Desktop.
Save mmilidoni/c0b10c82716317a2256d89fa7519b9ca to your computer and use it in GitHub Desktop.
SFDC - Generate package from metadata list
'''
select id, copado__User_Story__r.Name, copado__User_Story__r.copado__User_Story_Title__c, copado__Metadata_API_Name__c, copado__User_Story__r.copado__Status__c
from copado__User_Story_Metadata__c
where copado__User_Story__r.copado__Project__c = 'aQ42K0000008ONySAM'
'''
f = open("metadata.txt", "r")
packageFolder = "deltaPackages"
packageXMLFile = packageFolder + '/package.xml'
packageZIPFile = packageFolder + "/package.zip"
checkList = set()
res = {}
for mdt in f:
currentList = mdt.split(".", 1)
if currentList[0] not in res:
res[currentList[0]] = set()
if mdt not in checkList:
res[currentList[0]].add(currentList[1])
checkList.add(mdt)
print(res)
f = open(packageXMLFile, "w")
f.write('<?xml version="1.0" encoding="UTF-8"?>\n<Package xmlns="http://soap.sforce.com/2006/04/metadata">\n')
for k in res.keys():
f.write(' <types>\n')
for v in res[k]:
f.write(' <members>' + v.strip() + '</members>\n')
f.write(' <name>' + k + '</name>\n')
f.write(' </types>\n')
f.write(' <version>56.0</version>\n</Package>\n')
f.close()
import subprocess
import sys
bashCommand = 'sfdx force:mdapi:retrieve -a 56.0 -r ' + packageFolder + ' -k ' + packageXMLFile + ' -u nnfs2 --zipfilename ../' + packageZIPFile
result = subprocess.run(["bash", "-c", bashCommand], capture_output=True, text=True)
print(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment