diff options
Diffstat (limited to 'Completion/Unix')
-rw-r--r-- | Completion/Unix/Command/_perforce | 216 |
1 files changed, 199 insertions, 17 deletions
diff --git a/Completion/Unix/Command/_perforce b/Completion/Unix/Command/_perforce index d451d7002..04482be6f 100644 --- a/Completion/Unix/Command/_perforce +++ b/Completion/Unix/Command/_perforce @@ -414,6 +414,8 @@ _perforce() { '-xi[switch server database to unicode mode and quit]' \ '-xu[run database upgrade and quit]' \ '-c[run command and exit]:command of some sort: ' \ + '-Id[specify description]:description: ' \ + '-In[specify unique name]:name: ' \ '-jc[checkpoint, save and truncate journal]::optional prefix: ' \ '-jd[checkpoint, not saving journal]::optional file:_files' \ '-jj[save and truncate journal]::optional prefix: ' \ @@ -487,7 +489,10 @@ _perforce_gen_cmd_list() { local -a unsup unsup=( "attribute:Set attributes for open file (EXPERIMENTAL)" + "dbschema:Report meta database information" + "export:Rxtract journal or checkpoint records" "interchanges:Report changes not yet integrated between branches" + "replicate:Poll for journal changes and apply to another server" "spec:Allows limited changes to form specifications (admin)" ) for line in $unsup; do @@ -560,6 +565,7 @@ _perforce_global_options() { '-s[output script tags]' \ '-u+[user]:user name:_perforce_users' \ '-x+[filename or -]:file:_perforce_files_or_minus' \ + '-z+[select output format]:output format:(tag)' ) integer i @@ -660,6 +666,12 @@ awk '/^Client:/ { print $2 }')") ctype="local pending " ;; + # Changes that were shelved + (-tS) + cstatus=(-s shelved) + ctype="shelved " + ;; + # Range allowed: append comma and supply rules for # removing and handling subsequent `#'. (-tR) @@ -671,7 +683,9 @@ awk '/^Client:/ { print $2 }')") # output. cl=( ${${${${(f)"$(_perforce_call_p4 changes changes $amax $xargs $cstatus \$file)"}##Change\ }//\ on\ /:}/\ by\ /\ } -"default:change not yet numbered") + ) + # "default" can't have shelved files in it... + [[ $ctype = shelved* ]] || cl+=("default:change not yet numbered") [[ $#cl -eq 1 && $cl[1] = '' ]] && cl=() _describe -t changes "${ctype}change" cl -V changes-unsorted $comma } @@ -764,6 +778,16 @@ _perforce_dates() { } +(( $+functions[_perforce_dbtables] )) || +_perforce_dbtables() { + local -a tables + tables=(archmap bodtext change changex counters depot domain have integ + integed ixtext label locks resolve rev revcx revdx revhx revsx trigger + user view working) + _describe -t db-table "DB table" tables +} + + (( $+functions[_perforce_depots] )) || _perforce_depots() { local dline match mbegin mend @@ -1232,7 +1256,9 @@ _perforce_filetypes() { "C:server stores compress file per revision" "D:server stores deltas in RCS format" "F:server stores full file per revision" - "S:server stores only head revision") + "S:server stores only head revision" + "X:externally archived file" + ) _describe -t file-modifiers 'Perforce file modifier' values else values=( @@ -1246,6 +1272,28 @@ _perforce_filetypes() { } +(( $+functions[_perforce_fstat_fields] )) || +_perforce_fstat_fields() { + local sep + if [[ $argv[-1] = -tv ]]; then + # jobview, space is separator + sep=' ' + else + sep=',' + fi + local -a values + # yes, "phew", sorry. + # output from "p4 help fstat" gives fields like + # digest -- MD5 digest (fingerprint) + # etc. etc. + values=( + ${${${${(M)${(f)"$(_perforce_call_p4 help-fstat help fstat)"}:#[[:blank:]]#[a-zA-Z]##(|\#)[[:blank:]]##--*}##[[:blank:]]#}:#fstat *}//[[:blank:]]##--[[:blank:]]##/:} + ) + compset -P '*[,[:blank:]]' + _describe -t fstat-fields 'Perforce fstat fields' values -S, -q +} + + (( $+functions[_perforce_groups] )) || _perforce_groups() { local -a values @@ -1556,15 +1604,27 @@ _perforce_cmd_admin() { local -a adcmds adcmds=( "checkpoint:checkpoint, save copy of journal file" + "dbstat:db tables" "journal:save and truncate journal file" + "logstat:report sizes of log files" "stop:stop the server") _describe -t commands 'Perforce admin command' adcmds - elif [[ $words[2] == (checkpoint|journal) ]]; then - shift words - (( CURRENT-- )) - _arguments -s : \ - '-z[gzip journal file]' \ - '1::journal file prefix: ' + else + case $words[2] in + (checkpoint|journal) + shift words + (( CURRENT-- )) + _arguments -s : \ + '-z[gzip journal file]' \ + '1::journal file prefix: ' + ;; + + (dbstat) + shift words + (( CURRENT -- )) + _arguments -s : \ + '-s[show sizes]' + esac fi } @@ -1613,6 +1673,7 @@ _perforce_cmd_branch() { (( $+functions[_perforce_cmd_branches] )) || _perforce_cmd_branches() { _arguments -s : \ + '-e[limit by wildcard]:wildcard on branches: ' \ '-u+[select by user]:user:_perforce_users' \ '-m+[set maximum to show]:max branches: ' } @@ -1657,7 +1718,7 @@ _perforce_cmd_changes() { '-L[long output, truncated change text]' \ '-c+[select by client]:client:_perforce_clients' \ '-m+[most recent N changes]:max changes: ' \ - '-s+[select by status]:status:(pending submitted)' \ + '-s+[select by status]:status:(pending shelved submitted)' \ '-u+[select by user]:user:_perforce_users' \ '*::file:_perforce_files -tR' } @@ -1684,6 +1745,7 @@ _perforce_cmd_client() { (( $+functions[_perforce_cmd_clients] )) || _perforce_cmd_clients() { _arguments -s : \ + '-e[limit by wildcard]:wildcard on clients: ' \ '-u+[select by user]:user:_perforce_users' \ '-m+[set maximum to show]:max clients: ' } @@ -1706,6 +1768,26 @@ _perforce_cmd_counters() { } +(( $+functions[_perforce_cmd_dbschema] )) || +_perforce_cmd_dbschema() { + if [[ $PREFIX = *:* ]]; then + _message 'table version' + else + _perforce_dbtables + fi +} + + +(( $+functions[_perforce_cmd_dbstat] )) || +_perforce_cmd_dbstat() { + _arguments -s : \ + '(-s)-h[histogram of leaf pages in DB table]' \ + '(-s)-a[all tables]' \ + '(-h -a)-s[report sizes of tables]' \ + '(-s -a)*::DB table:_perforce_dbtable' +} + + (( $+functions[_perforce_cmd_delete] )) || _perforce_cmd_delete() { _arguments -s : \ @@ -1737,6 +1819,7 @@ _perforce_cmd_describe() { _arguments -s : \ '-d-[select diff option]:diff option:((b\:ignore\ blanks c\:context n\:RCS s\:summary u\:unified w\:ignore\ all\ whitespace))' \ '-s[short form]' \ + '-S[show shelved changes]' \ '*::change:_perforce_changes' } @@ -1786,20 +1869,36 @@ _perforce_cmd_dirs() { _perforce_cmd_edit() { _arguments -s : \ '-c[set change for edit]:change:_perforce_changes -tc' \ + '-k[no resync from server]' \ '-n[show files to edit without opening them]' \ '-t[set filetype]:filetype:_perforce_filetypes' \ '*::file:_perforce_files' } +(( $+functions[_perforce_cmd_export] )) || +_perforce_cmd_export() { + _arguments -s : \ + '(-j)-c[specify checkpoint number (/ position)]:checkpoint number: ' \ + '(-c)-j[specify journal number (/ position)]:journal number: ' \ + '(-j)-f[reformat non-textual data types]' \ + '(-j)-l[specify number of lines]:number of lines: ' \ + '(-j)-F[specify filter]:filter pattern: ' \ + '(-c)-r[raw format]' \ + '-J[specify file prefix]:file prefix: ' +} + + (( $+functions[_perforce_cmd_filelog] )) || _perforce_cmd_filelog() { _arguments -s : \ + '-c[select by changelist]:change:_perforce_changes -ts' \ '-h[follow branc/copy from records]' \ '-i[follow branches]' \ '-l[long output, full change text]' \ '-L[long output, truncated change text]' \ '-m[set maximum number of revisions to show]:max revisions: ' \ + '-s[short output]' \ '-t[include time with date]' \ '*::file:_perforce_files' } @@ -1872,14 +1971,18 @@ _perforce_cmd_fstat() { '-c+[affected since change]:change:_perforce_changes -ts' \ '-e+[affected by change]:change:_perforce_changes -ts' \ '-C[select mapped files (-Rc)]' \ + '-F[pick filter for files]:filter:_perforce_fstat_fields -tv' \ '-H[select synced files (-Rh)]' \ '-W[select opened files (-Ro)]' \ '-l[include fileSize, possibly slow (-Ol)]' \ '-m[set max files to show]:max files: ' \ "-O-[select output type]:output type:((f\:all\ revisions l\:fileSize p\:client\ path\ format r\:pending\ integrations s\:exclude\ local\ path$Oattr))" \ '-P[output clientFile in full Perforce syntax (deprecated: use -Op)]' \ - '-R-[restrict selected files]:restriction:((c\:mapped\ in\ client h\:synced\ to\ client n\:not\ synced\ to\ head o\:opened r\:resolved u\:unresolved))' \ + '-r[show in reverse order]' \ + '-R-[restrict selected files]:restriction:((c\:mapped\ in\ client h\:synced\ to\ client n\:not\ synced\ to\ head o\:opened r\:resolved s\:shelved u\:unresolved))' \ '-s[shorten, no client-related data (deprecated: use -Os)]' \ + '-S-[changes sort order]:sort criterion:((t\:filetype d\:date r\:head\ revision h\:have\ revision s\:filesize))' \ + '-T[select output fields]:output field:_perforce_fstat_fields' \ $Aattr \ '*::file:_perforce_files' } @@ -1969,6 +2072,11 @@ i\:ignore\ readded\ source\ file } +(( $+functions[_perforce_cmd_integ] )) || +_perforce_cmd_integ() { + _perforce_cmd_integrate "$@" +} + (( $+functions[_perforce_cmd_integrated] )) || _perforce_cmd_integrated() { _arguments -s : \ @@ -2055,7 +2163,9 @@ _perforce_cmd_label() { (( $+functions[_perforce_cmd_labels] )) || _perforce_cmd_labels() { _arguments -s : \ + '-e[limit by wildcard]:label wildcard: ' \ '-m+[set maximum to show]:max labels: ' \ + '-t[output time as well as date]' \ '-u+[select by user]:user:_perforce_users' \ '1::file or revisions which must contain label:_perforce_files -tR' } @@ -2088,6 +2198,12 @@ _perforce_cmd_lock() { } +(( $+functions[_perforce_cmd_lockstat] )) || +_perforce_cmd_lockstat() { + _message 'no arguments' +} + + (( $+functions[_perforce_cmd_logger] )) || _perforce_cmd_logger() { _arguments -s : \ @@ -2114,6 +2230,21 @@ _perforce_cmd_logout() { } +(( $+functions[_perforce_cmd_logstat] )) || +_perforce_cmd_logstat() { + _message 'no arguments' +} + + +(( $+functions[_perforce_cmd_logtail] )) || +_perforce_cmd_logtail() { + _arguments -s : \ + '-b[specify block size, default 8192]:block size: ' \ + '-s[specify start offset]:offset: ' \ + '-m[specify max blocks]:max blocks: ' +} + + (( $+functions[_perforce_cmd_monitor] )) || _perforce_cmd_monitor() { if (( CURRENT > 2 )); then @@ -2146,6 +2277,18 @@ _perforce_cmd_monitor() { } +(( $+functions[_perforce_cmd_move] )) || +_perforce_cmd_move() { + _arguments -s : \ + '-c[specify new change list]:change:_perforce_changes -tc' \ + '-k[no resync from server]' \ + '-t[specify new file type]:filetype:_perforce_filetypes' \ + '-n[show files to move without moving them]' \ + '1::source file, wildcards allowed:_perforce_files -to' \ + '2::destination file, wildcards match source:_perforce_files' +} + + (( $+functions[_perforce_cmd_obliterate] )) || _perforce_cmd_obliterate() { if [[ ${words[(I)-y]} -gt 0 ]]; then @@ -2170,6 +2313,7 @@ _perforce_cmd_opened() { '-c+[select by change]:change:_perforce_changes -tc' \ '-C[select by client]:client:_perforce_clients' \ '-m[max files to show]:max files: ' \ + '-u[select by user]:user name:_perforce_users' \ '*::file:_perforce_files -to' } @@ -2222,6 +2366,20 @@ _perforce_cmd_reopen() { } +(( $+functions[_perforce_cmd_replicate] )) || +_perforce_cmd_replicate() { + _arguments -s : \ + '-i[specify interval in seconds]:interval: ' \ + '-j[specify journal number (/ position)]:journal number: ' \ + '-J[specify file prefix]:file prefix: ' \ + '-k[keep pipe open]' \ + '-o[specify output file]:output file:_files' \ + '-s[specify file to track state]:state file:_files' \ + '-x[terminate when journal rotates]' \ + '*::->_command' +} + + (( $+functions[_perforce_cmd_resolve] )) || _perforce_cmd_resolve() { _arguments -s : \ @@ -2281,6 +2439,18 @@ _perforce_cmd_set() { } +(( $+functions[_perforce_cmd_shelve] )) || +_perforce_cmd_shelve() { + _arguments -s : \ + '(-i)-c[specify changlist if not default]:change:_perforce_changes -tc' \ + '(-i -r)-d[delete shelved files]' \ + '(-r)-f[force by admin user or force to overwrite]' \ + '(-c)-i[read from standard input]' \ + '(-d)-r[replace shelved files in changelist]' \ + '(-i -r)*::file:_perforce_files -to' +} + + (( $+functions[_perforce_cmd_sizes] )) || _perforce_cmd_sizes() { _arguments -s : \ @@ -2335,6 +2505,13 @@ _perforce_cmd_tag() { } +(( $+functions[_perforce_cmd_tickets] )) || +_perforce_cmd_tickets() { + # No arguments. + _arguments -s : +} + + (( $+functions[_perforce_cmd_triggers] )) || _perforce_cmd_triggers() { _arguments -s : \ @@ -2343,13 +2520,6 @@ _perforce_cmd_triggers() { } -(( $+functions[_perforce_cmd_tickets] )) || -_perforce_cmd_tickets() { - # No arguments. - _arguments -s : -} - - (( $+functions[_perforce_cmd_typemap] )) || _perforce_cmd_typemap() { _arguments -s : \ @@ -2367,6 +2537,17 @@ _perforce_cmd_unlock() { } +(( $+functions[_perforce_cmd_unshelve] )) || +_perforce_cmd_unshelve() { + _arguments -s : \ + '-s[specify shelving change]:change:_perforce_changes -tS' \ + '-c[specify change for unshelve]:change:_perforce_changes -tc' \ + '-f[force clobbering of writeable files]' \ + '-n[preview unshelve]' \ + '*::file, pattern allowed:_perforce_files' +} + + (( $+functions[_perforce_cmd_user] )) || _perforce_cmd_user() { _arguments -s : \ @@ -2393,6 +2574,7 @@ _perforce_cmd_verify() { '-q[operate quietly]' \ '-u[compute and save digest if missing]' \ '-v[compute and save all digets]' \ + '-z[skip duplicates]' \ '*::file:_perforce_files -tR' } |