Blame view

plugins/history-substring-search/update-from-upstream.zsh 4.07 KB
7378b55de   mj   Squashed 'repos/r...
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
  #!/usr/bin/env zsh
  #
  # update-from-upstream.zsh
  #
  # This script updates the Oh My Zsh version of the zsh-history-substring-search
  # plugin from the independent upstream repo. This is to be run by OMZ developers
  # when they want to pull in new changes from upstream to OMZ. It is not run
  # during normal use of the plugin.
  #
  # The official upstream repo is zsh-users/zsh-history-substring-search
  # https://github.com/zsh-users/zsh-history-substring-search
  #
  # This is a zsh script, not a function. Call it with `zsh update-from-upstream.zsh`
  # from the command line, running it from within the plugin directory.
  #
  # You can set the environment variable REPO_PATH to point it at an upstream
  # repo you have already prepared. Otherwise, it will do a clean checkout of
  # upstream's HEAD to a temporary local repo and use that.
  
  
  # Just bail on any error so we don't have to do extra checking.
  # This is a developer-use script, so terse output like that should
  # be fine.
  set -e
  
  
  upstream_basename=zsh-history-substring-search
  plugin_basename=history-substring-search
  UPSTREAM_REPO=zsh-users/$upstream_basename
  need_repo_cleanup=false
  upstream_github_url="https://github.com/$UPSTREAM_REPO"
  
  if [[ -z "$UPSTREAM_REPO_PATH" ]]; then
    # Do a clean checkout
    my_tempdir=$(mktemp -d -t omz-update-histsubstrsrch)
    UPSTREAM_REPO_PATH="$my_tempdir/$upstream_basename"
    git clone "$upstream_github_url" "$UPSTREAM_REPO_PATH"
    need_repo_cleanup=true
    print "Checked out upstream repo to $UPSTREAM_REPO_PATH"
  else
  	print "Using existing $upstream_basename repo at $UPSTREAM_REPO_PATH"
  fi
  
  upstream="$UPSTREAM_REPO_PATH"
  
  # Figure out what we're pulling in
  upstream_sha=$(cd $upstream && git rev-parse HEAD)
  upstream_commit_date=$(cd $upstream && git log  -1 --pretty=format:%ci)
  upstream_just_date=${${=upstream_commit_date}[1]}
  print "upstream SHA:         $upstream_sha"
  print "upstream commit time: $upstream_commit_date"
  print "upstream commit date: $upstream_just_date"
  print
  
  # Copy the files over, using the OMZ plugin's names where needed
  cp -v "$upstream"/* .
  mv -v zsh-history-substring-search.zsh $plugin_basename.zsh
  mv -v zsh-history-substring-search.plugin.zsh $plugin_basename.plugin.zsh
  
  if [[ $need_repo_cleanup == true ]]; then
  	print "Removing temporary repo at $my_tempdir"
  	rm -rf "$my_tempdir"
  fi
  
  # Do OMZ-specific edits
  
  print
  print "Updating files with OMZ-specific stuff"
  print
  
  # OMZ binds the keys as part of the plugin loading
  
  cat >> $plugin_basename.plugin.zsh <<EOF
  
  
  # Bind terminal-specific up and down keys
  
  if [[ -n "\$terminfo[kcuu1]" ]]; then
61aaa7b58   mj   Squashed 'repos/r...
79
80
    bindkey -M emacs "\$terminfo[kcuu1]" history-substring-search-up
    bindkey -M viins "\$terminfo[kcuu1]" history-substring-search-up
7378b55de   mj   Squashed 'repos/r...
81
82
  fi
  if [[ -n "\$terminfo[kcud1]" ]]; then
61aaa7b58   mj   Squashed 'repos/r...
83
84
    bindkey -M emacs "\$terminfo[kcud1]" history-substring-search-down
    bindkey -M viins "\$terminfo[kcud1]" history-substring-search-down
7378b55de   mj   Squashed 'repos/r...
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
  fi
  
  EOF
  
  # Tack OMZ-specific notes on to readme
  
  thin_line="------------------------------------------------------------------------------"
  cat >> README.md <<EOF
  
  $thin_line
  Oh My Zsh Distribution Notes
  $thin_line
  
  What you are looking at now is Oh My Zsh's repackaging of zsh-history-substring-search 
  as an OMZ module inside the Oh My Zsh distribution.
  
  The upstream repo, $UPSTREAM_REPO, can be found on GitHub at 
  $upstream_github_url.
  
  This downstream copy was last updated from the following upstream commit:
  
    SHA:          $upstream_sha
    Commit date:  $upstream_commit_date
  
  Everything above this section is a copy of the original upstream's README, so things
  may differ slightly when you're using this inside OMZ. In particular, you do not
  need to set up key bindings for the up and down arrows yourself in \`~/.zshrc\`; the OMZ 
  plugin does that for you. You may still want to set up additional emacs- or vi-specific
  bindings as mentioned above.
  
  EOF
  
  # Announce success and generate git commit messages
  
  cat <<EOF
  Done OK
  
  Now you can check the results and commit like this:
  
    git add *
    git commit -m "history-substring-search: update to upstream version $upstream_just_date" \\
        -m "Updates OMZ's copy to commit $upstream_sha from $UPSTREAM_REPO"
  
  EOF