Skip to content

Instantly share code, notes, and snippets.

@stisti
Created June 5, 2015 18:40
Show Gist options
  • Save stisti/a33c624288fde9cb418e to your computer and use it in GitHub Desktop.
Save stisti/a33c624288fde9cb418e to your computer and use it in GitHub Desktop.
Jenkins jobname completion
jenkins_jobnames() {
node -e 'require("request")({url: process.env.JENKINS_URL+"/view/All/api/json", strictSSL: false},function(e,r,b){JSON.parse(b).jobs.forEach(function(e){console.log(e.name)})})'
}
# Alternative implementation
jenkins_jobnames2() {
http $JENKINS_URL/api/json | jq -r .jobs[].name
}
__jenkins_jobname_complete() {
cmd="$1"
word_being_completed="$2"
word_before="$3"
(
# Does cache file exist and is it less than 1 hour old?
if [ -s $HOME/.jenkins_jobnames ]; then
eval $(stat -s $HOME/.jenkins_jobnames)
if [ $(($(date +%s) - $st_mtime)) -lt 3600 ]; then
cat $HOME/.jenkins_jobnames
else
jenkins_jobnames | tee $HOME/.jenkins_jobnames
fi
else
jenkins_jobnames | tee $HOME/.jenkins_jobnames
fi
) | egrep "^${word_being_completed}"
}
type -p nestor >/dev/null && complete -C __jenkins_jobname_complete nestor
type -p j >/dev/null && complete -C __jenkins_jobname_complete j
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment