Compare commits

...

5 Commits

Author SHA1 Message Date
6190be3bdd settler.sh, fixes, updates 2022-12-10 22:23:57 +02:00
0db64845bc brew: Coda, Rectangle and speedtest-cli 2022-12-10 21:22:32 +02:00
Ismo Vuorinen
8a8699bf0c antigen updater, macOS defaults setter 2022-12-09 16:23:00 +02:00
Ismo Vuorinen
8814c777f5 alias, exports, functions and new commands 2022-12-09 15:54:40 +02:00
bf4b0c50f4 Brew jetbrains-toolbox, soundsource 2022-12-08 20:58:33 +02:00
16 changed files with 430 additions and 172 deletions

View File

@@ -14,7 +14,6 @@ trim_trailing_whitespace = true
indent_size = 2 indent_size = 2
[*.sh] [*.sh]
indent_style = space
indent_size = 2 indent_size = 2
tab_width = 2 tab_width = 2
@@ -22,6 +21,6 @@ shell_variant = posix # like -ln=posix
binary_next_line = true # like -bn binary_next_line = true # like -bn
switch_case_indent = true # like -ci switch_case_indent = true # like -ci
space_redirects = true # like -sr space_redirects = true # like -sr
keep_padding = false # like -kp keep_padding = false # like -kp
function_next_line = false # like -fn function_next_line = true # like -fn
never_split = true # like -ns never_split = true # like -ns

5
.gitattributes vendored
View File

