# Rules:
# 1. Lines starting with # character are considered comments and skipped. Empty lines are also skipped.
# 2. Every rule has 5 fields: regexp match, vendor, product, software platform, flags
# 3. Field delimiter is ; symbol
# 4. vendor and product can contain boost::format specificators like %1%, %2%, etc.
# 5. %1% is always current value of field, %2% - first regexp capture, %3% - second one, etc.
# 6. All matching rules are applied in order of their listing until a matching cpe vendor/product combination is found.
# 7. Available flags (optionally separated by "|" character):
#    - temp - don't keep results of substitution
#    - finish - stop processing remaining rules if this one matches
#

# first remove multilib prefixes
i586-(.+);%1%;%2%;%1%;

# now list hardcoded matches (exceptions)
389-ds;%1%;389_directory_server;%1%;finish
389-admin;%1%;389_administration_server;%1%;finish
kernel-image-.+;%1%;linux_kernel;%1%;finish
wine-vanilla;%1%;wine;%1%;finish
wine-staging;%1%;wine;%1%;finish
adobe-flash-player;adobe;flash_player_for_linux;%1%;finish
baculum[[:digit:]]*.*;%1%;bacula-web;%1%;finish
binutils-.*;%1%;binutils;%1%;finish
busybox-.*;%1%;busybox;%1%;finish
make-initrd-busybox;%1%;busybox;%1%;finish
mkinitrd-busybox;%1%;busybox;%1%;finish
dbus;%1%;d-bus;%1%;finish
.*?libreoffice-still.*?;%1%;libreoffice;%1%;finish
.*?openoffice.org.*?;%1%;openoffice;%1%;finish
dotnetcore;%1%;.net_core;%1%;finish
dotnet;%1%;.net;%1%;finish
dotnet-[[:digit:]\.-_]+;%1%;.net;%1%;finish
golang;%1%;go;%1%;finish
nvidia_glx;nvidia;gpu_driver;%1%;temp
nvidia_glx;nvidia;display_driver;%1%;temp
nvidia_glx;nvidia;gpu_display_driver;%1%;finish
nvidia_glx[_-].+;nvidia;gpu_driver;%1%;temp
nvidia_glx[_-].+;nvidia;display_driver;%1%;temp
nvidia_glx[_-].+;nvidia;gpu_display_driver;%1%;finish
qt[[:digit:]\.-_]*-base;%1%;qt;%1%;finish
rpm-build;%1%;rpm;%1%;temp
rpmbuild;%1%;rpm;%1%;temp
librpmbuild;%1%;rpm;%1%;temp
(.*?)wxgtk(.*?);%1%;wxwidgets;%1%;temp
x2goserver;%1%;x2go_server;%1%;finish

# common transformations
kde[[:digit:]]*-(.+);%1%;%2%;%1%;
python3?-module-(.+);python;%2%;%1%;
gem-(.+);%1%;%2%;ruby;
ruby-(.+);%1%;%2%;ruby;
custom-(.+);%1%;%2%;%1%;
java-[[:digit:]\.-_]+-(.+);%1%;%2%;%1%;
mingw-[[:digit:]\.-_]+-(.+);%1%;%2%;%1%;
samba[[:digit:]\.-_]+-(.+);%1%;samba-%2%;%1%;
(.+?)-debuginfo;%1%;%2%;%1%;
(.+?)-doc;%1%;%2%;%1%;
(.+?)-devel;%1%;%2%;%1%;
(.+?)-libs;%1%;%2%;%1%;
(.+?)-esr;%1%;%2%;%1%;
(.+?)-gost;%1%;%2%;%1%;
lib(.+);%1%;%2%;%1%;temp
(.+?)-[[:digit:]\.-_]*;%1%;%2%;%1%;temp
(.+?)[[:digit:]\.-_]*;%1%;%2%;%1%;temp
lib(.+?)[[:digit:]\.-_]*;%1%;%2%;%1%;
(.+?)[_-]qt[[:digit:]]*;%1%;%2%;%1%;
