commit eba34d94a1f2f6c7622fed94f57938e65a8a8676
parent a44828d0acf4d6a92b6d15cc5c802082be08c561
Author: ChanderG <[email protected]>
Date: Sat, 29 Nov 2025 11:24:27 +0530
setup queue to manage tasks
Diffstat:
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/grep.asd b/grep.asd
@@ -7,7 +7,8 @@
:depends-on (:uiop
:filesystem-utils
:pathname-utils
- :vom)
+ :vom
+ :lparallel)
:build-operation "program-op"
:build-pathname "cl-grep"
:entry-point "cl-grep:main")
diff --git a/grep.lisp b/grep.lisp
@@ -1,5 +1,9 @@
(in-package :cl-grep)
+(defparameter *queue* nil)
+(defun setup-task-queue ()
+ (setf *queue* (lq:make-queue)))
+
(defun queue-file (file)
(lo "Visiting file: ~a" file)
(let* ((name (pu:file-name file))
@@ -7,8 +11,9 @@
(lc (char name (- (length name) 1))))
(when (member lc blacklist)
(lo "Skipping ignorable file: ~a" file)
- (return-from queue-file nil))))
+ (return-from queue-file nil))
;; do the actual thing here
+ (lq:push-queue file *queue*)))
(defun fs-walker (dir)
(lo "Visiting dir: ~a" dir)
@@ -27,7 +32,9 @@
;; Main entrypoint for the grep functionality
(defun grep-launcher (str dir)
- (fs-walker dir))
+ (setup-task-queue)
+ (fs-walker dir)
+ (lo "Num items in task queue: ~a" (lq:queue-count *queue*)))
(defun main ()
(log-setup)
diff --git a/package.lisp b/package.lisp
@@ -1,5 +1,6 @@
(defpackage cl-grep
(:use :cl)
(:local-nicknames (:fsu :org.shirakumo.filesystem-utils)
- (:pu :org.shirakumo.pathname-utils))
+ (:pu :org.shirakumo.pathname-utils)
+ (:lq :lparallel.queue))
(:export #:main))