codelation-cli 0.0.18 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,11 +60,16 @@
60
60
  # of values:
61
61
  #
62
62
  # verbose show number of commits ahead/behind (+/-) upstream
63
+ # name if verbose, then also show the upstream abbrev name
63
64
  # legacy don't use the '--count' option available in recent
64
65
  # versions of git-rev-list
65
66
  # git always compare HEAD to @{upstream}
66
67
  # svn always compare HEAD to your SVN upstream
67
68
  #
69
+ # You can change the separator between the branch name and the above
70
+ # state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
71
+ # is SP.
72
+ #
68
73
  # By default, __git_ps1 will compare HEAD to your SVN upstream if it can
69
74
  # find one, or @{upstream} otherwise. Once you have set
70
75
  # GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
@@ -83,6 +88,15 @@
83
88
  # GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
84
89
  # the colored output of "git status -sb" and are available only when
85
90
  # using __git_ps1 for PROMPT_COMMAND or precmd.
91
+ #
92
+ # If you would like __git_ps1 to do nothing in the case when the current
93
+ # directory is set up to be ignored by git, then set
94
+ # GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
95
+ # repository level by setting bash.hideIfPwdIgnored to "false".
96
+
97
+ # check whether printf supports -v
98
+ __git_printf_supports_v=
99
+ printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
86
100
 
87
101
  # stores the divergence from upstream in $p
88
102
  # used by GIT_PS1_SHOWUPSTREAM
@@ -90,7 +104,7 @@ __git_ps1_show_upstream ()
90
104
  {
91
105
  local key value
92
106
  local svn_remote svn_url_pattern count n
93
- local upstream=git legacy="" verbose=""
107
+ local upstream=git legacy="" verbose="" name=""
94
108
 
95
109
  svn_remote=()
96
110
  # get some config options from git-config
@@ -106,7 +120,7 @@ __git_ps1_show_upstream ()
106
120
  ;;
107
121
  svn-remote.*.url)
108
122
  svn_remote[$((${#svn_remote[@]} + 1))]="$value"
109
- svn_url_pattern+="\\|$value"
123
+ svn_url_pattern="$svn_url_pattern\\|$value"
110
124
  upstream=svn+git # default upstream is SVN if available, else git
111
125
  ;;
112
126
  esac
@@ -118,6 +132,7 @@ __git_ps1_show_upstream ()
118
132
  git|svn) upstream="$option" ;;
119
133
  verbose) verbose=1 ;;
120
134
  legacy) legacy=1 ;;
135
+ name) name=1 ;;
121
136
  esac
122
137
  done
123
138
 
@@ -200,6 +215,18 @@ __git_ps1_show_upstream ()
200
215
  *) # diverged from upstream
201
216
  p=" u+${count#* }-${count% *}" ;;
202
217
  esac
218
+ if [[ -n "$count" && -n "$name" ]]; then
219
+ __git_ps1_upstream_name=$(git rev-parse \
220
+ --abbrev-ref "$upstream" 2>/dev/null)
221
+ if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
222
+ p="$p \${__git_ps1_upstream_name}"
223
+ else
224
+ p="$p ${__git_ps1_upstream_name}"
225
+ # not needed anymore; keep user's
226
+ # environment clean
227
+ unset __git_ps1_upstream_name
228
+ fi
229
+ fi
203
230
  fi
204
231
 
205
232
  }
@@ -250,6 +277,13 @@ __git_ps1_colorize_gitstring ()
250
277
  r="$c_clear$r"
251
278
  }
252
279
 
280
+ __git_eread ()
281
+ {
282
+ local f="$1"
283
+ shift
284
+ test -r "$f" && read "$@" <"$f"
285
+ }
286
+
253
287
  # __git_ps1 accepts 0 or 1 arguments (i.e., format string)
254
288
  # when called from PS1 using command substitution
255
289
  # in this mode it prints text to add to bash PS1 prompt (includes branch name)
