I would like to ask for some direction, since I tried different approaches, and I was not able to achieve my goal.
My main goal is be able to delete the entire block for the destructiveChanges.xml when some key was found, in this case the current value is "ApexClass", so the entire block must be deleted.
**<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>**
This is my code:
**job1:
stage: test
before_script:
- apt-get update;apt-get install -y xmlstarlet
script:
- nomDeployedDC=${NONDEPLOYEDDC}
- echo -e "Test ${nomDeployedDC} "
- >
if [ ! -z "$nomDeployedDC" ]; then
echo "=== Additional cleaning ==="
for cleanItem in ${nomDeployedDC}; do
metadaType=${cleanItem%:*}
echo -e "Loop ${metadaType} "
cat destructiveChanges.xml
echo -ne "Cleaning ${metadaType} "
xmlstarlet ed --inplace -d '//_:types[_:name="${metadaType}"]' destructiveChanges.xml
cat destructiveChanges.xml
echo -e "\rCleaning final ${metadaType} "
done
isDeleted="$(grep -c "<types>" destructiveChanges.xml)"
deleted=${isDeleted%:*}
echo -e "isDeleted ${deleted} "
if [ "$deleted" == 1 ]; then
echo "=== Deleting destructiveChanges.xml file ==="
rm - destructiveChanges.xml
fi
else
echo -e "Additional cleaning should be added in the destructiveClean.list file "
fi**
The output
**
=== Additional cleaning ===
Loop ApexClass
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>EmailTemplate</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>CustomObject</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
</Package>Cleaning ApexClass <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<name>ApexClass</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>EmailTemplate</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
<types>
<name>CustomObject</name>
<members>CC_CaseScenarioMatchingJobQueueable</members>
</types>
</Package>
Cleaning final ApexClass
isDeleted 3
Cleaning up file based variables
00:01
Job succeeded
**
Is there anyone can help me with this? Thank you so much!