Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
30d44171
Unverified
Commit
30d44171
authored
Sep 30, 2021
by
Marc Cornellà
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(updater): check if there are updates before prompting (#8387)
Fixes #8387
parent
0120749a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
1 deletion
+43
-1
check_for_upgrade.sh
tools/check_for_upgrade.sh
+43
-1
No files found.
tools/check_for_upgrade.sh
View file @
30d44171
...
@@ -32,6 +32,41 @@ function current_epoch() {
...
@@ -32,6 +32,41 @@ function current_epoch() {
echo
$((
EPOCHSECONDS
/
60
/
60
/
24
))
echo
$((
EPOCHSECONDS
/
60
/
60
/
24
))
}
}
function
is_update_available
()
{
local
branch
branch
=
${
"
$(
git
-C
"
$ZSH
"
config
--local
oh-my-zsh.branch
)
"
:-
master
}
local
remote remote_url remote_repo
remote
=
${
"
$(
git
-C
"
$ZSH
"
config
--local
oh-my-zsh.remote
)
"
:-
origin
}
remote_url
=
$(
git
-C
"
$ZSH
"
config remote.
$remote
.url
)
local
repo
case
"
$remote_url
"
in
https://github.com/
*
)
repo
=
${${
remote_url
#https
://github.com/
}
%.git
}
;;
git@github.com:
*
)
repo
=
${${
remote_url
#git@github.com
:
}
%.git
}
;;
*
)
# If the remote is not using GitHub we can't check for updates
# Let's assume there are updates
return
0
;;
esac
# If the remote repo is not the official one, let's assume there are updates available
[[
"
$repo
"
=
ohmyzsh/ohmyzsh
]]
||
return
0
local
api_url
=
"https://api.github.com/repos/
${
repo
}
/commits/
${
branch
}
"
# Get local and remote HEADs and compare them. If we can't get either assume there are updates
local
local_head remote_head
local_head
=
$(
git
-C
"
$ZSH
"
rev-parse
$branch
2>/dev/null
)
||
return
0
remote_head
=
$(
curl
-fsSL
-H
'Accept: application/vnd.github.v3.sha'
$api_url
2>/dev/null
)
\
||
remote_head
=
$(
wget
-O-
--header
=
'Accept: application/vnd.github.v3.sha'
$api_url
2>/dev/null
)
\
||
remote_head
=
$(
HTTP_ACCEPT
=
'Accept: application/vnd.github.v3.sha'
fetch
-o
-
$api_url
2>/dev/null
)
\
||
return
0
# Compare local and remote HEADs
[[
"
$local_head
"
!=
"
$remote_head
"
]]
}
function
update_last_updated_file
()
{
function
update_last_updated_file
()
{
echo
"LAST_EPOCH=
$(
current_epoch
)
"
>!
"
${
ZSH_CACHE_DIR
}
/.zsh-update"
echo
"LAST_EPOCH=
$(
current_epoch
)
"
>!
"
${
ZSH_CACHE_DIR
}
/.zsh-update"
}
}
...
@@ -69,6 +104,8 @@ function update_ohmyzsh() {
...
@@ -69,6 +104,8 @@ function update_ohmyzsh() {
# the shell actually exits what it's running.
# the shell actually exits what it's running.
trap
"
trap
"
ret=
\$
?
ret=
\$
?
unset update_mode
unset -f current_epoch is_update_available update_last_updated_file update_ohmyzsh 2>/dev/null
command rm -rf '
$ZSH
/log/update.lock'
command rm -rf '
$ZSH
/log/update.lock'
return
\$
ret
return
\$
ret
"
EXIT INT QUIT
"
EXIT INT QUIT
...
@@ -86,6 +123,11 @@ function update_ohmyzsh() {
...
@@ -86,6 +123,11 @@ function update_ohmyzsh() {
return
return
fi
fi
# Check if there are updates available before proceeding
if
!
is_update_available
;
then
return
fi
# Ask for confirmation before updating unless in auto mode
# Ask for confirmation before updating unless in auto mode
if
[[
"
$update_mode
"
=
auto
]]
;
then
if
[[
"
$update_mode
"
=
auto
]]
;
then
update_ohmyzsh
update_ohmyzsh
...
@@ -108,4 +150,4 @@ function update_ohmyzsh() {
...
@@ -108,4 +150,4 @@ function update_ohmyzsh() {
}
}
unset
update_mode
unset
update_mode
unset
-f
current_epoch update_last_updated_file update_ohmyzsh
unset
-f
current_epoch
is_update_available
update_last_updated_file update_ohmyzsh
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment