commit fff988c

chld  ·  2026-08-30 04:23:05 +0000 UTC
parent fff988c
pm: init
1 files changed,  +75, -0
A pm
A pm
+75, -0
 1@@ -0,0 +1,75 @@
 2+#!/bin/guile
 3+!#
 4+
 5+;; print manifests
 6+;; a extension for dtr written in guile
 7+;; usage: dtr pm <pkg>
 8+
 9+(use-modules (ice-9 popen)
10+	     (ice-9 rdelim)
11+	     (srfi srfi-1))
12+
13+(define pkg
14+  (string-trim-right
15+   (last
16+    (string-split
17+     (cadr (command-line))
18+     #\/
19+     ))
20+   #\newline
21+   )
22+  )
23+
24+(define l '())
25+
26+(call-with-input-file
27+    (format #f "/var/lib/spc/installed")
28+  (lambda (g)
29+    
30+    (unless (member pkg (string-split (read-string g) #\newline)string=?)
31+      
32+      (format #t "~aERROR:~a package '~a' not found~%"
33+	      "\x1b[31;1m" "\x1b[m"
34+	      pkg)
35+      (exit 1))
36+    ))
37+
38+(call-with-input-file
39+    (format #f "/var/lib/spc/lock/~a.lock" pkg)
40+  (lambda (f)
41+    (set! l
42+	  (string-split
43+	   (read-string f)
44+	   #\newline)
45+	  )
46+    ))
47+
48+;; https://codeberg.org/kiss-community/kiss/src/commit/32ed1933ac8ccc5816cfdcc51769fe756232fc68/contrib/kiss-size#L28
49+
50+(let m
51+    (
52+     (n 0)
53+     )
54+
55+  (when (< n (length l))
56+    (let* (
57+	   (cl (list-ref l n))
58+	   (p (car (string-split cl #\|)))
59+	   )
60+      (when (not (or
61+		  (string-contains
62+		   cl
63+		   ": "
64+		   )
65+		  (string-contains cl "deps:")
66+		  (string-contains cl "files:")
67+		  (string-suffix? "/" p)
68+		  )
69+		 )
70+
71+	(format #t
72+		"~a~%"
73+		p
74+		))
75+	(m (+ n 1))
76+	)))