Hex Artifact Content
Not logged in

Artifact 49d37a1b8b7a29138710efd3f1dc563b4201b7a6:

File tools/lib/fossil_cmd.tcl part of check-in [cdf5e6d8b7] - Encapsulated access to the fossil and cvs applications in their own packages. by aku on 2007-09-13 06:59:24.

0000: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  # --------------
0010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
0050: 23 20 41 63 63 65 73 73 20 74 6f 20 74 68 65 20  # Access to the 
0060: 65 78 74 65 72 6e 61 6c 20 66 6f 73 73 69 6c 20  external fossil 
0070: 63 6f 6d 6d 61 6e 64 2e 0a 0a 23 20 2d 2d 2d 2d  command...# ----
0080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 65 71 75  ---------.# Requ
00d0: 69 72 65 6d 65 6e 74 73 0a 0a 70 61 63 6b 61 67  irements..packag
00e0: 65 20 72 65 71 75 69 72 65 20 54 63 6c 20 38 2e  e require Tcl 8.
00f0: 34 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c  4.namespace eval
0100: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 63   ::vc::fossil::c
0110: 6d 64 20 7b 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d  md {}..# -------
0120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0160: 2d 2d 2d 2d 2d 2d 0a 23 20 41 50 49 0a 0a 23 20  ------.# API..# 
0170: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 63 6d 64 3a  vc::fossil::cmd:
0180: 3a 64 6f 76 61 20 77 6f 72 64 2e 2e 2e 20 2d 20  :dova word... - 
0190: 52 75 6e 20 61 20 66 6f 73 73 69 6c 20 63 6f 6d  Run a fossil com
01a0: 6d 61 6e 64 20 73 70 65 63 69 66 69 65 64 20 61  mand specified a
01b0: 73 20 76 61 72 20 61 72 67 73 0a 23 20 76 63 3a  s var args.# vc:
01c0: 3a 66 6f 73 73 69 6c 3a 3a 63 6d 64 3a 3a 64 6f  :fossil::cmd::do
01d0: 20 20 20 77 6f 72 64 73 20 20 20 2d 20 52 75 6e     words   - Run
01e0: 20 61 20 66 6f 73 73 69 6c 20 63 6f 6d 6d 61 6e   a fossil comman
01f0: 64 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 61  d specified in a
0200: 20 6c 69 73 74 2e 0a 0a 23 20 2d 2d 2d 2d 2d 2d   list...# ------
0210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0250: 2d 2d 2d 2d 2d 2d 2d 0a 23 20 41 50 49 20 49 6d  -------.# API Im
0260: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 70 72  plementation..pr
0270: 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  oc ::vc::fossil:
0280: 3a 63 6d 64 3a 3a 64 6f 76 61 20 7b 61 72 67 73  :cmd::dova {args
0290: 7d 20 7b 64 6f 20 24 61 72 67 73 7d 0a 0a 70 72  } {do $args}..pr
02a0: 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  oc ::vc::fossil:
02b0: 3a 63 6d 64 3a 3a 64 6f 20 7b 77 6f 72 64 73 7d  :cmd::do {words}
02c0: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20   {.    variable 
02d0: 63 6d 64 0a 20 20 20 20 69 66 20 7b 21 5b 6c 6c  cmd.    if {![ll
02e0: 65 6e 67 74 68 20 24 77 6f 72 64 73 5d 7d 20 7b  ength $words]} {
02f0: 0a 09 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65  ..return -code e
0300: 72 72 6f 72 20 22 45 6d 70 74 79 20 66 6f 73 73  rror "Empty foss
0310: 69 6c 20 63 6f 6d 6d 61 6e 64 22 0a 20 20 20 20  il command".    
0320: 7d 0a 20 20 20 20 23 20 38 2e 35 3a 20 65 78 65  }.    # 8.5: exe
0330: 63 20 24 63 6d 64 20 7b 2a 7d 24 77 6f 72 64 73  c $cmd {*}$words
0340: 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 65 76 61  .    return [eva
0350: 6c 20 5b 6c 69 6e 73 65 72 74 20 24 77 6f 72 64  l [linsert $word
0360: 73 20 30 20 65 78 65 63 20 24 63 6d 64 5d 5d 0a  s 0 exec $cmd]].
0370: 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  }..# -----------
0380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03c0: 2d 2d 0a 23 20 49 6e 74 65 72 6e 61 6c 73 2e 0a  --.# Internals..
03d0: 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20  .namespace eval 
03e0: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 63 6d  ::vc::fossil::cm
03f0: 64 20 7b 0a 20 20 20 20 23 20 4c 6f 63 61 74 65  d {.    # Locate
0400: 20 65 78 74 65 72 6e 61 6c 20 66 6f 73 73 69 6c   external fossil
0410: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20   application..  
0420: 20 20 76 61 72 69 61 62 6c 65 20 63 6d 64 20 5b    variable cmd [
0430: 61 75 74 6f 5f 65 78 65 63 6f 6b 20 66 6f 73 73  auto_execok foss
0440: 69 6c 5d 0a 0a 20 20 20 20 23 20 42 61 69 6c 20  il]..    # Bail 
0450: 6f 75 74 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64  out if not found
0460: 2e 0a 20 20 20 20 69 66 20 7b 21 5b 6c 6c 65 6e  ..    if {![llen
0470: 67 74 68 20 24 3a 3a 76 63 3a 3a 66 6f 73 73 69  gth $::vc::fossi
0480: 6c 3a 3a 63 6d 64 3a 3a 63 6d 64 5d 7d 20 7b 0a  l::cmd::cmd]} {.
0490: 09 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72  .return -code er
04a0: 72 6f 72 20 22 46 6f 73 73 69 6c 20 61 70 70 6c  ror "Fossil appl
04b0: 69 63 61 74 69 6f 6e 20 6e 6f 74 20 66 6f 75 6e  ication not foun
04c0: 64 2e 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6e  d.".    }..    n
04d0: 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20  amespace export 
04e0: 64 6f 20 64 6f 76 61 0a 7d 0a 0a 23 20 2d 2d 2d  do dova.}..# ---
04f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0510: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0520: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 65 61  ----------.# Rea
0540: 64 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76  dy..package prov
0550: 69 64 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  ide vc::fossil::
0560: 63 6d 64 20 31 2e 30 0a 72 65 74 75 72 6e 0a     cmd 1.0.return.