Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | cmdr::validate - Replaced all uses of "OkDir" with the shared "ok-directory". Changed the "rw*" types to allow missing file/dir/path like the "w*" types.. Fixed the fail messages for "wfile" and "wchan". |
---|---|
Timelines: | family | ancestors | descendants | both | more-vtypes |
Files: | files | file ages | folders |
SHA1: |
62fbd92a1b4445a9410554806b0d9ee2 |
User & Date: | andreask 2014-03-13 18:36:54.333 |
Context
2014-04-22
| ||
06:55 | Merged trunk extensions. Closed-Leaf check-in: 6163942da7 user: aku tags: more-vtypes | |
2014-03-13
| ||
18:36 | cmdr::validate - Replaced all uses of "OkDir" with the shared "ok-directory". Changed the "rw*" types to allow missing file/dir/path like the "w*" types.. Fixed the fail messages for "wfile" and "wchan". check-in: 62fbd92a1b user: andreask tags: more-vtypes | |
18:34 | cmdr::validate::common - Consolidated multiple copies of "OkDir" in cmdr::validate into a single shared helper command "ok-directory". check-in: e7f547d6aa user: andreask tags: more-vtypes | |
Changes
Changes to validate.tcl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ## -*- tcl -*- # # ## ### ##### ######## ############# ##################### ## CMDR - Validate - Definition of core validation classes. # @@ Meta Begin # Package cmdr::validate 0 # Meta author {Andreas Kupries} # Meta location https://core.tcl.tk/akupries/cmdr # Meta platform tcl # Meta summary Standard validation types for parameters. # Meta description Standard validation types for parameters. # Meta subject {command line} # Meta require {Tcl 8.5-} # Meta require debug # Meta require debug::caller # @@ Meta End # # ## ### ##### ######## ############# ##################### ## Requisites package require Tcl 8.5 | > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ## -*- tcl -*- # # ## ### ##### ######## ############# ##################### ## CMDR - Validate - Definition of core validation classes. # @@ Meta Begin # Package cmdr::validate 0 # Meta author {Andreas Kupries} # Meta location https://core.tcl.tk/akupries/cmdr # Meta platform tcl # Meta summary Standard validation types for parameters. # Meta description Standard validation types for parameters. # Meta subject {command line} # Meta require {Tcl 8.5-} # Meta require {cmdr::validate::common 1.2} # Meta require debug # Meta require debug::caller # @@ Meta End # # ## ### ##### ######## ############# ##################### ## Requisites package require Tcl 8.5 package require cmdr::validate::common 1.2 package require debug package require debug::caller # # ## ### ##### ######## ############# ##################### ## Definition namespace eval ::cmdr { |
︙ | ︙ | |||
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | ## File, existing and writable namespace eval ::cmdr::validate::wfile { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob } proc ::cmdr::validate::wfile::release {p x} { return } proc ::cmdr::validate::wfile::default {p} { return {} } proc ::cmdr::validate::wfile::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::wfile::Ok $x } proc ::cmdr::validate::wfile::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } | > | | < < < < < < < < < < < < < < < < < < < < < < < > | | > > > > > | 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 | ## File, existing and writable namespace eval ::cmdr::validate::wfile { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob namespace import ::cmdr::validate::common::ok-directory } proc ::cmdr::validate::wfile::release {p x} { return } proc ::cmdr::validate::wfile::default {p} { return {} } proc ::cmdr::validate::wfile::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::wfile::Ok $x } proc ::cmdr::validate::wfile::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } fail $p WFILE "a writable file" $x } proc ::cmdr::validate::wfile::Ok {path} { if {![file exists $path]} { # The file is allowed to not exist if its directory exists and # is writable. This can apply recursively up the chain of # directories. return [ok-directory [file dirname $path]] } if {![file isfile $path]} {return 0} if {![file writable $path]} {return 0} return 1 } # # ## ### ##### ######## ############# ##################### ## File, existing and read/writable namespace eval ::cmdr::validate::rwfile { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob namespace import ::cmdr::validate::common::ok-directory } proc ::cmdr::validate::rwfile::release {p x} { return } proc ::cmdr::validate::rwfile::default {p} { return {} } proc ::cmdr::validate::rwfile::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::rwfile::Ok $x } proc ::cmdr::validate::rwfile::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } fail $p RWFILE "a read/writable file" $x } proc ::cmdr::validate::rwfile::Ok {path} { if {![file exists $path]} { # The file is allowed to not exist if its directory exists and # is writable. This can apply recursively up the chain of # directories. return [ok-directory [file dirname $path]] } if {![file isfile $path]} {return 0} if {![file readable $path]} {return 0} if {![file writable $path]} {return 0} return 1 } # # ## ### ##### ######## ############# ##################### |
︙ | ︙ | |||
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 | ## Directory, existing and read/writable. namespace eval ::cmdr::validate::rwdirectory { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob } proc ::cmdr::validate::rwdirectory::release {p x} { return } proc ::cmdr::validate::rwdirectory::default {p} { return {} } proc ::cmdr::validate::rwdirectory::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::rwdirectory::Ok $x } proc ::cmdr::validate::rwdirectory::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } fail $p RWDIRECTORY "an existing read/writeable directory" $x } proc ::cmdr::validate::rwdirectory::Ok {path} { | > | > > > > > | 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | ## Directory, existing and read/writable. namespace eval ::cmdr::validate::rwdirectory { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob namespace import ::cmdr::validate::common::ok-directory } proc ::cmdr::validate::rwdirectory::release {p x} { return } proc ::cmdr::validate::rwdirectory::default {p} { return {} } proc ::cmdr::validate::rwdirectory::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::rwdirectory::Ok $x } proc ::cmdr::validate::rwdirectory::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } fail $p RWDIRECTORY "an existing read/writeable directory" $x } proc ::cmdr::validate::rwdirectory::Ok {path} { if {![file exists $path]} { # The directory is allowed to not exist if its parent # directory exists and is writable. This can apply recursively # up the chain of directories. return [ok-directory [file dirname $path]] } if {![file isdirectory $path]} {return 0} if {![file readable $path]} {return 0} if {![file writable $path]} {return 0} return 1 } # # ## ### ##### ######## ############# ##################### |
︙ | ︙ | |||
401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 | ## Any path, existing and read/writable. namespace eval ::cmdr::validate::rwpath { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob } proc ::cmdr::validate::rwpath::release {p x} { return } proc ::cmdr::validate::rwpath::default {p} { return {} } proc ::cmdr::validate::rwpath::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::rwpath::Ok $x } proc ::cmdr::validate::rwpath::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } fail $p RWPATH "an existing read/writeable path" $x } proc ::cmdr::validate::rwpath::Ok {path} { | > | > > > > > | 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | ## Any path, existing and read/writable. namespace eval ::cmdr::validate::rwpath { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob namespace import ::cmdr::validate::common::ok-directory } proc ::cmdr::validate::rwpath::release {p x} { return } proc ::cmdr::validate::rwpath::default {p} { return {} } proc ::cmdr::validate::rwpath::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::rwpath::Ok $x } proc ::cmdr::validate::rwpath::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return $x } fail $p RWPATH "an existing read/writeable path" $x } proc ::cmdr::validate::rwpath::Ok {path} { if {![file exists $path]} { # The path is allowed to not exist if its directory exists and # is writable. This can apply recursively up the chain of # directories. return [ok-directory [file dirname $path]] } if {![file readable $path]} {return 0} if {![file writable $path]} {return 0} return 1 } # # ## ### ##### ######## ############# ##################### ## Channel, for existing and readable file. Defaults to stdin. |
︙ | ︙ | |||
464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 | ## Channel, for existing and writable file. Defaults to stdout. namespace eval ::cmdr::validate::wchan { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob } proc ::cmdr::validate::wchan::release {p x} { if {$x eq "stdout"} return close $x return } proc ::cmdr::validate::wchan::default {p} { return stdout } proc ::cmdr::validate::wchan::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::wchan::Ok $x } proc ::cmdr::validate::wchan::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return [open $x w] } | > | | < < < < < < < < < < < < < < < < < < < < < < < > | | > > > > > | | 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 | ## Channel, for existing and writable file. Defaults to stdout. namespace eval ::cmdr::validate::wchan { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob namespace import ::cmdr::validate::common::ok-directory } proc ::cmdr::validate::wchan::release {p x} { if {$x eq "stdout"} return close $x return } proc ::cmdr::validate::wchan::default {p} { return stdout } proc ::cmdr::validate::wchan::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::wchan::Ok $x } proc ::cmdr::validate::wchan::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return [open $x w] } fail $p WCHAN "a writable file" $x } proc ::cmdr::validate::wchan::Ok {path} { if {![file exists $path]} { # The file is allowed to not exist if its directory exists and # is writable. This can apply recursively up the chain of # directories. return [ok-directory [file dirname $path]] } if {![file isfile $path]} {return 0} if {![file writable $path]} {return 0} return 1 } # # ## ### ##### ######## ############# ##################### ## Channel, for existing and read/writable file. No default. namespace eval ::cmdr::validate::rwchan { namespace export default validate complete release namespace ensemble create namespace import ::cmdr::validate::common::fail namespace import ::cmdr::validate::common::complete-glob namespace import ::cmdr::validate::common::ok-directory } proc ::cmdr::validate::rwchan::release {p x} { close $x } proc ::cmdr::validate::rwchan::default {p} { return {} } proc ::cmdr::validate::rwchan::complete {p x} { debug.cmdr/validate {} 10 complete-glob ::cmdr::validate::rwchan::Ok $x } proc ::cmdr::validate::rwchan::validate {p x} { debug.cmdr/validate {} if {[Ok $x]} { return [open $x w+] } fail $p RWCHAN "a read/writable file" $x } proc ::cmdr::validate::rwchan::Ok {path} { if {![file exists $path]} { # The file is allowed to not exist if its directory exists and # is writable. This can apply recursively up the chain of # directories. return [ok-directory [file dirname $path]] } if {![file isfile $path]} {return 0} if {![file readable $path]} {return 0} if {![file writable $path]} {return 0} return 1 } # # ## ### ##### ######## ############# ##################### ## Ready package provide cmdr::validate 1.3 return |