Compare commits

...

5 Commits

Author SHA1 Message Date
04206a5471 [shell-common] Support fzf on awslogin 2025-12-12 22:27:11 +00:00
Andrew Williams
4115692e51 [macos] Add Homebrew installs 2025-11-14 09:25:08 +00:00
Andrew Williams
d27de08a5c [shell-common] Rename check function 2025-11-14 09:21:44 +00:00
Andrew Williams
7b493cbfde [shell-common] Add AWS credentials check 2025-11-14 09:20:41 +00:00
b66a25ef26 [shell-common] Fix TZ_LIST, reorder to after homebrew 2025-08-09 14:54:54 +01:00
3 changed files with 67 additions and 11 deletions

View File

@@ -20,9 +20,12 @@ brew "poetry"
brew "sass/sass/sass"
brew "smartmontools"
brew "hashicorp/tap/terraform"
brew "terraform-local"
brew "tz"
brew "uv"
brew "yazi"
brew "jq"
brew "fzf"
cask "appcleaner"
cask "balenaetcher"

View File

@@ -1,4 +1,3 @@
# Get the list of AWS profiles
function awsprofiles() {
profiles=$(aws --no-cli-pager configure list-profiles 2> /dev/null)
@@ -28,19 +27,47 @@ function awslogin() {
;;
*)
echo "Unknown option: $1"
echo "Usage: awslogin --profile prof [--region region]"
echo "Usage: awslogin [--profile prof] [--region region]"
return 1
;;
esac
done
# Check if profile is provided
if [[ -z "$profile" ]]; then
echo "Error: --profile parameter is required."
echo "Usage: awslogin --profile prof [--region region]"
# Get available profiles
local available_profiles
available_profiles=$(aws --no-cli-pager configure list-profiles 2> /dev/null)
if [[ -z "$available_profiles" ]]; then
echo "No AWS profiles found in ~/.aws/config"
return 1
fi
# If no profile provided, use fzf to select one
if [[ -z "$profile" ]]; then
profile=$(echo "$available_profiles" | fzf --header "Select AWS profile" --height 40%)
if [[ -z "$profile" ]]; then
echo "No profile selected."
return 1
fi
else
# Check if provided profile exists
if ! echo "$available_profiles" | grep -qx "$profile"; then
echo "Profile '$profile' not found. Searching for matches..."
local matched_profiles
matched_profiles=$(echo "$available_profiles" | grep -i "$profile")
if [[ -z "$matched_profiles" ]]; then
echo "No matching profiles found."
return 1
fi
profile=$(echo "$matched_profiles" | fzf --header "Select AWS profile" --height 40%)
if [[ -z "$profile" ]]; then
echo "No profile selected."
return 1
fi
fi
fi
# Build AWS CLI options
local aws_opts=()
[[ -n "$profile" ]] && aws_opts+=(--profile "$profile")
@@ -71,10 +98,36 @@ function awslogout() {
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
unset AWS_CREDENTIAL_EXPIRATION
export AWS_PROFILE_DISPLAY=""
echo "AWS profile and credentials cleared."
}
function _aws_creds_expiration_check() {
if [[ -n "$AWS_CREDENTIAL_EXPIRATION" ]]; then
local expiration_epoch
local current_epoch
# Convert expiration time to epoch (handles ISO 8601 format)
if command -v gdate &> /dev/null; then
# macOS with GNU coreutils installed
expiration_epoch=$(gdate -d "$AWS_CREDENTIAL_EXPIRATION" +%s 2>/dev/null)
current_epoch=$(gdate +%s)
else
# macOS with BSD date
expiration_epoch=$(date -j -f "%Y-%m-%dT%H:%M:%S%z" "$AWS_CREDENTIAL_EXPIRATION" +%s 2>/dev/null)
current_epoch=$(date +%s)
fi
if [[ $? -eq 0 && -n "$expiration_epoch" ]]; then
if [[ $current_epoch -ge $expiration_epoch ]]; then
echo "AWS credentials have expired. Logging out..."
awslogout
fi
fi
fi
}
# easy access to SSH
function awsssh() {
local profile=""

View File

@@ -32,14 +32,14 @@ if [ -f $HOME/.cargo/env ]; then
source $HOME/.cargo/env
fi
# https://github.com/oz/tz
if [ -x "$(command -v tz)" ]; then
export TZ_LIST="Europe/Dublin,Portwest HQ;America/New_York,WDW;America/Los_Angeles,DLR;Europe/Paris,DLP"
fi
# macOS Specific envs
if [[ $(uname) == "Darwin" ]]; then
# Homebrew
export HOMEBREW_NO_ENV_HINTS=1
[ -d /opt/homebrew ] && eval "$(/opt/homebrew/bin/brew shellenv)"
fi
# https://github.com/oz/tz
if [ -x "$(command -v tz)" ]; then
export TZ_LIST="Europe/Dublin,Portwest HQ;America/New_York,WDW;America/Los_Angeles,DLR;Europe/Paris,DLP"
fi