You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							129 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
	
	
							129 lines
						
					
					
						
							4.1 KiB
						
					
					
				| #!/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 | |
|   bindkey -M emacs "\$terminfo[kcuu1]" history-substring-search-up | |
|   bindkey -M viins "\$terminfo[kcuu1]" history-substring-search-up | |
| fi | |
| if [[ -n "\$terminfo[kcud1]" ]]; then | |
|   bindkey -M emacs "\$terminfo[kcud1]" history-substring-search-down | |
|   bindkey -M viins "\$terminfo[kcud1]" history-substring-search-down | |
| 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 | |
| 
 | |
| 
 |