Last active
October 2, 2024 12:24
-
-
Save nateyolles/dd4ebe0a6b83c369029b to your computer and use it in GitHub Desktop.
AEM/CQ cURL: Adding include/exclude rules to package filters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Adding include/exclude rules to CQ/AEM package filters through cURL. | |
# Through a simple search, you will find numerous lists of CQ/AEM cURL commands. | |
# However, I haven't seen an example of adding rules to package filters. The | |
# JSON "rules" key takes an array value. You can leave the array empty if you | |
# don't need to include any rules. The array is of JSON objects with a | |
# "modifier" key and value of "include" or "exclude", and a "pattern" key with | |
# your path or regular expression as the value. | |
# create package | |
curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/testpackage?cmd=create \ | |
-d packageName=testpackage \ | |
-d groupName=my_packages | |
# add filters | |
curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/update.jsp \ | |
-F path=/etc/packages/my_packages/testpackage.zip -F packageName=testpackage \ | |
-F groupName=my_packages \ | |
-F filter="[{\"root\" : \"/content/my-site\", \"rules\": [{\"modifier\" : \"exclude\", \"pattern\" : \"/content/my-site/(.*)/folder-to-exclude(/.*)?\"}]}]" \ | |
-F '_charset_=UTF-8' | |
# build package | |
curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/testpackage.zip?cmd=build |
Hi Rohit,
You can create a config file where you can list all your filters and then write a function to
iterate through the list of filters:
create_filters() {
for (( c=0; c<=$filtersNum-1; c++ ))
do
# Creae filter node
curl --data jcr:primaryType=nt:unstructured --user $username:$password http://$host:$port/etc/packages/$grpName/$packageName1.zip/jcr:content/vlt:definition/filter/f$c >> log.txt
echo "add root path in filter number $c"
#echo "Status code for f$c : $addstatuscode"
# add root path in filter
curl -u $username:$password POST -F"root=${FILTERS[$c]}" $rules http://$host:$port/etc/packages/$grpName/$packageName.zip/jcr:content/vlt:definition/filter/f$c.rw.html >> log.txt
#echo "Status code for f$c : $addrootstatuscode"
done
}
Config:
host=localhost
port=4502
username=admin
password=admin
packageName=test
grpName=my_packages
filtersNum=2
FILTERS=(/content/WKND,/content/we-retail)
Hope this helps!!
If you need to add AC Handing to the package along with filters here is how you can do it :
curl -u admin:password -X POST http://HOSTNAME:PORT/crx/packmgr/update.jsp -F path=/etc/packages/my_packages/testpackage3.zip -F packageName=testpackage3 -F groupName=my_packages -F filter="[{"root" : "/content/xx/yy/CA", "rules": []}]" -F 'acHandling=merge_preserve' -F 'charset=UTF-8'
Made it to work on AEM 6.5
curl --insecure -u admin:password -X POST https://IP-Address/crx/packmgr/update.jsp \
-F path=/etc/packages/com.example/example-content-en-20231102.zip \
-F packageName=example-content-en-20231102 \
-F groupName=com.example \
-F 'filter=[{"root": "/content/example/en", "rules":[{"modifier": "exclude", "pattern": "/content/example/en/bad-content"}]}]'
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I need to add multiple roots to it but it seems to only pick up the first one when I am adding more than one.
For example: I'd like it to have the content of We-retail and WKND both. I'm using the same command as @nateyolles has described and I'm adding another root/ to it. Here's the command:
Only the first one gets picked, In this case /content/WKND