@@ -205,7 +205,12 @@ Procfile text
# Ignore files (like .npmignore or .gitignore) # Ignore files (like .npmignore or .gitignore)
*.*ignore text *.*ignore text
*.gitignore text
*.gitkeep text *.gitkeep text
.gitattributes export-ignore
**/.gitignore export-ignore
**/.gitkeep export-ignore
# Repo specials # Repo specials
local/bin/* text eol=lf local/bin/* text eol=lf

View File

@@ -11,6 +11,7 @@ tap "homebrew/core"
tap "homebrew/services" tap "homebrew/services"
tap "shivammathur/extensions" tap "shivammathur/extensions"
tap "shivammathur/php" tap "shivammathur/php"
tap "teamookla/speedtest"
# Interpreted, interactive, object-oriented programming language # Interpreted, interactive, object-oriented programming language
brew "python@3.10" brew "python@3.10"
# Automate deployment, configuration, and upgrading # Automate deployment, configuration, and upgrading
@@ -173,8 +174,12 @@ brew "shivammathur/php/php"
brew "shivammathur/php/php@7.4" brew "shivammathur/php/php@7.4"
# General-purpose scripting language # General-purpose scripting language
brew "shivammathur/php/php@8.0" brew "shivammathur/php/php@8.0"
# Ookla Speedtest
brew "teamookla/speedtest/speedtest"
# Command-line helper for the 1Password password manager # Command-line helper for the 1Password password manager
cask "1password-cli" cask "1password-cli"
# Text editor
cask "coda"
# App to build and share containerized applications and microservices # App to build and share containerized applications and microservices
cask "docker" cask "docker"
# Reimagine your terminal # Reimagine your terminal
@@ -189,6 +194,8 @@ cask "fork"
cask "google-cloud-sdk" cask "google-cloud-sdk"
# HTTP and GraphQL Client # HTTP and GraphQL Client
cask "insomnia" cask "insomnia"
# JetBrains tools manager
cask "jetbrains-toolbox"
# Kubernetes IDE # Kubernetes IDE
cask "lens" cask "lens"
# Reverse proxy, secure introspectable tunnels to localhost # Reverse proxy, secure introspectable tunnels to localhost
@@ -203,10 +210,14 @@ cask "qlstephen"
cask "quicklook-json" cask "quicklook-json"
# QuickLook generator for Adobe Swatch Exchange files # QuickLook generator for Adobe Swatch Exchange files
cask "quicklookase" cask "quicklookase"
# Move and resize windows using keyboard shortcuts or snap areas
cask "rectangle"
# MySQL/MariaDB database management # MySQL/MariaDB database management
cask "sequel-ace" cask "sequel-ace"
# Collection of apps available by subscription # Collection of apps available by subscription
cask "setapp" cask "setapp"
# Sound and audio controller
cask "soundsource"
# Application for inspecting installer packages # Application for inspecting installer packages
cask "suspicious-package" cask "suspicious-package"
# Quicklook extension for source files # Quicklook extension for source files
@@ -218,6 +229,7 @@ cask "vlc"
# Rust-based terminal # Rust-based terminal
cask "warp" cask "warp"
mas "1Password for Safari", id: 1569813296 mas "1Password for Safari", id: 1569813296
mas "Flow", id: 1423210932
mas "GarageBand", id: 682658836 mas "GarageBand", id: 682658836
mas "iMovie", id: 408981434 mas "iMovie", id: 408981434
mas "Keynote", id: 409183694 mas "Keynote", id: 409183694

View File

@@ -1,32 +1,69 @@
# shellcheck shell=bash # shellcheck shell=bash
# macOS specific # macOS specific
# Get installed php versions from brew and setup aliases
function x-set-php-aliases
{
local php_versions=()
while IFS="" read -r line; do php_versions+=("$line"); done < <(brew list | grep '^php')
php_error_reporting='-d error_reporting=22527'
for version in "${php_versions[@]}"; do
# drop the dot from version (8.0 -> 80)
local php_abbr="${version//\./}"
# replace "php@" with "p" so "php@80" becomes "p80"
local php_alias="${php_abbr//php@/p}"
# Skip php = php aliasing
# if [[ "$php_abbr" == "$php_alias" ]]; then continue; fi;
# Fetch the exec path once
php_exec="$(brew --prefix "$version")/bin/php"
# Raw PHP without error_reporting flag.
# shellcheck disable=SC2139
alias ${php_alias}r="$php_exec"
# PHP with error_reporting flag.
# shellcheck disable=SC2139
alias $php_alias="$php_exec $php_error_reporting"
# Local PHP Server.
# shellcheck disable=SC2139
alias ${php_alias}s="$php_exec -S localhost:9000"
# Use composer with specific PHP and error_reporting flag on.
# shellcheck disable=SC2139
alias ${php_alias}c="$php_exec $php_error_reporting $(which composer)"
done
}
if [[ $(uname) == 'Darwin' ]]; then if [[ $(uname) == 'Darwin' ]]; then
alias file_hide="chflags hidden"
alias file_show="chflags nohidden"
alias brewUp='brew update && brew outdated && brew upgrade && brew cleanup'
alias php74='$(brew --prefix php@7.4)/bin/php' x-set-php-aliases
alias php80='$(brew --prefix php@8.0)/bin/php -d error_reporting=22527'
alias phpc='$(brew --prefix php)/bin/php -d error_reporting=22527'
alias php80raw='$(brew --prefix php@8.0)/bin/php'
alias php-server='php -S localhost:9000'
alias p74c='$(brew --prefix php@7.4)/bin/php -d error_reporting=22527 $(which composer)'
alias p80c='$(brew --prefix php@8.0)/bin/php -d error_reporting=22527 $(which composer)'
alias p8c='$(brew --prefix php)/bin/php -d error_reporting=22527 $(which composer)'
alias p7a='$(brew --prefix php@7.4)/bin/php artisan'
alias p8a='$(brew --prefix php)/bin/php artisan'
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail' alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
# Flush Directory Service cache
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
# Lock the screen
alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"
# Empty the Trash on all mounted volumes and the main HDD
# Also, clear Apples System Logs to improve shell startup speed
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
fi fi
alias watchx='watch -dpbc' alias watchx='watch -dpbc' # watch with: differences, precise, beep and color
alias zapds='find . -name ".DS_Store" -print -delete' alias zapds='find . -name ".DS_Store" -print -delete'
alias t='tail -f' alias t='tail -f' # tail with follow flag on
alias dn='du -chd1' alias dn='du -chd1' # directory usage, return only the total
alias codescanner='docker run --env SOURCE_CODE="$PWD" --volume "$PWD":/code --volume /var/run/docker.sock:/var/run/docker.sock registry.gitlab.com/gitlab-org/ci-cd/codequality:${VERSION:-latest} /code' alias code_scanner='docker run \
--env SOURCE_CODE="$PWD" \
--volume "$PWD":/code \
--volume /var/run/docker.sock:/var/run/docker.sock \
registry.gitlab.com/gitlab-org/ci-cd/codequality:${CODEQUALITY_VERSION:-latest} \
/code'
alias composerUp='composer global update' alias composerUp='composer global update'
alias npmUp='npm -g up' alias npmUp='npm -g up'

View File

@@ -24,7 +24,7 @@ if [[ $ANTIGEN_CACHE != false ]]; then
for config in $ANTIGEN_CHECK_FILES; do for config in $ANTIGEN_CHECK_FILES; do
if [[ "$config" -nt "$config.zwc" ]]; then if [[ "$config" -nt "$config.zwc" ]]; then
# Flag configuration file as newer # Flag configuration file as newer
{ zcompile "$config" } &! { zcompile "$config"; } &!
# Kill cache file in order to force full loading (see a few lines below) # Kill cache file in order to force full loading (see a few lines below)
[[ -f "$ANTIGEN_CACHE" ]] && rm -f "$ANTIGEN_CACHE" [[ -f "$ANTIGEN_CACHE" ]] && rm -f "$ANTIGEN_CACHE"
fi fi

23
config/exports Normal file
View File

@@ -0,0 +1,23 @@
# shellcheck shell=bash
export HIST_STAMPS="yyyy-mm-dd"
# Larger bash history (allow 32³ entries; default is 500)
export HISTSIZE=32768
export HISTFILESIZE=$HISTSIZE
export HISTCONTROL=ignoredups
# Make some commands not show up in history
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
# And include the parameter for ZSH
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
# Highlight section titles in manual pages
export LESS_TERMCAP_md="$ORANGE"
# Dont clear the screen after quitting a manual page
export MANPAGER="less -X"
# Always enable colored `grep` output
export GREP_OPTIONS="--color=auto"

67
config/functions Normal file
View File

@@ -0,0 +1,67 @@
# shellcheck shell=bash
#
# shell functions
#
# Weather in Tampere, or other city
function weather
{
# https://github.com/chubin/wttr.in#usage
local city="${1:-Tampere}"
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
}
# Docker
function ssh-docker
{
docker exec -it "$@" bash
}
# Create a new directory and enter it
function mkd
{
mkdir -p "$@" && cd "$@" || exit
}
# All the dig info
function digga
{
dig +nocmd "$1" any +multiline +noall +answer
}
# Rector project to php version 8.0 by default.
function rector
{
local php="${1:-80}"
docker run -v "$(pwd)":/project rector/rector:latest process \
"/project/$1" \
--set "php${php}" \
--autoload-file /project/vendor/autoload.php
}
# Commit everything
function commit
{
commitMessage="$*"
if [ "$commitMessage" = "" ]; then
commitMessage="Automated commit"
fi
git add .
eval "git commit -a -m '${commitMessage}'"
}
function scheduler
{
while :; do
php artisan schedule:run
echo "Sleeping 60 seconds..."
sleep 60
done
}
function silent
{
"$@" >&/dev/null
}

View File

@@ -58,3 +58,9 @@
allowedSignersFile = ~/.ssh/allowed_signers allowedSignersFile = ~/.ssh/allowed_signers
[commit] [commit]
gpgsign = true gpgsign = true
[credential "https://github.com"]
helper =
helper = !/opt/homebrew/bin/gh auth git-credential
[credential "https://gist.github.com"]
helper =
helper = !/opt/homebrew/bin/gh auth git-credential

View File

@@ -1,7 +1,7 @@
#!/bin/env bash #!/bin/env bash
export NVM_DIR="$HOME/.nvm" export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
alias php="php -d error_reporting=22527" alias php="php -d error_reporting=22527"

View File

@@ -22,12 +22,14 @@
: ${MKDIR:=/bin/mkdir} : ${MKDIR:=/bin/mkdir}
: ${RM:=/bin/rm} : ${RM:=/bin/rm}
: ${DIRNAME:=/usr/bin/dirname} : ${DIRNAME:=/usr/bin/dirname}
verbose() { verbose()
{
if [ "$VERBOSE" -gt 0 ]; then if [ "$VERBOSE" -gt 0 ]; then
echo "$@" echo "$@"
fi fi
} }
handle_file_cp() { handle_file_cp()
{
if [ -e "$2" ]; then if [ -e "$2" ]; then
printf "%s " "overwrite $2? [yN]" printf "%s " "overwrite $2? [yN]"
read overwrite read overwrite
@@ -45,7 +47,8 @@ handle_file_cp() {
$MKDIR -p "$($DIRNAME "$2")" $MKDIR -p "$($DIRNAME "$2")"
$CP -R "$1" "$2" $CP -R "$1" "$2"
} }
handle_file_ln() { handle_file_ln()
{
if [ -e "$2" ]; then if [ -e "$2" ]; then
printf "%s " "overwrite $2? [yN]" printf "%s " "overwrite $2? [yN]"
read overwrite read overwrite
@@ -63,21 +66,23 @@ handle_file_ln() {
$MKDIR -p "$($DIRNAME "$2")" $MKDIR -p "$($DIRNAME "$2")"
$LN -sf "$1" "$2" $LN -sf "$1" "$2"
} }
handle_file_ln "/Users/ivuorinen/.dotfiles/bash_profile" "/Users/ivuorinen/.bash_profile" handle_file_ln "~/.dotfiles/bash_profile" "~/.bash_profile"
handle_file_ln "/Users/ivuorinen/.dotfiles/bashrc" "/Users/ivuorinen/.bashrc" handle_file_ln "~/.dotfiles/bashrc" "~/.bashrc"
handle_file_ln "/Users/ivuorinen/.dotfiles/config/alias" "/Users/ivuorinen/.config/alias" handle_file_ln "~/.dotfiles/config/alias" "~/.config/alias"
handle_file_ln "/Users/ivuorinen/.dotfiles/config/antigen.zsh" "/Users/ivuorinen/.config/antigen.zsh" handle_file_ln "~/.dotfiles/config/antigen.zsh" "~/.config/antigen.zsh"
handle_file_ln "/Users/ivuorinen/.dotfiles/config/gh/config.yml" "/Users/ivuorinen/.config/gh/config.yml" handle_file_ln "~/.dotfiles/config/exports" "~/.config/exports"
handle_file_ln "/Users/ivuorinen/.dotfiles/config/git/config" "/Users/ivuorinen/.config/git/config" handle_file_ln "~/.dotfiles/config/functions" "~/.config/functions"
handle_file_ln "/Users/ivuorinen/.dotfiles/config/git/gitignore" "/Users/ivuorinen/.config/git/gitignore" handle_file_ln "~/.dotfiles/config/gh/config.yml" "~/.config/gh/config.yml"
handle_file_ln "/Users/ivuorinen/.dotfiles/config/wtf/config.yml" "/Users/ivuorinen/.config/wtf/config.yml" handle_file_ln "~/.dotfiles/config/git/config" "~/.config/git/config"
handle_file_ln "/Users/ivuorinen/.dotfiles/git_profiles" "/Users/ivuorinen/.git_profiles" handle_file_ln "~/.dotfiles/config/git/gitignore" "~/.config/git/gitignore"
handle_file_ln "/Users/ivuorinen/.dotfiles/huskyrc" "/Users/ivuorinen/.huskyrc" handle_file_ln "~/.dotfiles/config/wtf/config.yml" "~/.config/wtf/config.yml"
handle_file_ln "/Users/ivuorinen/.dotfiles/local/bin/dotfiles" "/Users/ivuorinen/.local/bin/dotfiles" handle_file_ln "~/.dotfiles/git_profiles" "~/.git_profiles"
handle_file_ln "/Users/ivuorinen/.dotfiles/local/bin/x-check-git-attributes" "/Users/ivuorinen/.local/bin/x-check-git-attributes" handle_file_ln "~/.dotfiles/huskyrc" "~/.huskyrc"
handle_file_ln "/Users/ivuorinen/.dotfiles/local/bin/x-open-ports" "/Users/ivuorinen/.local/bin/x-open-ports" handle_file_ln "~/.dotfiles/local/bin/dotfiles" "~/.local/bin/dotfiles"
handle_file_ln "/Users/ivuorinen/.dotfiles/rcrc" "/Users/ivuorinen/.rcrc" handle_file_ln "~/.dotfiles/local/bin/x-check-git-attributes" "~/.local/bin/x-check-git-attributes"
handle_file_ln "/Users/ivuorinen/.dotfiles/ssh/allowed_signers" "/Users/ivuorinen/.ssh/allowed_signers" handle_file_ln "~/.dotfiles/local/bin/x-open-ports" "~/.local/bin/x-open-ports"
handle_file_ln "/Users/ivuorinen/.dotfiles/ssh/config" "/Users/ivuorinen/.ssh/config" handle_file_ln "~/.dotfiles/rcrc" "~/.rcrc"
handle_file_ln "/Users/ivuorinen/.dotfiles/vuerc" "/Users/ivuorinen/.vuerc" handle_file_ln "~/.dotfiles/ssh/allowed_signers" "~/.ssh/allowed_signers"
handle_file_ln "/Users/ivuorinen/.dotfiles/zshrc" "/Users/ivuorinen/.zshrc" handle_file_ln "~/.dotfiles/ssh/config" "~/.ssh/config"
handle_file_ln "~/.dotfiles/vuerc" "~/.vuerc"
handle_file_ln "~/.dotfiles/zshrc" "~/.zshrc"

View File

@@ -4,33 +4,46 @@
# (c) Ismo Vuorinen <https://github.com/ivuorinen> 2022 # (c) Ismo Vuorinen <https://github.com/ivuorinen> 2022
# Licensed under MIT, see LICENSE # Licensed under MIT, see LICENSE
# #
# shellcheck source-path=SCRIPTDIR
#
# Helper variables, override with ENVs like `VERBOSE=1 helpers.sh help` # Helper variables, override with ENVs like `VERBOSE=1 helpers.sh help`
: "${VERBOSE:=0}" : "${VERBOSE:=0}"
: "${DOTFILES:=$HOME/.dotfiles}" : "${DOTFILES:=$HOME/.dotfiles}"
: "${INSTALL_SCRIPT:=$DOTFILES/install.sh}" : "${INSTALL_SCRIPT:=$DOTFILES/install.sh}"
: "${BREWFILE:=$DOTFILES/Brewfile}" : "${BREWFILE:=$DOTFILES/Brewfile}"
function usage() { function usage
echo $"Usage: $0 [install | brew | dotfiles | other]" {
echo $"Usage: $0 [install | brew | dotfiles]"
echo $" All commands have their own subcommands." echo $" All commands have their own subcommands."
echo $" When in doubt run the subcommand to show list." echo $" When in doubt run the subcommand to show list."
} }
function section_install() { function section_install
{
USAGE_PREFIX="Usage: $0 install" USAGE_PREFIX="Usage: $0 install"
case "$1" in case "$1" in
antigen)
curl -L git.io/antigen > "$DOTFILES/config/antigen.zsh" && echo "🎉 Done!"
;;
defaults)
bash "$DOTFILES/scripts/set-defaults.sh" && echo "🎉 Done!"
;;
gh-extensions)
bash "$DOTFILES/scripts/gh-extensions.sh" && echo "🎉 Done!"
;;
*) *)
echo "$USAGE_PREFIX [link | update]" echo "$USAGE_PREFIX [antigen | defaults | gh-extensions]"
echo " * link: Use rcrc to update dotfile links" echo " * antigen: Updates the antigen.zsh file"
echo " * update: Updates and upgrades brew packages" echo " * defaults: Setup nice macOS defaults"
echo " * updatebundle: Updates Brewfile with descriptions" echo " * gh-extensions: Install GitHub CLI Extensions"
;; ;;
esac esac
} }
function section_brew() { function section_brew
{
USAGE_PREFIX="Usage: $0 brew" USAGE_PREFIX="Usage: $0 brew"
if ! command -v brew &> /dev/null; then if ! command -v brew &> /dev/null; then
@@ -40,15 +53,16 @@ function section_brew() {
case "$1" in case "$1" in
install) install)
brew bundle install --file="$BREWFILE"; echo "🎉 Done!" brew bundle install --file="$BREWFILE"
echo "🎉 Done!"
;; ;;
update) update)
brew update && brew upgrade; echo "🎉 Done!" brew update && brew outdated && brew upgrade && brew cleanup
echo "🎉 Done!"
;; ;;
updatebundle) updatebundle)
# Updates .dotfiles/Brewfile with descriptions # Updates .dotfiles/Brewfile with descriptions
brew bundle dump --force --file="$BREWFILE" --describe brew bundle dump --force --file="$BREWFILE" --describe && echo "🎉 Done!"
echo "🎉 Done!"
;; ;;
autoupdate) autoupdate)
brew autoupdate start 43200 --upgrade --cleanup --immediate brew autoupdate start 43200 --upgrade --cleanup --immediate
@@ -63,7 +77,8 @@ function section_brew() {
esac esac
} }
function section_dotfiles() { function section_dotfiles
{
USAGE_PREFIX="Usage: $0 dotfiles" USAGE_PREFIX="Usage: $0 dotfiles"
case "$1" in case "$1" in
@@ -72,24 +87,38 @@ function section_dotfiles() {
;; ;;
update) update)
# Updates .dotfiles/install.sh and formats it # Updates .dotfiles/install.sh and formats it
rcup -B 0 -g | \ rcup -B 0 -g \
tee "$INSTALL_SCRIPT" 1> /dev/null && \ | tee "$INSTALL_SCRIPT" 1> /dev/null \
shfmt -w -l "$INSTALL_SCRIPT" && \ && shfmt -w -l "$INSTALL_SCRIPT" \
echo "🎉 Done!" && sed -i '' "s|$HOME|\~|g" "$INSTALL_SCRIPT" \
&& echo "🎉 Done!"
;;
shfmt)
# Format shell scripts according to following rules.
shfmt \
--list \
--write \
--diff \
--simplify \
--language-dialect bash \
--indent 2 \
--binary-next-line \
--case-indent \
--space-redirects \
--func-next-line \
"$DOTFILES" \
"$DOTFILES/local/bin/dotfiles" \
"$DOTFILES/local/bin/x-check-git-attributes" \
"$DOTFILES/local/bin/x-open-ports" \
"$DOTFILES/config/alias" \
"$DOTFILES/config/exports" \
"$DOTFILES/config/functions"
;; ;;
*) *)
echo "$USAGE_PREFIX [link | update]" echo "$USAGE_PREFIX [link | update | shfmt]"
echo " * link: Use rcrc to update dotfile links" echo " * link: Use rcrc to update dotfile links"
echo " * update: Updates dotfile links, installs host specific overrides automatically" echo " * update: Updates dotfile links, installs host specific overrides automatically"
;; echo " * shfmt: Run shfmt to all dotfiles"
esac
}
function section_other() {
case "$1" in
*)
echo "section_other"
echo "$1"
;; ;;
esac esac
} }
@@ -99,6 +128,5 @@ case "$1" in
install) section_install "$2" ;; install) section_install "$2" ;;
brew) section_brew "$2" ;; brew) section_brew "$2" ;;
dotfiles) section_dotfiles "$2" ;; dotfiles) section_dotfiles "$2" ;;
other) section_other "$2" ;; *) usage && exit 1 ;;
*) usage; exit 1 ;;
esac esac

View File

@@ -6,15 +6,14 @@
# Originally from: https://www.commandlinefu.com/commands/view/8951 # Originally from: https://www.commandlinefu.com/commands/view/8951
# Original author: https://www.commandlinefu.com/commands/by/wickedcpj # Original author: https://www.commandlinefu.com/commands/by/wickedcpj
# #
echo 'User: Command: Port:'; echo 'User: Command: Port:'
echo '====================================================='; echo '====================================================='
lsof -i 4 -P -n +c 0 | \ lsof -i 4 -P -n +c 0 \
grep -i 'listen' | \ | grep -i 'listen' \
awk '{print $3, $1, $9}' | \ | awk '{print $3, $1, $9}' \
sed 's/ [a-z0-9\.\*]*:/ /' | \ | sed 's/ [a-z0-9\.\*]*:/ /' \
sort -k 3 -n | \ | sort -k 3 -n \
xargs printf '%-20s %-25s %-5s\n' | uniq | xargs printf '%-20s %-25s %-5s\n' | uniq
echo "";
echo ""

View File

@@ -1,29 +1,39 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Install GitHub CLI extensions # Install GitHub CLI extensions
# GitHub CLI extension for reviewing Dependabot PRs. extensions=(
gh extension install einride/gh-dependabot # GitHub CLI extension for reviewing Dependabot PRs.
# A GitHub CLI extension that provides summary pull request metrics. einride/gh-dependabot
gh extension install hectcastro/gh-metrics # A GitHub CLI extension that provides summary pull request metrics.
# being an extension to view the overall health of an organization's use of actions hectcastro/gh-metrics
gh extension install rsese/gh-actions-status # being an extension to view the overall health of an organization's use of actions
# GitHub CLI extension for label management rsese/gh-actions-status
gh extension install heaths/gh-label # GitHub CLI extension for label management
# An opinionated GitHub Cli extension for creating heaths/gh-label
# changelogs that adhere to the keep a changelog specification. # An opinionated GitHub Cli extension for creating
gh extension install chelnak/gh-changelog # changelogs that adhere to the keep a changelog specification.
# Safely deletes local branches with no upstream and no un-pushed commits chelnak/gh-changelog
gh extension install davidraviv/gh-clean-branches # Safely deletes local branches with no upstream and no un-pushed commits
# A beautiful CLI dashboard for GitHub 🚀 davidraviv/gh-clean-branches
gh extension install dlvhdr/gh-dash # A beautiful CLI dashboard for GitHub 🚀
# A github-cli extension script to clone all repositories dlvhdr/gh-dash
# in an organization, optionally filtering by topic. # A github-cli extension script to clone all repositories
gh extension install matt-bartel/gh-clone-org # in an organization, optionally filtering by topic.
# GitHub CLI extension to generate montage from GitHub user avatars matt-bartel/gh-clone-org
gh extension install andyfeller/gh-montage # GitHub CLI extension to generate montage from GitHub user avatars
# Organisation specific extension for gh cli to retrieve different statistics andyfeller/gh-montage
gh extension install VildMedPap/gh-orgstats # Organisation specific extension for gh cli to retrieve different statistics
# GitHub CLI extension for generating a report on repository dependencies. VildMedPap/gh-orgstats
gh extension install andyfeller/gh-dependency-report # GitHub CLI extension for generating a report on repository dependencies.
# gh cli extension to generate account/organization/enterprise reports andyfeller/gh-dependency-report
gh extension install stoe/gh-report # gh cli extension to generate account/organization/enterprise reports
stoe/gh-report
)
for ext in "${extensions[@]}"; do
# Skip comments
if [[ ${ext:0:1} == "#" ]]; then continue; fi
echo "-> Installing $ext"
gh extensions install "$ext"
done

View File

@@ -4,8 +4,13 @@ echo 'start osx/set-defaults.sh'
# Ask for the administrator password upfront # Ask for the administrator password upfront
sudo -v sudo -v
# Keep-alive: update existing `sudo` time stamp until `.osx` has finished # Keep-alive: update existing `sudo` time stamp
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & # until this script has finished
while true; do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2> /dev/null &
############################################################################### ###############################################################################
# General UI/UX # # General UI/UX #
@@ -165,9 +170,9 @@ defaults write com.apple.finder WarnOnEmptyTrash -bool false
# Expand the following File Info panes: # Expand the following File Info panes:
# “General”, “Open with”, and “Sharing & Permissions” # “General”, “Open with”, and “Sharing & Permissions”
defaults write com.apple.finder FXInfoPanesExpanded -dict \ defaults write com.apple.finder FXInfoPanesExpanded -dict \
General -bool true \ General -bool true \
OpenWith -bool true \ OpenWith -bool true \
Privileges -bool true Privileges -bool true
############################################################################### ###############################################################################
# Screenshots # # Screenshots #
@@ -273,8 +278,8 @@ defaults write com.apple.messageshelper.MessageController SOInputLineSettings -d
############################################################################### ###############################################################################
for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \ for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \
"Dock" "Finder" "Mail" "Messages" "Safari" "SizeUp" "SystemUIServer" \ "Dock" "Finder" "Mail" "Messages" "Safari" "SizeUp" "SystemUIServer" \
"Terminal" "Transmission" "Twitter" "iCal"; do "Terminal" "Transmission" "Twitter" "iCal"; do
killall "${app}" > /dev/null 2>&1 killall "${app}" > /dev/null 2>&1
done done
echo "Done. Note that some of these changes require a logout/restart to take effect." echo "Done. Note that some of these changes require a logout/restart to take effect."

59
scripts/settler.sh Executable file
View File

@@ -0,0 +1,59 @@
#!/usr/bin/env bash
#
# Settler - my macOS setup automator
# Ask for the administrator password upfront
sudo -v
# Keep-alive: update existing `sudo` time stamp until `settler` has finished
while true; do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2> /dev/null &
# https://unix.stackexchange.com/a/408305
# check if user has git installed and propose to install if not installed
if [ "$(which git)" ]; then
echo "You already have git. Continuing..."
else
XCODE_MESSAGE="$(
osascript -e \
'tell app "System Events" to display dialog "Please click install when Command Line Developer Tools appears"'
)"
if [ "$XCODE_MESSAGE" = "button returned:OK" ]; then
xcode-select --install
else
echo "You have cancelled the installation, please rerun the installer."
exit
fi
fi
until [ "$(which git)" ]; do
echo -n "."
sleep 1
done
# Install brew
if [ "$(which brew)" ]; then
echo 'Brew already installed'
else
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
bash ../local/bin/dotfiles brew install && "Installed Brewfile contents"
bash ../local/bin/dotfiles dotfiles link && "Linked all dotfiles"
read -r -p "Do you want to set macOS defaults? (y/N) " yn
case $yn in
[yY])
bash "set-defaults.sh"
;;
*)
echo "Skipping..."
;;
esac
echo "Done. Note that some of these changes require a logout/restart to take effect."

31
zshrc
View File

@@ -2,21 +2,12 @@
[[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.pre.zsh" [[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.pre.zsh"
# shellcheck shell=bash # shellcheck shell=bash
LOCAL_BIN="$HOME/.local/bin" export PATH="/opt/homebrew/bin:/usr/local/sbin:$PATH"
PYTHON_38="$HOME/Library/Python/3.8/bin"
COMPOSER_DIR="$HOME/.composer/vendor/bin"
USR_SBIN=/usr/local/sbin
export PATH="/opt/homebrew/bin:$USR_SBIN:$PATH"
if [ command -v brew &> /dev/null ]; then if [ command -v brew &> /dev/null ]; then
BREW_BIN=$(brew --prefix)/bin BREW_BIN=$(brew --prefix)/bin
BREW_SBIN=$(brew --prefix)/sbin BREW_SBIN=$(brew --prefix)/sbin
# PHP_74=$(brew --prefix php@7.4)/bin
# PHP_80=$(brew --prefix php@8.0)/bin
# PHP_CUR=$(brew --prefix php)/bin
BREW_PYTHON=$(brew --prefix python@3.8)/bin BREW_PYTHON=$(brew --prefix python@3.8)/bin
GNUBIN_DIR=$(brew --prefix coreutils)/libexec/gnubin GNUBIN_DIR=$(brew --prefix coreutils)/libexec/gnubin
BREW_RUBY=$(brew --prefix ruby)/bin BREW_RUBY=$(brew --prefix ruby)/bin
@@ -25,8 +16,9 @@ if [ command -v brew &> /dev/null ]; then
export PATH="$BREW_PYTHON:$GNUBIN_DIR:$BREW_GEMS:$BREW_RUBY:$BREW_BIN:$BREW_SBIN:$PATH" export PATH="$BREW_PYTHON:$GNUBIN_DIR:$BREW_GEMS:$BREW_RUBY:$BREW_BIN:$BREW_SBIN:$PATH"
fi fi
export PATH="$LOCAL_BIN:$PYTHON_38:$COMPOSER_DIR:$PATH" LOCAL_BIN="$HOME/.local/bin"
export HIST_STAMPS="yyyy-mm-dd" COMPOSER_DIR="$HOME/.composer/vendor/bin"
export PATH="$LOCAL_BIN:$COMPOSER_DIR:$PATH"
export NVM_DIR="$HOME/.nvm" export NVM_DIR="$HOME/.nvm"
export NVM_LAZY_LOAD=true export NVM_LAZY_LOAD=true
@@ -35,8 +27,19 @@ export NVM_AUTO_USE=true
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
[[ -f "$HOME/.dotfiles/alias" ]] && source "$HOME/.dotfiles/alias" # Run x-load-configs in your terminal to reload the files.
[[ -f "$HOME/.dotfiles/alias-$HOSTNAME" ]] && source "$HOME/.dotfiles/alias-$HOSTNAME" function x-load-configs()
{
# Load the shell dotfiles, and then some:
for file in ~/.dotfiles/config/{exports,alias,functions}; do
[ -r "$file" ] && [ -f "$file" ] && source "$file"
[ -r "$file-$HOSTNAME" ] && [ -f "$file-$HOSTNAME" ] && source "$file-$HOSTNAME"
done
}
x-load-configs
# Import ssh keys in keychain
ssh-add -A 2>/dev/null;
# Try to load antigen, if present # Try to load antigen, if present
[[ -f "$HOME/.config/antigen.zsh" ]] && source "$HOME/.config/antigen.zsh" [[ -f "$HOME/.config/antigen.zsh" ]] && source "$HOME/.config/antigen.zsh"