config

OpenBSD system configuration
git clone git://jacobedwards.org/config
Log | Files | Refs | README

openbsd-pkgspec.awk (789B)


      1 # Copyright 2022 Jacob R. Edwards
      2 #
      3 # These functions get various parts of an OpenBSD package spec (as
      4 # defined in packages-specs(7))
      5 
      6 function pkgflavor(pkg)
      7 {
      8 	if (match(pkg, "-[0-9]?[^-]*-"))
      9 		return substr(pkg, RSTART + RLENGTH)
     10 }
     11 
     12 function pkgversion(pkg)
     13 {
     14 	if (match(pkg, "-[0-9][^-]*"))
     15 		return substr(pkg,  RSTART + 1, RLENGTH - 1)
     16 }
     17 
     18 function pkgstem(pkg)
     19 {
     20 	return substr(pkg, 1,
     21 	    match(pkg, "-([0-9]|-)") ? (RSTART - 1) : length(pkg))
     22 }
     23 
     24 
     25 # Generate a regex for matching complete package specs from incomplete
     26 # package specs. (Requires unreg.awk.)
     27 function pkgregex(pkg, _, s, v, f)
     28 {
     29 	if (!(s = pkgstem(pkg)))
     30 		return;
     31 	v = pkgversion(pkg);
     32 	f = pkgflavor(pkg);
     33 	return sprintf("^%s-%s%s$", unreg(s), (v ? unreg(v) : "[0-9][^-]+"),
     34 	    (f ? ("-" unreg(f)) : ""));
     35 }