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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
#compdef sccs admin cdc comb delta get help prs prt rmdel sact sccsdiff unget val what
(( $+functions[_sccs_files] )) ||
_sccs_files() {
local dir expl ret=1 pref=$PREFIX ipref=$IPREFIX
dir="${(M)PREFIX##*/}$finalpath"
[[ $~dir = (.|..|)/* ]] || dir="${PROJECTDIR:-~+}/$dir"
compset -P "*/"
_wanted file expl file compadd "$@" - $~dir/s.*(N.:t:s/s.//) && ret=0
PREFIX="$pref"
IPREFIX="$ipref"
_wanted sccs-files expl 'sccs file' _files -W ${PROJECTDIR:-~+} \
-g 's.*(-.)' && ret=0
return ret
}
local curcontext="$curcontext" state line ret=1
typeset -A opt_args
local subcmds ropt copt sfiles finalpath
subcmds=(
'admin:modify the flags or checksum of an sccs history file'
'cdc:annotate the commentary of an sccs delta'
'check:check for files currently being edited'
'clean:remove files that can be retrieved from sccs history'
'comb:generate scripts to combine deltas'
'create:create (initialize) history files'
'deledit:check file in and straight out again'
'delget:check file in and maintain read-only copy'
'delta:check in changes'
'diffs:compare working copy with version in sccs history'
'edit:retrieve file for editing (check out)'
"enter:like create, but omits the final 'sccs get'"
'fix:revise a (leaf) delta'
'get:retrieve a version from the sccs history'
'help:get information on sccs commands and error messages'
{info,tell}':list files being edited'
'print:print history of specified files'
'prs:display delta table for an sccs file'
'prt:display the delta table, but omit the MR field'
'rmdel:remove specified delta from history file'
'sact:show editing activity status of an sccs file'
'sccsdiff:compare two versions from sccs history'
{unedit,unget}':undo check out'
'val:validate history file'
'what:display any ID keyword strings in a file'
)
ropt='-r+[specify sccs delta id]:sccs delta id'
copt='-c+[specify date]:date-stamp'
sfiles=':file:_files -g "s.*(-.)"'
if [[ $service = sccs ]]; then
_arguments -C -A "-*" \
'-r[run with real and not effective user ID]' \
'-d+[specify root prefix]:root prefix:_directories' \
'-p+[specify subdirectory of history file]:path to history file:_directories' \
'*::command:->subcmd' && ret=0
if (( CURRENT == 1 )); then
_describe -t commands 'sccs command' subcmds && ret=0
fi
(( ret )) || return 0
service="$words[1]"
sfiles=':file:_sccs_files'
curcontext="${curcontext%:*}-$service:"
fi
finalpath="${opt_args[-p]:-SCCS}"
case $service in
admin)
_arguments "$ropt" "$sfiles" \
'-b[force encoding of binary data]' \
'-h[check structure of s.file]' \
'-n[create a new history file]' \
'-z[recompute file checksum]' \
'-a+[add access for a user or group]:user or group:_users' \
'-e+[erase access for a user or group]:user or group:_users' \
'-d+[delete flag from file]:flag' \
'-f+[set specified flag]:flag' \
'-i+[initialise history from specified file]:file:_files' \
'-m+[insert specified MR numbers into commentary]' \
'-t+[insert descriptive text from specified file]:file:_files' \
'-y+[specify comment for initial delta]'
;;
cdc)
_arguments "$ropt" "$sfiles" \
'-m+[specify MR numbers to add/delete in delta comment]' \
'-y+[specify the comment]:comment' \
;;
check|info|tell)
_arguments "$sfiles" \
'-b[ignore branches]' \
'(-U)-u+[restrict to files being modified by specified user]::user:_users' \
'(-u)-U[restrict to files being modified by current user]'
;;
clean)
_arguments '-b[ignore branches]'
;;
comb)
_arguments "$sfiles" \
'-o[access reconstructed file at delta to be created]' \
'-s[generate script that will produce a report]' \
'-p+[specify SID of oldest delta to preserve]:sccs delta id'
'-c+[specify list of deltas to preserve]:sccs delta list'
;;
sact|print) _sccs_files;;
create|enter) _files;;
deledit|delget|delta)
_arguments '-s[silent]' '-y+[specify delta commentary]:comment'
;;
diffs)
_diff_options diff "$sfiles" "$ropt" "$copt" \
'-C[output a context diff]'
;;
edit|get)
_arguments "$sfiles" "$ropt" "$copt" \
'-e[retrieve for editing]' \
'-k[retrieve writable copy without checking out]' \
'-m[precede each line with the delta in which it was added]' \
'-p[produce retrieved version on standard output]' \
'-s[silent]'
;;
fix) _arguments "$ropt" "$sfiles";;
help)
[[ $PREFIX$SUFFIX = [0-9]# ]] &&
_message -e message-codes "sccs message code"
subcmds+=( "stuck:help on help" )
_describe -t commands 'sccs command' subcmds
;;
prs)
_arguments "$sfiles" "$ropt" "$copt" \
'-a[include all deltas including those marked removed]' \
'-e[display delta info for all deltas earlier than that specified]' \
'-l[display delta info for all deltas later than that specified]' \
'-d+[specify format of report]:data spec'
;;
prt)
_arguments "$sfiles" "$copt" \
'-a[include all deltas including those marked removed]' \
'-b[print the body of the s.file]' \
'-d[print delta table entries]' \
'(-d -i -u -f -t)-e[everything - imply other options]' \
'-i[print serial numbers of included, excluded and ignored deltas]' \
'-s[print first line only of delta table entries]' \
'-t[print descriptive text held in s.file]' \
'-u[print usernames of users allowed to make deltas]' \
'-r+[exclude delta entries newer than date]:date-time' \
'-y+[exclude delta entries prior to sid]'
;;
rmdel) _arguments "$ropt" "$sfiles";;
sccsdiff) _diff_options diff "$ropt" "$sfiles";;
unedit|unget)
_arguments "$sfiles" "$ropt" \
'-s[silent]' \
'-n[retain the retrieved version]'
;;
val)
_arguments "$sfiles" "$ropt" \
'-s[silent]' \
'-m+[compare specified name with the ID keyword in the s.file]:name' \
'-y+[compare specified type with the ID keyword]:type'
;;
what) _arguments '-s[stop after first occurrence]' '*:file:_files';;
*) _message "unknown sccs command: $service";;
esac
|