* Tested in GIMP 2.99.14 *

Here’s how I’ve learned to use the relatively new function (dir-make “mydir”) Seems to like only creating one directory at a time so I put it in a wrapper.

Makes a directory relative to “home/username”
Using the path format /my/new/directory
In WindowsOS relative to “C:\Users\username”
Keep using “/” to denote path even in Windows!

#!/usr/bin/env gimp-script-fu-interpreter-3.0

(define debug #f)

(define (makeDir path)
  (make-dir-path path)
)

(script-fu-register "makeDir"
 "makeDir"
 "makes a directory relative to \"home/username\", use forward slashes" 
 "Mark Sweeney"
 "Under GNU GENERAL PUBLIC LICENSE Version 3"
 "2023"
 ""
 SF-STRING      "path"   "/my/new/directory"
)

(script-fu-menu-register "makeDir" "<Image>/Fu-Plugin")

; copyright 2023, Mark Sweeney, Under GNU GENERAL PUBLIC LICENSE Version 3

; utility functions
(define (boolean->string bool) (if bool "#t" "#f"))

(define (exit msg)
  (gimp-message-set-handler 0)
  (gimp-message (string-append " >>> " msg " <<<"))
  (gimp-message-set-handler 2)
  (quit)
)

(define (here x)(gimp-message(string-append " >>> " (number->string x) " <<<")))


; makes a directory in the "home" directory with a string "/path/like/this"
; in WindowsOS relative to "C:\Users\username"  keep using "/" to denote path
(define (make-dir-path path)
   (let*
    (
      (brkP 0)(i 2)(pDepth 0)(dirMake "")
    )

    (set! brkP (strbreakup path "/"))
    (set! pDepth  (length brkP))
    (set! dirMake (list-ref brkP 1)) ; skip empty element
    (dir-make dirMake) ; make root

    (while (< i pDepth)
      (set! dirMake (string-append dirMake "/" (list-ref brkP i)))     
      (set! i (+ i 1))
      (dir-make dirMake) ; make tree
    )

  )
)


<
Previous Post
A Filter Plugin Example
>
Next Post
Filter Plug-in