summaryrefslogtreecommitdiff
path: root/plugins/history-substring-search
diff options
context:
space:
mode:
authorAndrew Janke <andrew@apjanke.net>2015-07-07 16:47:31 -0400
committerMarc Cornellà <marc.cornella@live.com>2015-11-27 16:59:06 +0100
commitd7e6ba0b66fd65c71e9e3d4a4a5216dfde141944 (patch)
tree65e9a5fb90f838e02a7d9f6821798b2754b54912 /plugins/history-substring-search
parentbefb5b66c5d5b5af294dc18ea0d122754a42de89 (diff)
downloadzsh-d7e6ba0b66fd65c71e9e3d4a4a5216dfde141944.tar.gz
zsh-d7e6ba0b66fd65c71e9e3d4a4a5216dfde141944.tar.bz2
zsh-d7e6ba0b66fd65c71e9e3d4a4a5216dfde141944.zip
history-substring-search: add a script to automatically update OMZ from the upstream repo
Diffstat (limited to 'plugins/history-substring-search')
-rwxr-xr-xplugins/history-substring-search/update-from-upstream.zsh94
1 files changed, 94 insertions, 0 deletions
diff --git a/plugins/history-substring-search/update-from-upstream.zsh b/plugins/history-substring-search/update-from-upstream.zsh
new file mode 100755
index 000000000..45950f447
--- /dev/null
+++ b/plugins/history-substring-search/update-from-upstream.zsh
@@ -0,0 +1,94 @@
+#!/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_BASE=zsh-history-substring-search
+UPSTREAM_REPO=zsh-users/$UPSTREAM_BASE
+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_BASE"
+ 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 zsh-history-substring-search 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)
+print "upstream SHA: $upstream_sha"
+print "upstream commit date: $upstream_commit_date"
+print
+
+# Copy the files over, using the OMZ plugin's names where needed
+cp -v "$upstream"/* .
+mv zsh-history-substring-search.plugin.zsh history-substring-search.plugin.zsh
+mv zsh-history-substring-search.zsh history-substring-search.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"
+
+# Tack OMZ-specific notes on to readme
+thin_line="------------------------------------------------------------------------------"
+cat >> README.md <<EOF
+
+$thin_line
+Oh My Zsh Notes
+$thin_line
+
+This 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 yourself in \`~/.zshrc\`; the OMZ plugin does that for
+you.
+
+EOF
+
+print
+print "Done OK"
+