Hex Artifact Content
Not logged in

Artifact 47fea6fc5d2ffcafb151532f4a0a354ec5573c80:

File tools/lib/cvs_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 63 76 73 20 63 6f 6d  external cvs com
0070: 6d 61 6e 64 2e 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d  mand...# -------
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 0a 23 20 52 65 71 75 69 72 65  ------.# Require
00d0: 6d 65 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72  ments..package r
00e0: 65 71 75 69 72 65 20 54 63 6c 20 38 2e 34 0a 6e  equire Tcl 8.4.n
00f0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a  amespace eval ::
0100: 76 63 3a 3a 63 76 73 3a 3a 63 6d 64 20 7b 7d 0a  vc::cvs::cmd {}.
0110: 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .# -------------
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: 0a 23 20 41 50 49 0a 0a 23 20 76 63 3a 3a 63 76  .# API..# vc::cv
0170: 73 3a 3a 63 6d 64 3a 3a 64 6f 76 61 20 77 6f 72  s::cmd::dova wor
0180: 64 2e 2e 2e 20 2d 20 52 75 6e 20 61 20 63 76 73  d... - Run a cvs
0190: 20 63 6f 6d 6d 61 6e 64 20 73 70 65 63 69 66 69   command specifi
01a0: 65 64 20 61 73 20 76 61 72 20 61 72 67 73 2e 0a  ed as var args..
01b0: 23 20 76 63 3a 3a 63 76 73 3a 3a 63 6d 64 3a 3a  # vc::cvs::cmd::
01c0: 64 6f 20 20 20 77 6f 72 64 73 20 20 20 2d 20 52  do   words   - R
01d0: 75 6e 20 61 20 63 76 73 20 63 6f 6d 6d 61 6e 64  un a cvs command
01e0: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 61 20   specified as a 
01f0: 6c 69 73 74 2e 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d  list...# -------
0200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
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 0a 23 20 41 50 49 20 49 6d 70  ------.# API Imp
0250: 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 0a 70 72 6f  lementation..pro
0260: 63 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a 63 6d 64  c ::vc::cvs::cmd
0270: 3a 3a 64 6f 76 61 20 7b 61 72 67 73 7d 20 7b 64  ::dova {args} {d
0280: 6f 20 24 61 72 67 73 7d 0a 0a 70 72 6f 63 20 3a  o $args}..proc :
0290: 3a 76 63 3a 3a 63 76 73 3a 3a 63 6d 64 3a 3a 64  :vc::cvs::cmd::d
02a0: 6f 20 7b 77 6f 72 64 73 7d 20 7b 0a 20 20 20 20  o {words} {.    
02b0: 76 61 72 69 61 62 6c 65 20 63 6d 64 0a 20 20 20  variable cmd.   
02c0: 20 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24   if {![llength $
02d0: 77 6f 72 64 73 5d 7d 20 7b 0a 09 72 65 74 75 72  words]} {..retur
02e0: 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 22 45  n -code error "E
02f0: 6d 70 74 79 20 63 76 73 20 63 6f 6d 6d 61 6e 64  mpty cvs command
0300: 22 0a 20 20 20 20 7d 0a 20 20 20 20 23 20 38 2e  ".    }.    # 8.
0310: 35 3a 20 65 78 65 63 20 24 63 6d 64 20 7b 2a 7d  5: exec $cmd {*}
0320: 24 77 6f 72 64 73 0a 20 20 20 20 72 65 74 75 72  $words.    retur
0330: 6e 20 5b 65 76 61 6c 20 5b 6c 69 6e 73 65 72 74  n [eval [linsert
0340: 20 24 77 6f 72 64 73 20 30 20 65 78 65 63 20 24   $words 0 exec $
0350: 63 6d 64 5d 5d 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d  cmd]].}..# -----
0360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0370: 2d 2d 2d 2d 2d 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 0a 23 20 49 6e 74 65 72  --------.# Inter
03b0: 6e 61 6c 73 2e 0a 0a 6e 61 6d 65 73 70 61 63 65  nals...namespace
03c0: 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 63 76 73 3a   eval ::vc::cvs:
03d0: 3a 63 6d 64 20 7b 0a 20 20 20 20 23 20 4c 6f 63  :cmd {.    # Loc
03e0: 61 74 65 20 65 78 74 65 72 6e 61 6c 20 63 76 73  ate external cvs
03f0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20   application..  
0400: 20 20 76 61 72 69 61 62 6c 65 20 63 6d 64 20 5b    variable cmd [
0410: 61 75 74 6f 5f 65 78 65 63 6f 6b 20 63 76 73 5d  auto_execok cvs]
0420: 0a 0a 20 20 20 20 23 20 42 61 69 6c 20 6f 75 74  ..    # Bail out
0430: 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 2e 0a 20   if not found.. 
0440: 20 20 20 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 68     if {![llength
0450: 20 24 3a 3a 76 63 3a 3a 63 76 73 3a 3a 63 6d 64   $::vc::cvs::cmd
0460: 3a 3a 63 6d 64 5d 7d 20 7b 0a 09 72 65 74 75 72  ::cmd]} {..retur
0470: 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 22 43  n -code error "C
0480: 76 73 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6e  vs application n
0490: 6f 74 20 66 6f 75 6e 64 2e 22 0a 20 20 20 20 7d  ot found.".    }
04a0: 0a 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20  ..    namespace 
04b0: 65 78 70 6f 72 74 20 64 6f 20 64 6f 76 61 0a 7d  export do dova.}
04c0: 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..# ------------
04d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
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 0a 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61  -.# Ready..packa
0520: 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 63  ge provide vc::c
0530: 76 73 3a 3a 63 6d 64 20 31 2e 30 0a 72 65 74 75  vs::cmd 1.0.retu
0540: 72 6e 0a                                         rn.