diff --git a/pkgs/anoia/Makefile b/pkgs/anoia/Makefile index df1435c..2d202d6 100644 --- a/pkgs/anoia/Makefile +++ b/pkgs/anoia/Makefile @@ -9,6 +9,7 @@ check: ln -s . anoia fennel ./run-tests.fnl $(CHECK) fennel test.fnl + mkdir -p $(outputdir) fennel test-svc.fnl $(servicedir) find $(outputdir) -ls test -f $(outputdir)/fish diff --git a/pkgs/anoia/init.fnl b/pkgs/anoia/init.fnl index 05ddd71..54be3b1 100644 --- a/pkgs/anoia/init.fnl +++ b/pkgs/anoia/init.fnl @@ -25,8 +25,27 @@ (fn basename [path] (string.match path ".*/([^/]-)$")) + (fn dirname [path] - (string.match path "(.*)/[^/]-$")) + (let [stripped (string.match path "(.-)/*$")] + (pick-values + 1 + (if (not path) "." + (= path "") "." + (not stripped) "." + (= stripped "") "/" + (string.match stripped ".+/.-") (stripped:gsub "(.*)(/.*)" "%1") + (string.match stripped "/") "/" + ".")))) + +(define-tests + ;; these are examples from dirname(3) + (expect= (dirname "/usr/lib") "/usr") + (expect= (dirname "/usr/") "/") + (expect= (dirname "usr") ".") + (expect= (dirname "/") "/") + (expect= (dirname ".") ".") + (expect= (dirname "..") ".")) (fn append-path [dirname filename] (let [base (or (string.match dirname "(.*)/$") dirname)