#!/bin/bash alias gs="git status" alias gc="git commit" unalias gcm 2>/dev/null alias gcm="git commit -m" alias gps="git push" alias gpl="git pull" unalias ga 2>/dev/null alias ga="git add" alias gch="git checkout" alias lg="ls | grep" alias gdc="git diff --cached" function gas() { git add --all git status } alias det="docker exec -it" function gchtime() { git commit --amend --no-edit --date=${VARIABLE:-"now"} } unalias gbd 2>/dev/null function gbd() { git branch --merged >/tmp/merged-branches && vim /tmp/merged-branches && xargs git branch -d &2 echo "No branch supplied, using issue title" url="https://gitlab.elnino.tech/elnino/snooze/$issue_project/-/issues/$id" title=$(glab issue view $url); title=$(echo $title | sed -n '1 p' | sed 's/title://' | sed 's/^[[:space:]] *//g' | sed -e 's/ /-/g' | sed -e 's/\[//g' | sed -e 's/\]//g' ) fi; if [[ ! -z $2 ]]; then branchname="$2" else branchname="$issue_project#$id-$title" fi; echo $branchname } function gbi() { current_branch=$(git branch --show-current) if [[ $current_branch != "master" ]]; then echo "Checkout master" && return; fi; if [[ -z $1 ]]; then echo "No issue number supplied" return 1 fi; newbranch=$(branchname $1 $2) git switch -c $newbranch } unalias gl 2>/dev/null alias gl="glab" alias glci="glab ci view" alias glciw="glab ci view --web" # get snippets from elnino gitlab function gitlab_snippets() { SPACES=$(printf '%*s' 50) if [ -z ${GITLAB_TOKEN+x} ]; then echo "GITLAB_TOKEN is not set."; else if [ -n "$1" ]; then update_snippet $1; return; fi SNIPPETS=$(curl --silent --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ --url "https://gitlab.elnino.tech/api/v4/snippets") echo " -------------------------------------------------- " echo "| ID: | Snippet name |" echo "|---------|----------------------------------------|" echo "$SNIPPETS" | tr -d '\n' | jq -r --arg spaces "$SPACES" '.[] | [("| " + (.id | tostring) + " ")[0:9], .title] | join(" | ") | if length > 50 then .[0:47] + "..." else . + $spaces end | .[0:50] + " |" ' echo " -------------------------------------------------- " fi } function update_snippet() { if [ -z "$1" ]; then echo "Error: Missing snippet id"; else # URL="https://gitlab.elnino.tech/api/v4/snippets/$1/raw" URL="https://gitlab.elnino.tech/api/v4/snippets/$1" # echo $URL INFO=$(curl --silent --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ --url $URL) FILENAME=$(jq -r '.file_name' <<< $INFO) FILEPATH="/tmp/$FILENAME" curl --silent --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ --url "${URL}/raw" > $FILEPATH TITLE=$(jq -r '.title' <<< $INFO) DESC=$(jq -r '.description' <<< $INFO) VISIBILITY=$(jq -r '.visibility' <<< $INFO) nvim $FILEPATH CONTENT=$(cat $FILEPATH) JSON=$(jq -cn --arg content "$CONTENT" --arg title "$TITLE" --arg desc "$DESC" --arg filename "$FILENAME" --arg visibility "$VISIBILITY" '{title: $title, action: "update", file_name: $filename, visibility: $visibility, description: $desc, content: $content}') response_code=$(curl -s -o /dev/null --request PUT $URL -w "%{http_code}" \ --header 'Content-Type: application/json' \ --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ --data "$JSON") if [ "$response_code" != "200" ]; then echo "Error: Something went wrong, response code $response_code. Your changes have been saved to '$FILENAME'" cp $FILEPATH $FILENAME fi fi } alias gls="gitlab_snippets" function learning_time() { # ANSI color codes RED='\033[0;31m' GREEN='\033[0;32m' CYAN='\033[0;36m' NC='\033[0m' # No Color USER_ID=300883 LEARNING_ID=21758966 YEAR=$(date +%Y) INFO=$(curl --silent -u $PAYMO_TOKEN:f \ -H 'Accept: application/json' \ --url "https://app.paymoapp.com/api/entries?where=user_id=$USER_ID%20and%20time_interval%20in%20(%22$YEAR-01-01T00%3A00%3A00.000Z%22%2C%22$YEAR-12-31T23%3A59%3A59.000Z%22)%20") LEARNING_TIME=$(jq "[.entries[] | select(.task_id==$LEARNING_ID) | .duration] | add" <<< "$INFO") TOTAL_TIME=$(jq "[.entries[] | .duration] | add" <<< "$INFO") # check if user added a parameter # if so, use it as total time in hours if [ -n "$1" ]; then TOTAL_TIME=$(echo "scale=2; $1 * 3600" | bc) fi PERCENTAGE_LEARNING=$(echo "scale=2; 100 * $LEARNING_TIME / $TOTAL_TIME" | bc) LEARNING_TIME=$(echo "scale=2; $LEARNING_TIME / 3600" | bc) TOTAL_TIME=$(echo "scale=2; $TOTAL_TIME / 3600" | bc) TOTAL_LEARNING_TIME=$(echo "scale=2; $TOTAL_TIME * 0.1" | bc) LEARNING_DIFF=$(echo "scale=2; $TOTAL_LEARNING_TIME - $LEARNING_TIME" | bc) echo -e "Total time spent: ${CYAN}$TOTAL_TIME hours${NC}" echo -e "Total learning time available: ${CYAN}$TOTAL_LEARNING_TIME hours${NC}" echo -e "Total learning time spent: ${CYAN}$LEARNING_TIME hours${NC}" if (( $(echo "$PERCENTAGE_LEARNING > 10" | bc -l) )); then echo -e "Percentage of time spent learning: ${RED}${PERCENTAGE_LEARNING}%${NC}" else echo -e "Percentage of time spent learning: ${GREEN}${PERCENTAGE_LEARNING}%${NC}" fi if (( $(echo "$LEARNING_DIFF > 0" | bc -l) )); then echo -e "Total learning time not used: ${GREEN}$LEARNING_DIFF hours${NC}" else echo -e "Total extra learning time used: ${RED}${LEARNING_DIFF#-} hours${NC}" fi } # git pull all branches function gpla() { # Define an array of branches to pull branches=("master" "main" "release" "beta" "acceptance") git pull # Fetch each branch without switching for branch in "${branches[@]}"; do echo "Fetching latest changes for branch: $branch" # Fetch and update the branch, skipping if it doesn't exist if git fetch origin "$branch:$branch" 2>/dev/null; then echo "Successfully updated $branch." else echo "Branch $branch does not exist on origin. Skipping..." fi done echo "Finished fetching branches." } # source the tmux-sessions.sh in the same folder source $(dirname "$0")/tmux-sessions.sh