]> Cypherpunks repositories - dsc.git/commitdiff
Do not mkdir blindly during set and add
authorVladimir Bobrov <bobrov@invalid.domain>
Thu, 27 Nov 2025 14:37:52 +0000 (17:37 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 27 Nov 2025 14:55:30 +0000 (17:55 +0300)
dsc

diff --git a/dsc b/dsc
index 9a7edad7a0d9759b4ab0e15f680216cb8517f796869919b32aa78927bd4a7fb6..78680ee102ca020b47bbddc1f1be60b89a5c0cbbd684aae7d550ef3345be3616 100755 (executable)
--- a/dsc
+++ b/dsc
@@ -128,6 +128,19 @@ proc txtar-fn {line} {
     return ""
 }
 
+proc assure-all-list-params-exist {opt {offset 0}} {
+    global Stash
+    set pth [find-opt-schema $opt]
+    set idx [lindex [lsearch -all [file split $pth] "*"] end-$offset]
+    if {$idx != ""} {
+        set pth [file join {*}[lrange [file split $opt] 0 $idx]]
+        if {! [file exists $Stash/$pth]} {
+            puts stderr "$pth does not exist"
+            exit 1
+        }
+    }
+}
+
 set opt [lindex $argv 1]
 switch [lindex $argv 0] {
     list {
@@ -159,6 +172,7 @@ switch [lindex $argv 0] {
         }
     }
     add {
+        assure-all-list-params-exist $opt 1
         set dir [file dirname $opt]
         set tail [run-checker $opt [file tail $opt]]
         set tail [string trimright $tail "\n"]
@@ -172,6 +186,7 @@ switch [lindex $argv 0] {
         file delete -force $Stash/$opt
     }
     set {
+        assure-all-list-params-exist $opt
         if {[llength $argv] > 2} {
             set v [lindex $argv 2]
             if {$v == ""} {