mtree-to-plist.awk revision 280215
1126745Sbenno#!/usr/bin/awk
2126745Sbenno/^[^#]/ {
3126745Sbenno	gsub(/^\./,"", $1)
4126745Sbenno	uname = gname = mode = flags = tags = type = ""
5126745Sbenno	for (i=2; i<=NF; i++) {
6126745Sbenno		if ($i ~ /^uname=/) {
7126745Sbenno			uname=$i
8126745Sbenno			gsub(/uname=/, "", uname)
9126745Sbenno		} else if ($i ~ /^gname=/) {
10126745Sbenno			gname=$i
11126745Sbenno			gsub(/gname=/, "", gname)
12126745Sbenno		} else if ($i ~ /^mode=/) {
13126745Sbenno			mode=$i
14126745Sbenno			gsub(/mode=/,"", mode)
15126745Sbenno		} else if ($i ~ /^flags=/) {
16126745Sbenno			flags=$i
17126745Sbenno			gsub(/flags=/, "", flags)
18126745Sbenno		} else if ($i ~ /^tags=/) {
19126745Sbenno			tags=$i
20126745Sbenno			gsub(/tags=/, "", tags)
21126745Sbenno		} else if ($i ~ /^type=dir/) {
22126745Sbenno			type="dir"
23126745Sbenno		}
24126745Sbenno	}
25126745Sbenno	if (length(tags) == 0)
26126745Sbenno		next
27126745Sbenno	if (tags ~ /package=/) {
28126745Sbenno		ext = pkgname = pkgend = ""
29126745Sbenno		split(tags, a, ",");
30126745Sbenno		for (i in a) {
31126745Sbenno			if (a[i] ~ /^package=/) {
32126745Sbenno				pkgname=a[i]
33126745Sbenno				gsub(/package=/, "", pkgname)
34126745Sbenno			} else if (a[i] == "config") {
35126745Sbenno				type="config"
36126745Sbenno			} else if (a[i] == "development" || a[i] == "profile") {
37126745Sbenno				pkgend=a[i]
38126745Sbenno			} else {
39126745Sbenno				if (ext != "")
40126745Sbenno					ext=ext"-"a[i]
41126745Sbenno				else
42126745Sbenno					ext=a[i]
43126745Sbenno			}
44126745Sbenno		}
45126745Sbenno		if (ext != "") {
46131861Sru			if (pkgname == "runtime") {
47131530Sru				pkgname=ext
48131530Sru			} else {
49131861Sru				pkgname=pkgname"-"ext
50126745Sbenno			}
51131861Sru		}
52131530Sru		if (pkgend != "") {
53131530Sru			if (pkgname == "runtime") {
54131861Sru				pkgname=pkgend
55126745Sbenno			} else {
56131861Sru				pkgname=pkgname"-"pkgend
57131861Sru			}
58126745Sbenno		}
59131861Sru	} else {
60126745Sbenno		print "No packages specified in line: $0" > 2
61126745Sbenno		next
62126745Sbenno	}
63242997Sjoel	output=pkgname".plist"
64131861Sru
65126745Sbenno	print "@"type"("uname","gname","mode","flags") " $1 > output
66131861Sru}
67126745Sbenno