@@ -263,6 +297,8 @@ __git_ps1_colorize_gitstring ()
263
297
  # In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
264
298
  __git_ps1 ()
265
299
  {
300
+ # preserve exit status
301
+ local exit=$?
266
302
  local pcmode=no
267
303
  local detached=no
268
304
  local ps1pc_start='\u@\h:\w '
@@ -274,13 +310,54 @@ __git_ps1 ()
274
310
  ps1pc_start="$1"
275
311
  ps1pc_end="$2"
276
312
  printf_format="${3:-$printf_format}"
313
+ # set PS1 to a plain prompt so that we can
314
+ # simply return early if the prompt should not
315
+ # be decorated
316
+ PS1="$ps1pc_start$ps1pc_end"
277
317
  ;;
278
318
  0|1) printf_format="${1:-$printf_format}"
279
319
  ;;
280
- *) return
320
+ *) return $exit
281
321
  ;;
282
322
  esac
283
323
 
324
+ # ps1_expanded: This variable is set to 'yes' if the shell
325
+ # subjects the value of PS1 to parameter expansion:
326
+ #
327
+ # * bash does unless the promptvars option is disabled
328
+ # * zsh does not unless the PROMPT_SUBST option is set
329
+ # * POSIX shells always do
330
+ #
331
+ # If the shell would expand the contents of PS1 when drawing
332
+ # the prompt, a raw ref name must not be included in PS1.
333
+ # This protects the user from arbitrary code execution via
334
+ # specially crafted ref names. For example, a ref named
335
+ # 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
336
+ # shell to execute 'sudo rm -rf /' when the prompt is drawn.
337
+ #
338
+ # Instead, the ref name should be placed in a separate global
339
+ # variable (in the __git_ps1_* namespace to avoid colliding
340
+ # with the user's environment) and that variable should be
341
+ # referenced from PS1. For example:
342
+ #
343
+ # __git_ps1_foo=$(do_something_to_get_ref_name)
344
+ # PS1="...stuff...\${__git_ps1_foo}...stuff..."
345
+ #
346
+ # If the shell does not expand the contents of PS1, the raw
347
+ # ref name must be included in PS1.
348
+ #
349
+ # The value of this variable is only relevant when in pcmode.
350
+ #
351
+ # Assume that the shell follows the POSIX specification and
352
+ # expands PS1 unless determined otherwise. (This is more
353
+ # likely to be correct if the user has a non-bash, non-zsh
354
+ # shell and safer than the alternative if the assumption is
355
+ # incorrect.)
356
+ #
357
+ local ps1_expanded=yes
358
+ [ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
359
+ [ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
360
+
284
361
  local repo_info rev_parse_exit_code
285
362
  repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
286
363
  --is-bare-repository --is-inside-work-tree \
@@ -288,11 +365,7 @@ __git_ps1 ()
288
365
  rev_parse_exit_code="$?"
289
366
 
290
367
  if [ -z "$repo_info" ]; then
291
- if [ $pcmode = yes ]; then
292
- #In PC mode PS1 always needs to be set
293
- PS1="$ps1pc_start$ps1pc_end"
294
- fi
295
- return
368
+ return $exit
296
369
  fi
297
370
 
298
371
  local short_sha
@@ -307,14 +380,22 @@ __git_ps1 ()
307
380
  local inside_gitdir="${repo_info##*$'\n'}"
308
381
  local g="${repo_info%$'\n'*}"
309
382
 
383
+ if [ "true" = "$inside_worktree" ] &&
384
+ [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
385
+ [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
386
+ git check-ignore -q .
387
+ then
388
+ return $exit
389
+ fi
390
+
310
391
  local r=""
311
392
  local b=""
312
393
  local step=""
313
394
  local total=""
314
395
  if [ -d "$g/rebase-merge" ]; then
315
- read b 2>/dev/null <"$g/rebase-merge/head-name"
316
- read step 2>/dev/null <"$g/rebase-merge/msgnum"
317
- read total 2>/dev/null <"$g/rebase-merge/end"
396
+ __git_eread "$g/rebase-merge/head-name" b
397
+ __git_eread "$g/rebase-merge/msgnum" step
398
+ __git_eread "$g/rebase-merge/end" total
318
399
  if [ -f "$g/rebase-merge/interactive" ]; then
319
400
  r="|REBASE-i"
320
401
  else
@@ -322,10 +403,10 @@ __git_ps1 ()
322
403
  fi
323
404
  else
324
405
  if [ -d "$g/rebase-apply" ]; then
325
- read step 2>/dev/null <"$g/rebase-apply/next"
326
- read total 2>/dev/null <"$g/rebase-apply/last"
406
+ __git_eread "$g/rebase-apply/next" step
407
+ __git_eread "$g/rebase-apply/last" total
327
408
  if [ -f "$g/rebase-apply/rebasing" ]; then
328
- read b 2>/dev/null <"$g/rebase-apply/head-name"
409
+ __git_eread "$g/rebase-apply/head-name" b
329
410
  r="|REBASE"
330
411
  elif [ -f "$g/rebase-apply/applying" ]; then
331
412
  r="|AM"
@@ -349,11 +430,8 @@ __git_ps1 ()
349
430
  b="$(git symbolic-ref HEAD 2>/dev/null)"
350
431
  else
351
432
  local head=""
352
- if ! read head 2>/dev/null <"$g/HEAD"; then
353
- if [ $pcmode = yes ]; then
354
- PS1="$ps1pc_start$ps1pc_end"
355
- fi
356
- return
433
+ if ! __git_eread "$g/HEAD" head; then
434
+ return $exit
357
435
  fi
358
436
  # is it a symbolic ref?
359
437
  b="${head#ref: }"
@@ -406,13 +484,14 @@ __git_ps1 ()
406
484
  fi
407
485
  fi
408
486
  if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
409
- [ -r "$g/refs/stash" ]; then
487
+ git rev-parse --verify --quiet refs/stash >/dev/null
488
+ then
410
489
  s="$"
411
490
  fi
412
491
 
413
492
  if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
414
493
  [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
415
- git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
494
+ git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
416
495
  then
417
496
  u="%${ZSH_VERSION+%}"
418
497
  fi
@@ -429,11 +508,17 @@ __git_ps1 ()
429
508
  __git_ps1_colorize_gitstring
430
509
  fi
431
510
 
511
+ b=${b##refs/heads/}
512
+ if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
513
+ __git_ps1_branch_name=$b
514
+ b="\${__git_ps1_branch_name}"
515
+ fi
516
+
432
517
  local f="$w$i$s$u"
433
- local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
518
+ local gitstring="$c$b${f:+$z$f}$r$p"
434
519
 
435
520
  if [ $pcmode = yes ]; then
436
- if [[ -n ${ZSH_VERSION-} ]]; then
521
+ if [ "${__git_printf_supports_v-}" != yes ]; then
437
522
  gitstring=$(printf -- "$printf_format" "$gitstring")
438
523
  else
439
524
  printf -v gitstring -- "$printf_format" "$gitstring"
@@ -442,4 +527,6 @@ __git_ps1 ()
442
527
  else
443
528
  printf -- "$printf_format" "$gitstring"
444
529
  fi
445
- }
530
+
531
+ return $exit
532
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codelation-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Pattison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-06 00:00:00.000000000 Z
11
+ date: 2015-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open_uri_redirections
@@ -90,6 +90,7 @@ files:
90
90
  - lib/codelation/development/dot_files.rb
91
91
  - lib/codelation/development/install_methods.rb
92
92
  - lib/codelation/development/postgres.rb
93
+ - lib/codelation/development/psequel.rb
93
94
  - lib/codelation/development/ruby.rb
94
95
  - lib/codelation/development/sequel_pro.rb
95
96
  - lib/codelation/version.rb