#!/usr/bin/env bash set -e -o pipefail if [[ $1 == "" ]] then branch=$(git rev-parse --abbrev-ref HEAD &> /dev/null) remote=$(git config branch."${branch}".remote || echo "origin") else remote=$1 fi if [[ -z $remote ]] then echo "Remote not found" exit 1 fi remote_url=$(git remote get-url "${remote}") || exit $? if [[ $remote_url = git@* ]] then url=$(echo "${remote_url}" | sed -E -e 's/:/\//' -e 's/\.git$//' -e 's/.*@(.*)/http:\/\/\1/') elif [[ $remote_url = http* ]] then url=${remote_url%.git} fi if [[ $url =~ github ]] then ci_url=${url}/actions elif [[ $url =~ gitlab ]] then ci_url=${url}/-/pipelines elif [[ $url =~ bitbucket ]] then ci_url=${url}/addon/pipelines/home fi case "$OSTYPE" in darwin*) # MacOS open "${ci_url}" ;; msys) # Git-Bash on Windows start "${ci_url}" ;; linux*) # Handle WSL on Windows if uname -a | grep -i -q Microsoft && command -v powershell.exe then powershell.exe -NoProfile start "${ci_url}" else xdg-open "${ci_url}" fi ;; *) # fall back to xdg-open for BSDs, etc. xdg-open "${ci_url}" ;; esac