Update
* .gitconfig * .chezmoi.yaml.tmpl * .tmux.conf * .vim * .ssh * .p10k.zsh
This commit is contained in:
parent
908a23c7b5
commit
4ec771a1c7
34 changed files with 2281 additions and 5243 deletions
96
.chezmoi.yaml.tmpl
Normal file
96
.chezmoi.yaml.tmpl
Normal file
|
@ -0,0 +1,96 @@
|
|||
{{- $headless := false -}}{{/* true if this machine does not have a screen and keyboard */}}
|
||||
{{- $ephemeral := false -}}{{/* true if this machine is ephemeral, e.g. a cloud or VM instance */}}
|
||||
{{- $work := false -}}{{/* true if this machine should have work secrets */}}
|
||||
{{- $personal := false -}}{{/* true if this machine should have personal secrets */}}
|
||||
{{- "" -}}
|
||||
|
||||
{{ if eq .chezmoi.os "linux" }}
|
||||
{{/* detect GitHub codespaces, VSCode remote containers, Docker containers, Multipass VMs, and Vagrant boxes */}}
|
||||
{{- if or (env "CODESPACES") (env "REMOTE_CONTAINERS_IPC") (eq .chezmoi.username "ubuntu" "vagrant" "vscode") (output "cat" "/proc/1/cgroup" | contains "docker") -}}
|
||||
{{- $headless = true -}}
|
||||
{{- $ephemeral = true -}}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
|
||||
{{- $install_more_packages := "false" -}}
|
||||
{{- if (hasKey .packages "install_more_packages") -}}
|
||||
{{- $install_more_packages = .packages.install_more_packages -}}
|
||||
{{- else -}}
|
||||
{{- $install_more_packages = promptBool "Install more packages" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $config_python_format_tools := "false" -}}
|
||||
{{- if (hasKey .packages "config_python_format_tools") -}}
|
||||
{{- $config_python_format_tools = .packages.config_python_format_tools -}}
|
||||
{{- else -}}
|
||||
{{- $config_python_format_tools = promptBool "Config python formatting tools" -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{/* work around unreliable hostname on darwin */}}
|
||||
{{- $hostname := .chezmoi.hostname -}}
|
||||
{{- if eq .chezmoi.os "darwin" -}}
|
||||
{{- $computerName := output "scutil" "--get" "ComputerName" | trim -}}
|
||||
{{- if eq $computerName "greybook" -}}
|
||||
{{- $hostname = "greybook" -}}
|
||||
{{- else -}}
|
||||
{{- $hostname = $computerName -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $ephemeral -}}
|
||||
{{- if eq $hostname "blofeld.nc.w9r.de" -}}
|
||||
{{- $headless = true -}}
|
||||
{{- $work = true -}}
|
||||
{{- else if eq $hostname "greybook" -}}
|
||||
{{- $personal = true -}}
|
||||
{{- $work = true -}}
|
||||
{{- else if eq $hostname "goldfinger.do.w9r.de" -}}
|
||||
{{- $headless = true -}}
|
||||
{{- $work = true -}}
|
||||
{{- else if stdinIsATTY -}}
|
||||
{{- if hasKey . "headless" -}}
|
||||
{{- $headless = .headless -}}
|
||||
{{- else -}}
|
||||
{{- $headless = promptBool "headless" -}}
|
||||
{{- end -}}
|
||||
{{- if hasKey . "ephemeral" -}}
|
||||
{{- $ephemeral = .ephemeral -}}
|
||||
{{- else -}}
|
||||
{{- $ephemeral = promptBool "ephemeral" -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- $headless = true -}}
|
||||
{{- $ephemeral = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
data:
|
||||
headless: {{ $headless }}
|
||||
hostname: {{ $hostname }}
|
||||
ephemeral: {{ $ephemeral }}
|
||||
personal: {{ $personal }}
|
||||
work: {{ $work }}
|
||||
op_server: my.1password.com
|
||||
op_account: oliver@weyhmueller.de
|
||||
packages:
|
||||
config_python_format_tools: {{ $config_python_format_tools }}
|
||||
install_more_packages: {{ $install_more_packages }}
|
||||
{{- if $personal }}
|
||||
personal_vault: apbf24n32olg6xpk7mwoaevghq
|
||||
{{- end }}
|
||||
{{- if $work }}
|
||||
work_vault: cihqioiemrmjckioptz6l3mu3q
|
||||
{{- end }}
|
||||
color: true
|
||||
encryption: age
|
||||
format: yaml
|
||||
verbose: true
|
||||
age:
|
||||
identity: ~/.age/key.txt
|
||||
recipient: age1uzqxem4cweevwncmvyyq2lr7wgjfc70xzyevca0t0rtfcdw5xytsrr38f6
|
||||
git:
|
||||
autoAdd: true
|
||||
autoCommit: false
|
||||
autoPush: false
|
4
.chezmoiexternal.yaml
Normal file
4
.chezmoiexternal.yaml
Normal file
|
@ -0,0 +1,4 @@
|
|||
".vim/autoload/plug.vim":
|
||||
type: file
|
||||
url: "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
|
||||
refreshPeriod: 168h
|
2
.chezmoiignore
Normal file
2
.chezmoiignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
.idea
|
||||
chezmoi.iml
|
1
.chezmoiremove
Normal file
1
.chezmoiremove
Normal file
|
@ -0,0 +1 @@
|
|||
.git-credentials
|
45
.chezmoiscripts/run_before_10_install_op_linux.sh.tmpl
Normal file
45
.chezmoiscripts/run_before_10_install_op_linux.sh.tmpl
Normal file
|
@ -0,0 +1,45 @@
|
|||
{{- if (eq .chezmoi.os "linux") -}}
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
VERSION="1.12.4"
|
||||
|
||||
if command -v op >/dev/null 2>&1; then
|
||||
if [ "$(op --version)" = "$VERSION" ]; then
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
tmpdir="$(mktemp -d)"
|
||||
cd "$tmpdir"
|
||||
|
||||
if uname | grep -q Linux; then
|
||||
case "$(uname -m)" in
|
||||
*arm*) fname="op_linux_arm_v${VERSION}.zip" ;;
|
||||
*) fname="op_linux_amd64_v${VERSION}.zip" ;;
|
||||
esac
|
||||
|
||||
curl --fail --silent --show-error --location \
|
||||
"https://cache.agilebits.com/dist/1P/op/pkg/v${VERSION}/${fname}" \
|
||||
-o "$fname"
|
||||
|
||||
unzip "$fname"
|
||||
|
||||
gpg \
|
||||
--keyserver hkp://keyserver.ubuntu.com \
|
||||
--recv-keys 3FEF9748469ADBE15DA7CA80AC2D62742012EA22
|
||||
gpg --verify op.sig op
|
||||
|
||||
sudo mv op /usr/local/bin
|
||||
fi
|
||||
|
||||
op --version
|
||||
if op signin -l | grep -q '1. my'; then
|
||||
# account already registered
|
||||
eval $(op signin)
|
||||
else
|
||||
eval $(op signin {{ .op_server }} {{ .op_account }})
|
||||
fi
|
||||
|
||||
{{ end -}}
|
|
@ -0,0 +1,83 @@
|
|||
{{- if (eq .chezmoi.os "linux") -}}
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eufo pipefail
|
||||
|
||||
packages=(
|
||||
curl
|
||||
git
|
||||
gnupg
|
||||
zsh
|
||||
)
|
||||
pip_packages=()
|
||||
|
||||
{{ if .packages.config_python_format_tools }}
|
||||
packages+=(python3-pip)
|
||||
pip_packages+=(
|
||||
black
|
||||
flake8
|
||||
isort
|
||||
)
|
||||
{{ end }}
|
||||
|
||||
{{ if .packages.install_more_packages }}
|
||||
packages+=(
|
||||
axel
|
||||
bat
|
||||
exa
|
||||
htop
|
||||
httpie
|
||||
iproute2
|
||||
neofetch
|
||||
neovim
|
||||
ripgrep
|
||||
tig
|
||||
tmux
|
||||
trash-cli
|
||||
vim
|
||||
wget
|
||||
xclip
|
||||
yt-dlp
|
||||
zoxide
|
||||
)
|
||||
|
||||
pip_packages+=(
|
||||
thefuck
|
||||
tldr
|
||||
pynvim
|
||||
)
|
||||
{{ end }}
|
||||
|
||||
get_package_manager() {
|
||||
if grep -Eqi "debian|raspbian" /proc/version; then
|
||||
PKG="apt"
|
||||
INSTALL_PARAM='install -y'
|
||||
elif grep -Eqi "archlinux" /proc/version; then
|
||||
PKG="pacman"
|
||||
INSTALL_PARAM="-Sy --noconfirm"
|
||||
fi
|
||||
}
|
||||
|
||||
get_current_user() {
|
||||
if [ `whoami` == "root" ]; then
|
||||
USER="root"
|
||||
else
|
||||
USER=`whoami`
|
||||
fi
|
||||
}
|
||||
|
||||
get_package_manager
|
||||
get_current_user
|
||||
[ $USER == "root" ] && {
|
||||
$PKG $INSTALL_PARAM ${packages[@]}
|
||||
} || {
|
||||
sudo $PKG $INSTALL_PARAM ${packages[@]}
|
||||
}
|
||||
|
||||
{{ if lookPath "pip3" }}
|
||||
if (( ${#pip_packages[@]} > 0 )); then
|
||||
pip3 install ${pip_packages[@]}
|
||||
fi
|
||||
{{ end }}
|
||||
|
||||
{{ end -}}
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
.idea
|
||||
chezmoi.iml
|
8
bin/executable_externalip
Normal file
8
bin/executable_externalip
Normal file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
echo -n 'IPv4: '
|
||||
curl -4 https://ip.w9r.de/getip.php
|
||||
echo
|
||||
echo -n 'IPv6: '
|
||||
curl -6 https://ip.w9r.de/getip.php
|
||||
echo
|
64
bin/executable_git-churn
Normal file
64
bin/executable_git-churn
Normal file
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/ruby
|
||||
#
|
||||
# Credits: Corey Haines, Gary Bernhardt, Dan Croak
|
||||
#
|
||||
# Put this on your $PATH (~/bin is recommended).
|
||||
#
|
||||
# Show churn for the files changed in the branch:
|
||||
#
|
||||
# $ git-churn
|
||||
#
|
||||
|
||||
class GitChurn
|
||||
attr_accessor :all_files_with_churn_count, :changed_files, :result
|
||||
|
||||
def calculate
|
||||
get_all_files_with_churn_count
|
||||
get_changed_files
|
||||
filter_into_result
|
||||
print_result
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def get_all_files_with_churn_count
|
||||
self.all_files_with_churn_count =
|
||||
`git log --all #{format_logs} | #{remove_blank_lines} | #{sort_by_ascending_churn_count}`.split("\n")
|
||||
end
|
||||
|
||||
def format_logs
|
||||
"--name-only --format='format:'"
|
||||
end
|
||||
|
||||
def remove_blank_lines
|
||||
"grep -v '^$'"
|
||||
end
|
||||
|
||||
def sort_by_ascending_churn_count
|
||||
'sort | uniq -c | sort'
|
||||
end
|
||||
|
||||
def get_changed_files
|
||||
self.changed_files =
|
||||
`git log origin/master..HEAD #{format_logs} | #{remove_blank_lines} | #{remove_duplicates}`.split("\n")
|
||||
end
|
||||
|
||||
def remove_duplicates
|
||||
'sort | uniq'
|
||||
end
|
||||
|
||||
def filter_into_result
|
||||
self.result = all_files_with_churn_count.select { |file| file_changed?(file) }.join("\n")
|
||||
end
|
||||
|
||||
def file_changed?(file)
|
||||
changed_files.any? { |changed_file| file.include?(changed_file) }
|
||||
end
|
||||
|
||||
def print_result
|
||||
puts result
|
||||
end
|
||||
end
|
||||
|
||||
git_churn = GitChurn.new
|
||||
git_churn.calculate
|
18
bin/executable_git-promote
Normal file
18
bin/executable_git-promote
Normal file
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Promotes a local topic branch to a remote tracking branch of the same name,
|
||||
# by pushing and then setting up the git config
|
||||
#
|
||||
# Thanks to ENTP:
|
||||
# http://hoth.entp.com/2008/11/10/improving-my-git-workflow
|
||||
|
||||
curr_branch=$(git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||')
|
||||
|
||||
remote_branch=$(git branch -r | grep "origin/${curr_branch}")
|
||||
[ -z "${remote_branch}" ] && ( git push origin "${curr_branch}" )
|
||||
|
||||
origin=$(git config --get "branch.${curr_branch}.remote")
|
||||
[ -z "${origin}" ] && ( git config --add "branch.${curr_branch}.remote" origin )
|
||||
|
||||
merge=$(git config --get "branch.${curr_branch}.merge")
|
||||
[ -z "${merge}" ] && ( git config --add "branch.${curr_branch}.merge" "refs/heads/${curr_branch}" )
|
60
bin/executable_git-rank-contributers
Normal file
60
bin/executable_git-rank-contributers
Normal file
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
## git-rank-contributors: a simple script to trace through the logs and
|
||||
## rank contributors by the total size of the diffs they're responsible for.
|
||||
## A change counts twice as much as a plain addition or deletion.
|
||||
##
|
||||
## Output may or may not be suitable for inclusion in a CREDITS file.
|
||||
## Probably not without some editing, because people often commit from more
|
||||
## than one address.
|
||||
##
|
||||
## git-rank-contributors Copyright 2008 William Morgan <wmorgan-git-wt-add@masanjin.net>.
|
||||
## This program is free software: you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, either version 3 of the License, or (at
|
||||
## your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You can find the GNU General Public License at:
|
||||
## http://www.gnu.org/licenses/
|
||||
|
||||
class String
|
||||
def obfuscate; gsub(/@/, " at the ").gsub(/\.(\w+)(>|$)/, ' dot \1s\2') end
|
||||
def htmlize; gsub("&", "&").gsub("<", "<").gsub(">", ">") end
|
||||
end
|
||||
|
||||
lines = {}
|
||||
verbose = ARGV.delete("-v")
|
||||
obfuscate = ARGV.delete("-o")
|
||||
htmlize = ARGV.delete("-h")
|
||||
|
||||
author = nil
|
||||
state = :pre_author
|
||||
`git log -M -C -C -p --no-color`.split("\n").each do |l|
|
||||
case
|
||||
when (state == :pre_author || state == :post_author) && l =~ /Author: (.*)$/
|
||||
author = $1
|
||||
state = :post_author
|
||||
lines[author] ||= 0
|
||||
when state == :post_author && l =~ /^\+\+\+/
|
||||
state = :in_diff
|
||||
when state == :in_diff && l =~ /^[\+\-]/
|
||||
lines[author] += 1
|
||||
when state == :in_diff && l =~ /^commit /
|
||||
state = :pre_author
|
||||
end
|
||||
end
|
||||
|
||||
lines.sort_by { |a, c| -c }.each do |a, c|
|
||||
a = a.obfuscate if obfuscate
|
||||
a = a.htmlize if htmlize
|
||||
if verbose
|
||||
puts "#{a}: #{c} lines of diff"
|
||||
else
|
||||
puts a
|
||||
end
|
||||
end
|
36
bin/executable_git-up
Normal file
36
bin/executable_git-up
Normal file
|
@ -0,0 +1,36 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Usage: git-up
|
||||
# git-reup
|
||||
#
|
||||
# Like git-pull but show a short and sexy log of changes
|
||||
# immediately after merging (git-up) or rebasing (git-reup).
|
||||
#
|
||||
# Inspired by Kyle Neath's `git up' alias:
|
||||
# http://gist.github.com/249223
|
||||
#
|
||||
# Stolen from Ryan Tomayko
|
||||
# http://github.com/rtomayko/dotfiles/blob/rtomayko/bin/git-up
|
||||
|
||||
set -e
|
||||
|
||||
PULL_ARGS="$@"
|
||||
|
||||
# when invoked as git-reup, run as `git pull --rebase'
|
||||
test "$(basename $0)" = "git-reup" &&
|
||||
PULL_ARGS="--rebase $PULL_ARGS"
|
||||
|
||||
git pull $PULL_ARGS
|
||||
|
||||
# show diffstat of all changes if we're pulling with --rebase. not
|
||||
# sure why git-pull only does this when merging.
|
||||
test "$(basename $0)" = "git-reup" && {
|
||||
echo "Diff:"
|
||||
git --no-pager diff --color --stat HEAD@{1}.. |
|
||||
sed 's/^/ /'
|
||||
}
|
||||
|
||||
# show an abbreviated commit log of stuff that was just merged.
|
||||
echo "Log:"
|
||||
git log --color --pretty=oneline --abbrev-commit HEAD@{1}.. |
|
||||
sed 's/^/ /'
|
364
bin/executable_git-wtf
Normal file
364
bin/executable_git-wtf
Normal file
|
@ -0,0 +1,364 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
HELP = <<EOS
|
||||
git-wtf displays the state of your repository in a readable, easy-to-scan
|
||||
format. It's useful for getting a summary of how a branch relates to a remote
|
||||
server, and for wrangling many topic branches.
|
||||
|
||||
git-wtf can show you:
|
||||
- How a branch relates to the remote repo, if it's a tracking branch.
|
||||
- How a branch relates to integration branches, if it's a feature branch.
|
||||
- How a branch relates to the feature branches, if it's an integration
|
||||
branch.
|
||||
|
||||
git-wtf is best used before a git push, or between a git fetch and a git
|
||||
merge. Be sure to set color.ui to auto or yes for maximum viewing pleasure.
|
||||
EOS
|
||||
|
||||
KEY = <<EOS
|
||||
KEY:
|
||||
() branch only exists locally
|
||||
{} branch only exists on a remote repo
|
||||
[] branch exists locally and remotely
|
||||
|
||||
x merge occurs both locally and remotely
|
||||
~ merge occurs only locally
|
||||
(space) branch isn't merged in
|
||||
|
||||
(It's possible for merges to occur remotely and not locally, of course, but
|
||||
that's a less common case and git-wtf currently doesn't display anything
|
||||
special for it.)
|
||||
EOS
|
||||
|
||||
USAGE = <<EOS
|
||||
Usage: git wtf [branch+] [options]
|
||||
|
||||
If [branch] is not specified, git-wtf will use the current branch. The possible
|
||||
[options] are:
|
||||
|
||||
-l, --long include author info and date for each commit
|
||||
-a, --all show all branches across all remote repos, not just
|
||||
those from origin
|
||||
-A, --all-commits show all commits, not just the first 5
|
||||
-s, --short don't show commits
|
||||
-k, --key show key
|
||||
-r, --relations show relation to features / integration branches
|
||||
--dump-config print out current configuration and exit
|
||||
|
||||
git-wtf uses some heuristics to determine which branches are integration
|
||||
branches, and which are feature branches. (Specifically, it assumes the
|
||||
integration branches are named "master", "next" and "edge".) If it guesses
|
||||
incorrectly, you will have to create a .git-wtfrc file.
|
||||
|
||||
To start building a configuration file, run "git-wtf --dump-config >
|
||||
.git-wtfrc" and edit it. The config file is a YAML file that specifies the
|
||||
integration branches, any branches to ignore, and the max number of commits to
|
||||
display when --all-commits isn't used. git-wtf will look for a .git-wtfrc file
|
||||
starting in the current directory, and recursively up to the root.
|
||||
|
||||
IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed
|
||||
with heads/, e.g. "heads/master". Remote branches must be of the form
|
||||
remotes/<remote>/<branch>.
|
||||
EOS
|
||||
|
||||
COPYRIGHT = <<EOS
|
||||
git-wtf Copyright 2008--2009 William Morgan <wmorgan at the masanjin dot nets>.
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation, either version 3 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You can find the GNU General Public License at: http://www.gnu.org/licenses/
|
||||
EOS
|
||||
|
||||
require 'yaml'
|
||||
CONFIG_FN = ".git-wtfrc"
|
||||
|
||||
class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end
|
||||
|
||||
if ARGV.delete("--help") || ARGV.delete("-h")
|
||||
puts USAGE
|
||||
exit
|
||||
end
|
||||
|
||||
## poor man's trollop
|
||||
$long = ARGV.delete("--long") || ARGV.delete("-l")
|
||||
$short = ARGV.delete("--short") || ARGV.delete("-s")
|
||||
$all = ARGV.delete("--all") || ARGV.delete("-a")
|
||||
$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A")
|
||||
$dump_config = ARGV.delete("--dump-config")
|
||||
$key = ARGV.delete("--key") || ARGV.delete("-k")
|
||||
$show_relations = ARGV.delete("--relations") || ARGV.delete("-r")
|
||||
ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ }
|
||||
|
||||
## search up the path for a file
|
||||
def find_file fn
|
||||
while true
|
||||
return fn if File.exist? fn
|
||||
fn2 = File.join("..", fn)
|
||||
return nil if File.expand_path(fn2) == File.expand_path(fn)
|
||||
fn = fn2
|
||||
end
|
||||
end
|
||||
|
||||
want_color = `git config color.wtf`
|
||||
want_color = `git config color.ui` if want_color.empty?
|
||||
$color = case want_color.chomp
|
||||
when "true"; true
|
||||
when "auto"; $stdout.tty?
|
||||
end
|
||||
|
||||
def red s; $color ? "\033[31m#{s}\033[0m" : s end
|
||||
def green s; $color ? "\033[32m#{s}\033[0m" : s end
|
||||
def yellow s; $color ? "\033[33m#{s}\033[0m" : s end
|
||||
def cyan s; $color ? "\033[36m#{s}\033[0m" : s end
|
||||
def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end
|
||||
def purple s; $color ? "\033[35m#{s}\033[0m" : s end
|
||||
|
||||
## the set of commits in 'to' that aren't in 'from'.
|
||||
## if empty, 'to' has been merged into 'from'.
|
||||
def commits_between from, to
|
||||
if $long
|
||||
`git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}`
|
||||
else
|
||||
`git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}`
|
||||
end.split(/[\r\n]+/)
|
||||
end
|
||||
|
||||
def show_commits commits, prefix=" "
|
||||
if commits.empty?
|
||||
puts "#{prefix} none"
|
||||
else
|
||||
max = $all_commits ? commits.size : $config["max_commits"]
|
||||
max -= 1 if max == commits.size - 1 # never show "and 1 more"
|
||||
commits[0 ... max].each { |c| puts "#{prefix}#{c}" }
|
||||
puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max
|
||||
end
|
||||
end
|
||||
|
||||
def ahead_behind_string ahead, behind
|
||||
[ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead",
|
||||
behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"].
|
||||
compact.join("; ")
|
||||
end
|
||||
|
||||
def widget merged_in, remote_only=false, local_only=false, local_only_merge=false
|
||||
left, right = case
|
||||
when remote_only; %w({ })
|
||||
when local_only; %w{( )}
|
||||
else %w([ ])
|
||||
end
|
||||
middle = case
|
||||
when merged_in && local_only_merge; green("~")
|
||||
when merged_in; green("x")
|
||||
else " "
|
||||
end
|
||||
print left, middle, right
|
||||
end
|
||||
|
||||
def show b
|
||||
have_both = b[:local_branch] && b[:remote_branch]
|
||||
|
||||
pushc, pullc, oosync = if have_both
|
||||
[x = commits_between(b[:remote_branch], b[:local_branch]),
|
||||
y = commits_between(b[:local_branch], b[:remote_branch]),
|
||||
!x.empty? && !y.empty?]
|
||||
end
|
||||
|
||||
if b[:local_branch]
|
||||
puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, ""))
|
||||
|
||||
if have_both
|
||||
if pushc.empty?
|
||||
puts "#{widget true} in sync with remote"
|
||||
else
|
||||
action = oosync ? "push after rebase / merge" : "push"
|
||||
puts "#{widget false} NOT in sync with remote (you should #{action})"
|
||||
show_commits pushc unless $short
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if b[:remote_branch]
|
||||
puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})"
|
||||
|
||||
if have_both
|
||||
if pullc.empty?
|
||||
puts "#{widget true} in sync with local"
|
||||
else
|
||||
action = pushc.empty? ? "merge" : "rebase / merge"
|
||||
puts "#{widget false} NOT in sync with local (you should #{action})"
|
||||
show_commits pullc unless $short
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync
|
||||
end
|
||||
|
||||
def show_relations b, all_branches
|
||||
ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) || $config["integration-branches"].include?(br[:remote_branch]) }
|
||||
if $config["integration-branches"].include? b[:local_branch]
|
||||
puts "\nFeature branches:" unless fbs.empty?
|
||||
fbs.each do |name, br|
|
||||
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
|
||||
next if br[:ignore]
|
||||
local_only = br[:remote_branch].nil?
|
||||
remote_only = br[:local_branch].nil?
|
||||
name = if local_only
|
||||
purple br[:name]
|
||||
elsif remote_only
|
||||
cyan br[:name]
|
||||
else
|
||||
green br[:name]
|
||||
end
|
||||
|
||||
## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll
|
||||
## use the local branch head.
|
||||
head = remote_only ? br[:remote_branch] : br[:local_branch]
|
||||
|
||||
remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : []
|
||||
local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : []
|
||||
|
||||
if local_ahead.empty? && remote_ahead.empty?
|
||||
puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in"
|
||||
elsif local_ahead.empty?
|
||||
puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)"
|
||||
else
|
||||
behind = commits_between head, (br[:local_branch] || br[:remote_branch])
|
||||
ahead = remote_only ? remote_ahead : local_ahead
|
||||
puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})"
|
||||
show_commits ahead unless $short
|
||||
end
|
||||
end
|
||||
else
|
||||
puts "\nIntegration branches:" unless ibs.empty? # unlikely
|
||||
ibs.sort_by { |v, br| v }.each do |v, br|
|
||||
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
|
||||
next if br[:ignore]
|
||||
local_only = br[:remote_branch].nil?
|
||||
remote_only = br[:local_branch].nil?
|
||||
name = remote_only ? cyan(br[:name]) : green(br[:name])
|
||||
|
||||
ahead = commits_between v, (b[:local_branch] || b[:remote_branch])
|
||||
if ahead.empty?
|
||||
puts "#{widget true, local_only} merged into #{name}"
|
||||
else
|
||||
#behind = commits_between b[:local_branch], v
|
||||
puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)"
|
||||
show_commits ahead unless $short
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#### EXECUTION STARTS HERE ####
|
||||
|
||||
## find config file and load it
|
||||
$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin
|
||||
fn = find_file CONFIG_FN
|
||||
if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false
|
||||
h["integration-branches"] ||= h["versions"] # support old nomenclature
|
||||
h
|
||||
else
|
||||
{}
|
||||
end
|
||||
end
|
||||
|
||||
if $dump_config
|
||||
puts $config.to_yaml
|
||||
exit
|
||||
end
|
||||
|
||||
## first, index registered remotes
|
||||
remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l|
|
||||
l =~ /^remote\.(.+?)\.url (.+)$/ or next hash
|
||||
hash[$1] ||= $2
|
||||
hash
|
||||
end
|
||||
|
||||
## next, index followed branches
|
||||
branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l|
|
||||
case l
|
||||
when /branch\.(.*?)\.remote (.+)/
|
||||
name, remote = $1, $2
|
||||
|
||||
hash[name] ||= {}
|
||||
hash[name].merge! :remote => remote, :remote_url => remotes[remote]
|
||||
when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/
|
||||
name, remote_branch = $1, $4
|
||||
hash[name] ||= {}
|
||||
hash[name].merge! :remote_mergepoint => remote_branch
|
||||
end
|
||||
hash
|
||||
end
|
||||
|
||||
## finally, index all branches
|
||||
remote_branches = {}
|
||||
`git show-ref`.split(/[\r\n]+/).each do |l|
|
||||
sha1, ref = l.chomp.split " refs/"
|
||||
|
||||
if ref =~ /^heads\/(.+)$/ # local branch
|
||||
name = $1
|
||||
next if name == "HEAD"
|
||||
branches[name] ||= {}
|
||||
branches[name].merge! :name => name, :local_branch => ref
|
||||
elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch
|
||||
remote, name = $1, $2
|
||||
remote_branches["#{remote}/#{name}"] = true
|
||||
next if name == "HEAD"
|
||||
ignore = !($all || remote == "origin")
|
||||
|
||||
branch = name
|
||||
if branches[name] && branches[name][:remote] == remote
|
||||
# nothing
|
||||
else
|
||||
name = "#{remote}/#{branch}"
|
||||
end
|
||||
|
||||
branches[name] ||= {}
|
||||
branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore
|
||||
end
|
||||
end
|
||||
|
||||
## assemble remotes
|
||||
branches.each do |k, b|
|
||||
next unless b[:remote] && b[:remote_mergepoint]
|
||||
b[:remote_branch] = if b[:remote] == "."
|
||||
b[:remote_mergepoint]
|
||||
else
|
||||
t = "#{b[:remote]}/#{b[:remote_mergepoint]}"
|
||||
remote_branches[t] && t # only if it's still alive
|
||||
end
|
||||
end
|
||||
|
||||
show_dirty = ARGV.empty?
|
||||
targets = if ARGV.empty?
|
||||
[`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")]
|
||||
else
|
||||
ARGV.map { |x| x.sub(/^heads\//, "") }
|
||||
end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." }
|
||||
|
||||
targets.each do |t|
|
||||
show t
|
||||
show_relations t, branches if $show_relations || t[:remote_branch].nil?
|
||||
end
|
||||
|
||||
modified = show_dirty && `git ls-files -m` != ""
|
||||
uncommitted = show_dirty && `git diff-index --cached HEAD` != ""
|
||||
|
||||
if $key
|
||||
puts
|
||||
puts KEY
|
||||
end
|
||||
|
||||
puts if modified || uncommitted
|
||||
puts "#{red "NOTE"}: working directory contains modified files." if modified
|
||||
puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted
|
||||
|
||||
# the end!
|
9
bin/executable_gpg-change-card
Normal file
9
bin/executable_gpg-change-card
Normal file
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/env bash
|
||||
keyid=YOUR_KEY_ID_GOES_HERE
|
||||
gpgconf --kill gpg-agent
|
||||
cd "$(gpgconf --list-dirs homedir)/private-keys-v1.d"
|
||||
gpg -K --with-keygrip --with-colons "$keyid" | \
|
||||
awk -F: '/^grp/ { print $10".key"; }' | \
|
||||
xargs rm -vf
|
||||
|
||||
gpg-connect-agent "scd serialno" "learn --force" /bye
|
8
bin/executable_headers
Normal file
8
bin/executable_headers
Normal file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# https://github.com/rtomayko/dotfiles/blob/rtomayko/bin/headers
|
||||
|
||||
curl -sv "$@" 2>&1 >/dev/null |
|
||||
grep -v "^\*" |
|
||||
grep -v "^}" |
|
||||
cut -c3-
|
440
bin/executable_osx
Normal file
440
bin/executable_osx
Normal file
|
@ -0,0 +1,440 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Mac OS X configuration
|
||||
#
|
||||
# This configuration applies to the latest version of Mac OS X (currently
|
||||
# 10.10.1), and sets up preferences and configurations for all the built-in
|
||||
# services and apps. Third-party app config should be done elsewhere.
|
||||
#
|
||||
# Options:
|
||||
# --no-restart: Don't restart any apps or services after running the script.
|
||||
#
|
||||
# @see: http://secrets.blacktree.com/?showapp=com.apple.finder
|
||||
#
|
||||
# @author Jeff Geerling, 2014
|
||||
|
||||
# Warn that some commands will not be run if the script is not run as root.
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
RUN_AS_ROOT=false
|
||||
printf "Certain commands will not be run without sudo privileges. To run as root, run the same command prepended with 'sudo', for example: $ sudo $0\n\n" | fold -s -w 80
|
||||
else
|
||||
RUN_AS_ROOT=true
|
||||
# Update existing `sudo` timestamp until `.osx` has finished
|
||||
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# General UI/UX #
|
||||
###############################################################################
|
||||
|
||||
# Set standby delay to 24 hours (default is 1 hour)
|
||||
# You can check current values with `pmset -g`.
|
||||
#if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
# sudo pmset -a standbydelay 86400
|
||||
#fi
|
||||
|
||||
## Disable system sleep (helpful if you're usually plugged into mains power).
|
||||
#if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
# sudo pmset -a sleep 0
|
||||
#fi
|
||||
|
||||
# Expand save panel by default
|
||||
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
|
||||
|
||||
# Expand print panel by default
|
||||
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
|
||||
|
||||
# Save to disk (not to iCloud) by default
|
||||
#defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
|
||||
|
||||
# Automatically quit printer app once the print jobs complete
|
||||
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
|
||||
|
||||
# Reveal IP address, hostname, OS version, etc. when clicking the clock
|
||||
# in the login window
|
||||
if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
|
||||
fi
|
||||
|
||||
# Restart automatically if the computer freezes
|
||||
if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
systemsetup -setrestartfreeze on
|
||||
fi
|
||||
|
||||
# Disable Notification Center
|
||||
# launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist 2> /dev/null
|
||||
# To re-enable, run:
|
||||
# launchctl load -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist && open /System/Library/CoreServices/NotificationCenter.app/
|
||||
|
||||
# Disable game center. Who uses that thing?
|
||||
launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist 2> /dev/null
|
||||
|
||||
# Disable smart quotes as they’re annoying when typing code
|
||||
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
|
||||
|
||||
# Disable smart dashes as they’re annoying when typing code
|
||||
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
|
||||
|
||||
# Set background to dark-grey color
|
||||
#sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png'"
|
||||
|
||||
###############################################################################
|
||||
# SSD-specific tweaks #
|
||||
###############################################################################
|
||||
|
||||
if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
# Disable local Time Machine snapshots
|
||||
# sudo tmutil disablelocal
|
||||
|
||||
# Disable hibernation (speeds up entering sleep mode)
|
||||
sudo pmset -a hibernatemode 0
|
||||
|
||||
# Remove the sleep image file to save disk space
|
||||
#sudo rm /Private/var/vm/sleepimage
|
||||
# Create a zero-byte file instead...
|
||||
#sudo touch /Private/var/vm/sleepimage
|
||||
# ...and make sure it can’t be rewritten
|
||||
#sudo chflags uchg /Private/var/vm/sleepimage
|
||||
|
||||
# Disable the sudden motion sensor as it’s not useful for SSDs
|
||||
sudo pmset -a sms 0
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
|
||||
###############################################################################
|
||||
|
||||
# Trackpad: map bottom right corner to right-click
|
||||
#defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2
|
||||
#defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true
|
||||
#defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1
|
||||
#defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true
|
||||
|
||||
# Increase sound quality for Bluetooth headphones/headsets
|
||||
# defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40
|
||||
|
||||
# Enable full keyboard access for all controls
|
||||
# (e.g. enable Tab in modal dialogs - 0 = text boxes and lists, 2/3 = all controls)
|
||||
defaults write NSGlobalDomain AppleKeyboardUIMode -int 0
|
||||
|
||||
# Use scroll gesture with the Ctrl (^) modifier key to zoom
|
||||
#defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true
|
||||
#defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144
|
||||
# Follow the keyboard focus while zoomed in
|
||||
#defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true
|
||||
|
||||
# Disable press-and-hold for keys in favor of key repeat
|
||||
defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
|
||||
|
||||
# Set a blazingly fast keyboard repeat rate, and make it happen more quickly.
|
||||
defaults write NSGlobalDomain InitialKeyRepeat -int 20
|
||||
defaults write NSGlobalDomain KeyRepeat -int 1
|
||||
|
||||
# Disable auto-correct
|
||||
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
|
||||
|
||||
###############################################################################
|
||||
# Screen #
|
||||
###############################################################################
|
||||
|
||||
# Require password immediately after sleep or screen saver begins
|
||||
defaults write com.apple.screensaver askForPassword -int 1
|
||||
defaults write com.apple.screensaver askForPasswordDelay -int 0
|
||||
|
||||
# Save screenshots to the desktop
|
||||
#defaults write com.apple.screencapture location -string "${HOME}/Desktop"
|
||||
|
||||
# Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF)
|
||||
defaults write com.apple.screencapture type -string "png"
|
||||
|
||||
# Disable shadow in screenshots
|
||||
defaults write com.apple.screencapture disable-shadow -bool true
|
||||
|
||||
# Enable subpixel font rendering on non-Apple LCDs
|
||||
defaults write NSGlobalDomain AppleFontSmoothing -int 2
|
||||
|
||||
# Enable HiDPI display modes (requires restart)
|
||||
# if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
# sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool true
|
||||
# fi
|
||||
|
||||
###############################################################################
|
||||
# Finder #
|
||||
###############################################################################
|
||||
|
||||
# Set Desktop as the default location for new Finder windows
|
||||
# For other paths, use `PfLo` and `file:///full/path/here/`
|
||||
defaults write com.apple.finder NewWindowTarget -string "PfDe"
|
||||
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/"
|
||||
|
||||
# Show icons for hard drives, servers, and removable media on the desktop
|
||||
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
|
||||
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true
|
||||
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true
|
||||
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
|
||||
|
||||
# Finder: show hidden files by default
|
||||
defaults write com.apple.finder AppleShowAllFiles -bool true
|
||||
|
||||
# Finder: show all filename extensions
|
||||
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
|
||||
|
||||
# Finder: show status bar
|
||||
defaults write com.apple.finder ShowStatusBar -bool true
|
||||
|
||||
# Finder: show path bar
|
||||
# defaults write com.apple.finder ShowPathbar -bool true
|
||||
|
||||
# Finder: allow text selection in Quick Look
|
||||
defaults write com.apple.finder QLEnableTextSelection -bool true
|
||||
|
||||
# Display full POSIX path as Finder window title
|
||||
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
|
||||
|
||||
# When performing a search, search the current folder by default
|
||||
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
|
||||
|
||||
# Disable the warning when changing a file extension
|
||||
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
|
||||
|
||||
# Enable spring loading for directories
|
||||
defaults write NSGlobalDomain com.apple.springing.enabled -bool true
|
||||
|
||||
# Remove the spring loading delay for directories
|
||||
defaults write NSGlobalDomain com.apple.springing.delay -float 0.1
|
||||
|
||||
# Avoid creating .DS_Store files on network volumes
|
||||
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
|
||||
|
||||
# Automatically open a new Finder window when a volume is mounted
|
||||
defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true
|
||||
defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true
|
||||
defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true
|
||||
|
||||
# Enable snap-to-grid for icons on the desktop and in other icon views
|
||||
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
|
||||
/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
|
||||
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
|
||||
|
||||
# Set the size of icons on the desktop and in other icon views
|
||||
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:iconSize 64" ~/Library/Preferences/com.apple.finder.plist
|
||||
/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:iconSize 64" ~/Library/Preferences/com.apple.finder.plist
|
||||
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:iconSize 64" ~/Library/Preferences/com.apple.finder.plist
|
||||
|
||||
# Use column view in all Finder windows by default
|
||||
# Four-letter codes for the other view modes: `icnv`, `Nlsv`, `clmv`, `Flwv`
|
||||
defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
|
||||
|
||||
# Disable the warning before emptying the Trash
|
||||
defaults write com.apple.finder WarnOnEmptyTrash -bool false
|
||||
|
||||
# Empty Trash securely by default
|
||||
# defaults write com.apple.finder EmptyTrashSecurely -bool true
|
||||
|
||||
# Show the ~/Library folder
|
||||
chflags nohidden ~/Library
|
||||
|
||||
# Remove Dropbox’s green checkmark icons in Finder
|
||||
# file=/Applications/Dropbox.app/Contents/Resources/emblem-dropbox-uptodate.icns
|
||||
# [ -e "${file}" ] && mv -f "${file}" "${file}.bak"
|
||||
|
||||
# Expand the following File Info panes:
|
||||
# “General”, “Open with”, and “Sharing & Permissions”
|
||||
defaults write com.apple.finder FXInfoPanesExpanded -dict \
|
||||
General -bool true \
|
||||
OpenWith -bool true \
|
||||
Preview -bool false \
|
||||
Privileges -bool true
|
||||
|
||||
###############################################################################
|
||||
# Dock, Dashboard, and hot corners #
|
||||
###############################################################################
|
||||
|
||||
# Set the icon size of Dock items
|
||||
defaults write com.apple.dock tilesize -int 30
|
||||
|
||||
# Enable spring loading for all Dock items
|
||||
# defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true
|
||||
|
||||
# Don’t animate opening applications from the Dock
|
||||
# defaults write com.apple.dock launchanim -bool false
|
||||
|
||||
# Speed up Mission Control animations
|
||||
defaults write com.apple.dock expose-animation-duration -float 0.15
|
||||
|
||||
# Don’t group windows by application in Mission Control
|
||||
# (i.e. switch to old Exposé behavior)
|
||||
# defaults write com.apple.dock expose-group-by-app -bool false
|
||||
|
||||
# Remove the auto-hiding Dock delay
|
||||
defaults write com.apple.dock autohide-delay -float 0
|
||||
# Remove the animation when hiding/showing the Dock
|
||||
# defaults write com.apple.dock autohide-time-modifier -float 0
|
||||
|
||||
# Automatically hide and show the Dock
|
||||
defaults write com.apple.dock autohide -bool true
|
||||
|
||||
# Make Dock icons of hidden applications translucent
|
||||
defaults write com.apple.dock showhidden -bool true
|
||||
|
||||
# Enable the 'reduce transparency' option on Yosemite. Save GPU cycles.
|
||||
defaults write com.apple.universalaccess reduceTransparency -bool true
|
||||
|
||||
# Add iOS Simulator to Applications folder.
|
||||
if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
sudo ln -sf /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app /Applications/Simulator.app
|
||||
fi
|
||||
|
||||
# Hot corners
|
||||
# Possible values:
|
||||
# 0: no-op
|
||||
# 2: Mission Control
|
||||
# 3: Show application windows
|
||||
# 4: Desktop
|
||||
# 5: Start screen saver
|
||||
# 6: Disable screen saver
|
||||
# 7: Dashboard
|
||||
# 10: Put display to sleep
|
||||
# 11: Launchpad
|
||||
# 12: Notification Center
|
||||
# Bottom right screen corner → Mission Control
|
||||
#defaults write com.apple.dock wvous-br-corner -int 2
|
||||
#defaults write com.apple.dock wvous-br-modifier -int 0
|
||||
# Top right screen corner → Put display to sleep
|
||||
#defaults write com.apple.dock wvous-tr-corner -int 10
|
||||
#defaults write com.apple.dock wvous-tr-modifier -int 0
|
||||
# Bottom left screen corner → Desktop
|
||||
#defaults write com.apple.dock wvous-bl-corner -int 4
|
||||
#defaults write com.apple.dock wvous-bl-modifier -int 0
|
||||
|
||||
###############################################################################
|
||||
# Safari & WebKit #
|
||||
###############################################################################
|
||||
|
||||
# Set Safari’s home page to `about:blank` for faster loading
|
||||
defaults write com.apple.Safari HomePage -string "about:blank"
|
||||
|
||||
# Prevent Safari from opening ‘safe’ files automatically after downloading
|
||||
defaults write com.apple.Safari AutoOpenSafeDownloads -bool false
|
||||
|
||||
# Disable Safari’s thumbnail cache for History and Top Sites
|
||||
defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
|
||||
|
||||
# Enable Safari’s debug menu
|
||||
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
|
||||
|
||||
# Enable the Develop menu and the Web Inspector in Safari
|
||||
defaults write com.apple.Safari IncludeDevelopMenu -bool true
|
||||
defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true
|
||||
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true
|
||||
|
||||
# Add a context menu item for showing the Web Inspector in web views
|
||||
defaults write NSGlobalDomain WebKitDeveloperExtras -bool true
|
||||
|
||||
###############################################################################
|
||||
# Mail #
|
||||
###############################################################################
|
||||
|
||||
# Disable send and reply animations in Mail.app
|
||||
defaults write com.apple.mail DisableReplyAnimations -bool true
|
||||
defaults write com.apple.mail DisableSendAnimations -bool true
|
||||
|
||||
# Copy email addresses as `foo@example.com` instead of `Foo Bar <foo@example.com>` in Mail.app
|
||||
defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false
|
||||
|
||||
# Add the keyboard shortcut ⌘ + Enter to send an email in Mail.app
|
||||
# defaults write com.apple.mail NSUserKeyEquivalents -dict-add "Send" -string "@\\U21a9"
|
||||
|
||||
# Display emails in threaded mode
|
||||
defaults write com.apple.mail DraftsViewerAttributes -dict-add "DisplayInThreadedMode" -string "yes"
|
||||
# defaults write com.apple.mail DraftsViewerAttributes -dict-add "SortedDescending" -string "yes"
|
||||
# defaults write com.apple.mail DraftsViewerAttributes -dict-add "SortOrder" -string "received-date"
|
||||
|
||||
# Disable inline attachments (just show the icons)
|
||||
defaults write com.apple.mail DisableInlineAttachmentViewing -bool true
|
||||
|
||||
# Disable spell checking
|
||||
defaults write com.apple.mail SpellCheckingBehavior -string "NoSpellCheckingEnabled"
|
||||
|
||||
###############################################################################
|
||||
# Spotlight #
|
||||
###############################################################################
|
||||
|
||||
if [[ "$RUN_AS_ROOT" = true ]]; then
|
||||
# Disable Spotlight indexing for any volume that gets mounted and has not yet
|
||||
# been indexed before.
|
||||
# Use `sudo mdutil -i off "/Volumes/foo"` to stop indexing any volume.
|
||||
sudo defaults write /.Spotlight-V100/VolumeConfiguration Exclusions -array "/Volumes"
|
||||
|
||||
# Restart spotlight
|
||||
killall mds > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# Terminal #
|
||||
###############################################################################
|
||||
|
||||
# Only use UTF-8 in Terminal.app
|
||||
defaults write com.apple.terminal StringEncodings -array 4
|
||||
|
||||
# For Terminal theme, see: https://github.com/geerlingguy/mac-dev-playbook
|
||||
|
||||
###############################################################################
|
||||
# Activity Monitor #
|
||||
###############################################################################
|
||||
|
||||
# Show the main window when launching Activity Monitor
|
||||
defaults write com.apple.ActivityMonitor OpenMainWindow -bool true
|
||||
|
||||
# Visualize CPU usage in the Activity Monitor Dock icon
|
||||
defaults write com.apple.ActivityMonitor IconType -int 5
|
||||
|
||||
# Show all processes in Activity Monitor
|
||||
defaults write com.apple.ActivityMonitor ShowCategory -int 0
|
||||
|
||||
###############################################################################
|
||||
# TextEdit #
|
||||
###############################################################################
|
||||
|
||||
# Use plain text mode for new TextEdit documents
|
||||
defaults write com.apple.TextEdit RichText -int 0
|
||||
|
||||
# Open and save files as UTF-8 in TextEdit
|
||||
defaults write com.apple.TextEdit PlainTextEncoding -int 4
|
||||
defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
|
||||
|
||||
###############################################################################
|
||||
# Messages #
|
||||
###############################################################################
|
||||
|
||||
# Disable automatic emoji substitution (i.e. use plain text smileys)
|
||||
# defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticEmojiSubstitutionEnablediMessage" -bool false
|
||||
|
||||
# Disable smart quotes as it’s annoying for messages that contain code
|
||||
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticQuoteSubstitutionEnabled" -bool false
|
||||
|
||||
# Disable continuous spell checking
|
||||
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "continuousSpellCheckingEnabled" -bool false
|
||||
|
||||
###############################################################################
|
||||
# Google Chrome #
|
||||
###############################################################################
|
||||
|
||||
# Enable sensitive and senseless swipe-based navigation
|
||||
defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool true
|
||||
|
||||
# Use the system print dialog
|
||||
defaults write com.google.Chrome DisablePrintPreview -bool true
|
||||
|
||||
###############################################################################
|
||||
# Kill/restart affected applications #
|
||||
###############################################################################
|
||||
|
||||
# Restart affected applications if `--no-restart` flag is not present.
|
||||
if [[ ! ($* == *--no-restart*) ]]; then
|
||||
for app in "cfprefsd" "Dock" "Finder" "Mail" "SystemUIServer" "Terminal"; do
|
||||
killall "${app}" > /dev/null 2>&1
|
||||
done
|
||||
fi
|
||||
|
||||
printf "Please log out and log back in to make all settings take effect.\n"
|
89
bin/executable_spark
Normal file
89
bin/executable_spark
Normal file
|
@ -0,0 +1,89 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# spark
|
||||
# https://github.com/holman/spark
|
||||
#
|
||||
# Generates sparklines for a set of data.
|
||||
#
|
||||
# Here's a a good web-based sparkline generator that was a bit of inspiration
|
||||
# for spark:
|
||||
#
|
||||
# https://datacollective.org/sparkblocks
|
||||
#
|
||||
# spark takes a comma-separated list of data and then prints a sparkline out of
|
||||
# it.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# spark 1 5 22 13 53
|
||||
# # => ▁▁▃▂▇
|
||||
#
|
||||
# spark 0 30 55 80 33 150
|
||||
# # => ▁▂▃▅▂▇
|
||||
#
|
||||
# spark -h
|
||||
# # => Prints the spark help text.
|
||||
|
||||
# Generates sparklines.
|
||||
#
|
||||
# $1 - The data we'd like to graph.
|
||||
spark()
|
||||
{
|
||||
local n numbers=
|
||||
|
||||
# find min/max values
|
||||
local min=0xffffffff max=0
|
||||
|
||||
for n in ${@//,/ }
|
||||
do
|
||||
# on Linux (or with bash4) we could use `printf %.0f $n` here to
|
||||
# round the number but that doesn't work on OS X (bash3) nor does
|
||||
# `awk '{printf "%.0f",$1}' <<< $n` work, so just cut it off
|
||||
n=${n%.*}
|
||||
(( n < min )) && min=$n
|
||||
(( n > max )) && max=$n
|
||||
numbers=$numbers${numbers:+ }$n
|
||||
done
|
||||
|
||||
# print ticks
|
||||
local ticks=(▁ ▂ ▃ ▄ ▅ ▆ ▇ █)
|
||||
|
||||
local f=$(( (($max-$min)<<8)/(${#ticks[@]}-1) ))
|
||||
(( f < 1 )) && f=1
|
||||
|
||||
for n in $numbers
|
||||
do
|
||||
echo -n ${ticks[$(( ((($n-$min)<<8)/$f) ))]}
|
||||
done
|
||||
echo
|
||||
}
|
||||
|
||||
# If we're being sourced, don't worry about such things
|
||||
if [ "$BASH_SOURCE" == "$0" ]; then
|
||||
# Prints the help text for spark.
|
||||
help()
|
||||
{
|
||||
cat <<EOF
|
||||
|
||||
USAGE:
|
||||
spark [-h] VALUE,...
|
||||
|
||||
EXAMPLES:
|
||||
spark 1 5 22 13 53
|
||||
▁▁▃▂█
|
||||
spark 0,30,55,80,33,150
|
||||
▁▂▃▄▂█
|
||||
echo 9 13 5 17 1 | spark
|
||||
▄▆▂█▁
|
||||
EOF
|
||||
}
|
||||
|
||||
# show help for no arguments if stdin is a terminal
|
||||
if { [ -z "$1" ] && [ -t 0 ] ; } || [ "$1" == '-h' ]
|
||||
then
|
||||
help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
spark ${@:-`cat`}
|
||||
fi
|
311
bin/executable_st
Normal file
311
bin/executable_st
Normal file
|
@ -0,0 +1,311 @@
|
|||
#!perl -T
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use bignum;
|
||||
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
|
||||
my %opt;
|
||||
GetOptions(
|
||||
\%opt,
|
||||
|
||||
# functions
|
||||
'N|n|count',
|
||||
'max',
|
||||
'mean|avg|m',
|
||||
'median',
|
||||
'min',
|
||||
'mode',
|
||||
'percentile=i',
|
||||
'quartile=i',
|
||||
'sd|stdev',
|
||||
'sum|s',
|
||||
'variance|var',
|
||||
|
||||
# predefined sets
|
||||
'summary|five',
|
||||
'complete|all',
|
||||
'default|basic',
|
||||
|
||||
# output control
|
||||
'delimiter|d=s',
|
||||
'format|fmt|f=s',
|
||||
'no-header|nh',
|
||||
'transverse-output|to',
|
||||
'quiet|q',
|
||||
|
||||
'help|h',
|
||||
) or pod2usage(1);
|
||||
|
||||
|
||||
my %predefined = (
|
||||
complete => [ qw/N min q1 median q3 max sum mean sd var percentile quartile mode/ ],
|
||||
summary => [ qw/min q1 median q3 max/ ],
|
||||
default => [ qw/N min max sum mean sd/ ],
|
||||
);
|
||||
|
||||
pod2usage(1) if $opt{help};
|
||||
|
||||
my ($min,$max);
|
||||
my ($n, $sum, $sum_square, $mean) = (0, 0, 0, 0);
|
||||
my (%count, $most_common);
|
||||
|
||||
# some functions require the full dataset
|
||||
my @data;
|
||||
my $keep_data = (
|
||||
defined $opt{median}
|
||||
|| defined $opt{percentile}
|
||||
|| defined $opt{quartile}
|
||||
|| defined $opt{summary}
|
||||
|| defined $opt{complete}
|
||||
);
|
||||
|
||||
# some functions require frequencies
|
||||
my $keep_frequencies = (
|
||||
defined $opt{mode}
|
||||
);
|
||||
|
||||
my $M2 = 0;
|
||||
|
||||
# read data
|
||||
while (my $num = <>) {
|
||||
chomp $num;
|
||||
|
||||
if ($num !~ m{^
|
||||
[+-]?
|
||||
(?: \. ? [0-9]+
|
||||
| [0-9]+ \. [0-9]*
|
||||
| \. ? [0-9]+ E [+-]? [0-9]+
|
||||
| [0-9]* \. [0-9]+ E [+-]? [0-9]+
|
||||
)
|
||||
$}x) {
|
||||
warn "Invalid number '$num'\n" unless $opt{quiet};
|
||||
next;
|
||||
}
|
||||
|
||||
$n++;
|
||||
|
||||
my $delta = $num - $mean;
|
||||
|
||||
$mean += $delta / $n;
|
||||
$M2 += $delta * ($num - $mean);
|
||||
|
||||
if ($keep_data) {
|
||||
push @data, $num;
|
||||
}
|
||||
|
||||
if ($keep_frequencies) {
|
||||
$count{$num}++;
|
||||
$most_common = $count{$num} if (!defined $most_common or $count{$num} > $most_common);
|
||||
}
|
||||
|
||||
$min = $num if (!defined $min or $num < $min);
|
||||
$max = $num if (!defined $max or $num > $max);
|
||||
|
||||
$sum += $num;
|
||||
}
|
||||
|
||||
# silently exit if $n == 0
|
||||
exit if (!$n);
|
||||
|
||||
my ( %summary, $percentile, $quartile, $median );
|
||||
if ( $opt{summary} or $opt{complete} ) {
|
||||
my ($q1, $q2, $q3) = percentiles(\@data, 25, 50, 75);
|
||||
%summary = (
|
||||
min => $min,
|
||||
q1 => $q1,
|
||||
median => $q2,
|
||||
q3 => $q3,
|
||||
max => $max,
|
||||
);
|
||||
} elsif (defined $opt{percentile}) {
|
||||
($percentile) = percentiles( \@data, $opt{percentile} );
|
||||
} elsif (defined $opt{quartile}) {
|
||||
die "Invalid quartile\n" if $opt{quartile} < 0 or $opt{quartile} > 4;
|
||||
($quartile) = percentiles( \@data, $opt{quartile} * 25 );
|
||||
} elsif (defined $opt{median}) {
|
||||
($median) = percentiles( \@data, 50 );
|
||||
}
|
||||
|
||||
my $variance = $n > 1 ? $M2 / ($n - 1) : undef;
|
||||
my $sd = defined $variance ? sqrt($variance) : undef;
|
||||
|
||||
my @mode = grep { $count{$_} == $most_common } keys %count;
|
||||
|
||||
my $mode = scalar @mode == 1 ? $mode[0] : undef; # don't deal with multimodes
|
||||
|
||||
my %st = (
|
||||
N => $n,
|
||||
max => $max,
|
||||
mean => $mean,
|
||||
median => $median,
|
||||
min => $min,
|
||||
mode => $mode,
|
||||
percentile => $percentile,
|
||||
quartile => $quartile,
|
||||
sd => $sd,
|
||||
sum => $sum,
|
||||
variance => $variance,
|
||||
%summary,
|
||||
);
|
||||
|
||||
my $delimiter = delete $opt{'delimiter'} || "\t";
|
||||
my $format = delete $opt{'format'} || '%.2f';
|
||||
my $no_header = delete $opt{'no-header'};
|
||||
my $transverse = delete $opt{'transverse-output'};
|
||||
my $quiet = delete $opt{'quiet'};
|
||||
|
||||
if ($delimiter =~ /^\\[a-z]$/) {
|
||||
$delimiter = $delimiter eq '\t' ? "\t"
|
||||
: $delimiter eq '\n' ? "\n"
|
||||
: die "Invalid delimiter: '$delimiter'\n";
|
||||
}
|
||||
|
||||
if ($format =~ m{( \%[0-9]*\.?[0-9]* [deEfgGi] )}x) {
|
||||
$format = $1;
|
||||
} else {
|
||||
die "Invalid format: '$format'\n";
|
||||
}
|
||||
|
||||
my @opt = !%opt || $opt{default} ? @{ $predefined{default} }
|
||||
: $opt{complete} ? @{ $predefined{complete} }
|
||||
: $opt{summary} ? @{ $predefined{summary} }
|
||||
: grep { defined $opt{$_} } @{ $predefined{complete} };
|
||||
|
||||
@opt = grep { defined $st{$_} } @opt;
|
||||
|
||||
if (scalar @opt == 1) {
|
||||
print "$st{$opt[0]}\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($transverse) {
|
||||
for my $opt (@opt) {
|
||||
print "$opt$delimiter" unless $no_header;
|
||||
print sprintf( $format, $st{$opt} ), "\n";
|
||||
}
|
||||
} else {
|
||||
print join($delimiter, @opt), "\n" unless $no_header;
|
||||
print join($delimiter, map { sprintf ($format, $st{$_}) } @opt), "\n";
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
###
|
||||
|
||||
sub percentiles {
|
||||
my ($data, @p) = @_;
|
||||
|
||||
my @data = sort { $a <=> $b } @{$data};
|
||||
|
||||
my @percentiles = ();
|
||||
for my $p (@p) {
|
||||
|
||||
if ($p < 0 or $p > 100) {
|
||||
die "Invalid percentile ($p)\n";
|
||||
}
|
||||
|
||||
my $index = $p * $#data / 100;
|
||||
|
||||
my $percentile = $index == int($index) ? $data[$index]
|
||||
: ($data[$index] + $data[$index+1]) / 2;
|
||||
|
||||
push @percentiles, $percentile;
|
||||
}
|
||||
|
||||
return @percentiles;
|
||||
}
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
st - statistics from the command line interface (CLI)
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
"st" is a command-line tool to calculate statistics from a file or
|
||||
standard input.
|
||||
|
||||
=head1 USAGE
|
||||
|
||||
st <input_file>
|
||||
|
||||
st [options] <input_file>
|
||||
|
||||
=head2 OPTIONS
|
||||
|
||||
If no options are used, C<st> will print:
|
||||
|
||||
n min max sum mean sd
|
||||
|
||||
The following options are available:
|
||||
|
||||
=head2 OUTPUT
|
||||
|
||||
--N|n|count
|
||||
--max
|
||||
--mean|avg|m
|
||||
--median
|
||||
--min
|
||||
--mode
|
||||
--sd|stdev
|
||||
--sum|s
|
||||
--variance|var
|
||||
|
||||
--percentile=<0..100>
|
||||
--quartile=<1..3>
|
||||
|
||||
--summary # five-number summary: min q1 median q3 max
|
||||
--complete # everything
|
||||
|
||||
=head2 FORMAT
|
||||
|
||||
--delimiter|d=<value> # default: "\t"
|
||||
--format|fmt|f=<value> # default: "%.2f"
|
||||
|
||||
--no-header|nh # don't display header
|
||||
--transverse-output|to # output in multiple lines
|
||||
--quiet|q # silently skip invalid input
|
||||
|
||||
=head2 EXAMPLES
|
||||
|
||||
st
|
||||
|
||||
st --summary
|
||||
|
||||
st --complete
|
||||
|
||||
st --complete --transverse-output
|
||||
|
||||
st --no-header --delimiter='\n' --format='%.1e'
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Nelson Ferraz L<<nferraz@gmail.com>>
|
||||
|
||||
=head1 CONTRIBUTORS
|
||||
|
||||
imurray, who suggested a different algorithm for calculating variance.
|
||||
|
||||
asgeirn, who suggested a input filter and helped to remove some
|
||||
warnings.
|
||||
|
||||
gabeguz, who modified the script to make it more portable.
|
||||
|
||||
Send comments, suggestions and bug reports to:
|
||||
|
||||
https://github.com/nferraz/st/issues
|
||||
|
||||
Or fork the code on github:
|
||||
|
||||
https://github.com/nferraz/st
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (c) 2013 Nelson Ferraz.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the MIT License (see LICENSE).
|
1
dot_age/key.txt.tmpl
Normal file
1
dot_age/key.txt.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
{{- onepasswordDocument "bjcozi7gxox7m4feoul5wty4ua" -}}
|
0
dot_aws/.keep
Normal file
0
dot_aws/.keep
Normal file
7
dot_aws/encrypted_private_config.age
Normal file
7
dot_aws/encrypted_private_config.age
Normal file
|
@ -0,0 +1,7 @@
|
|||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVeW1lQW8rNFpMVWdZYlds
|
||||
NTNMc3NKOVE2NERobjMxYmphTDFPeTIzUWdRClQxZFhJNFNvUVBobXU5cHNkdnMv
|
||||
aWw5UjNRcU1aQ3pQTmYwR1haclNqcFUKLS0tIDR4YkRsemd0cTdpSG0rWnRSVkFv
|
||||
b3J4ZEtjTXptMjBhVTVucFhiNW9BeXMK8upcO6jVUo18xpN0iQOo/Qpl1vxj54Zj
|
||||
fzyKgUttG2tyAbcXSEH1+L3qlnzqXR2ThuYiw8ZK5egkLXZLoy0rCQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
9
dot_aws/encrypted_private_credentials.age
Normal file
9
dot_aws/encrypted_private_credentials.age
Normal file
|
@ -0,0 +1,9 @@
|
|||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2ckJpR21wcjhmV1VqYkxk
|
||||
TTZHcEVzK0VucUdUeE1iNlR3K3NLY0dhOEJzCkFmc0JUcmpWbHB2TDVMWGo5RHpo
|
||||
Wk02bkErbWQxcWNma3pkeExBalhaOHcKLS0tIG1rUWhXQWwxVDA2SVIyZ1V3YkRx
|
||||
OFF6UHdtQ21IOVU3dDhQMUdOVmpaeEEK817/EyAoPv208K0jA+UzrySIrPlnV36H
|
||||
edkavkJL3evQP/mD7f5TpSzQEXU7Hppv4UnHaPkgCFzlLbuhhwhTWkoba32RmZ3J
|
||||
1Ao7HhZglUcCiGoIX7llKoEr1qNwgsopSSr0iz9DC1dd7rD+UnWiZKwkRS4FNJV3
|
||||
WUteprvZlZ3ynAKqUjBbtA2Hapql11EhwkFyog==
|
||||
-----END AGE ENCRYPTED FILE-----
|
146
dot_config/git/config.tmpl
Normal file
146
dot_config/git/config.tmpl
Normal file
|
@ -0,0 +1,146 @@
|
|||
[user]
|
||||
name = Oliver Weyhmueller
|
||||
email = {{ (onepasswordDetailsFields "5o2mjxzzjyullqhdjxjgua2jie" .work_vault).username.value }}
|
||||
signingkey = 2ECE9419860C7C3CD1C65D2A5286794099F934A3
|
||||
|
||||
[core]
|
||||
excludesfile = ~/.config/git/ignore
|
||||
autocrlf = input
|
||||
attributesfile = ~/config/git/attributes
|
||||
whitespace = space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||
pager =
|
||||
mergeoptions = --no-edit
|
||||
commitGraph = true
|
||||
|
||||
[credential]
|
||||
|
||||
[gpg "x509"]
|
||||
program = smimesign
|
||||
|
||||
[diff]
|
||||
algorithm = histogram
|
||||
renames = copies
|
||||
[difftool]
|
||||
prompt = false
|
||||
|
||||
[merge]
|
||||
log = true
|
||||
[mergetool]
|
||||
prompt = false
|
||||
keepBackup = false
|
||||
keepTemporaries = false
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[fetch]
|
||||
prune = true
|
||||
[pull]
|
||||
rebase = true
|
||||
[push]
|
||||
default = upstream
|
||||
[rebase]
|
||||
autoStash = true
|
||||
[color]
|
||||
branch = auto
|
||||
diff = auto
|
||||
status = auto
|
||||
[format]
|
||||
pretty = %Cblue%h%Creset %Cgreen[%ar]%Creset (%an) %s
|
||||
[apply]
|
||||
whitespace = fix
|
||||
[help]
|
||||
autocorrect = 20
|
||||
|
||||
[filter "lfs"]
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
|
||||
[alias]
|
||||
ci = commit -v
|
||||
create-branch = !sh -c 'git push origin HEAD:refs/heads/$1 && git fetch origin && git branch --track $1 origin/$1 && cd . && git checkout $1' -
|
||||
delete-branch = !sh -c 'git push origin :refs/heads/$1 && git remote prune origin && git branch -D $1' -
|
||||
merge-branch = !git checkout master && git merge @{-1} --ff-only
|
||||
rebase-origin = !git fetch origin && git rebase origin/master
|
||||
show-graph = log --graph --abbrev-commit --pretty=oneline
|
||||
all = add -A
|
||||
amend = commit --amend -C HEAD
|
||||
credit = commit --amend --author "$1 <$2>" -C HEAD
|
||||
delete-local-merged = branch -d `git branch --merged | grep -v '^*' | grep -v 'master'| tr -d '\n'`
|
||||
promote = !~/bin/git-promote
|
||||
rank-contributers = !~/bin/git-rank-contributers
|
||||
undo = reset --soft HEAD^
|
||||
wtf = !~/bin/git-wtf
|
||||
browse = !hub browse
|
||||
w = !hub browse
|
||||
compare = !hub compare
|
||||
cia = !git add -A && git commit -av
|
||||
s = status -s
|
||||
p = !"git pull; git submodule foreach git pull origin master"
|
||||
remotes = remote -v
|
||||
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
||||
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
||||
lnc = log --pretty=format:"%h\\ %s\\ [%cn]"
|
||||
lds = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
|
||||
ld = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
|
||||
le = log --oneline --decorate
|
||||
filelog = log -u
|
||||
fl = log -u
|
||||
dl = "!git ll -1"
|
||||
dlc = diff --cached HEAD^
|
||||
dr = "!f() { git diff "$1"^.."$1"; }; f"
|
||||
lc = "!f() { git ll "$1"^.."$1"; }; f"
|
||||
diffr = "!f() { git diff "$1"^.."$1"; }; f"
|
||||
f = "!git ls-files | grep -i"
|
||||
grep = grep -Ii
|
||||
gr = grep -Ii
|
||||
gra = "!f() { A=$(pwd) && TOPLEVEL=$(git rev-parse --show-toplevel) && cd $TOPLEVEL && git grep --full-name -In $1 | xargs -I{} echo $TOPLEVEL/{} && cd $A; }; f"
|
||||
la = "!git config -l | grep alias | cut -c 7-"
|
||||
done = "!f() { git branch | grep "$1" | cut -c 3- | grep -v done | xargs -I{} git branch -m {} done-{}; }; f"
|
||||
assume = update-index --assume-unchanged
|
||||
unassume = update-index --no-assume-unchanged
|
||||
assumed = "!git ls-files -v | grep ^h | cut -c 3-"
|
||||
unassumeall = "!git assumed | xargs git update-index --no-assume-unchanged"
|
||||
assumeall = "!git st -s | awk {'print $2'} | xargs git assume"
|
||||
lasttag = describe --tags --abbrev=0
|
||||
lt = describe --tags --abbrev=0
|
||||
ours = "!f() { git co --ours $@ && git add $@; }; f"
|
||||
theirs = "!f() { git co --theirs $@ && git add $@; }; f"
|
||||
diff = diff --word-diff
|
||||
dc = diff --cached
|
||||
r = reset
|
||||
r1 = reset HEAD^
|
||||
r2 = reset HEAD^^
|
||||
rh = reset --hard
|
||||
rh1 = reset HEAD^ --hard
|
||||
rh2 = reset HEAD^^ --hard
|
||||
svnr = svn rebase
|
||||
svnd = svn dcommit
|
||||
svnl = svn log --oneline --show-commit
|
||||
sl = stash list
|
||||
sa = stash apply
|
||||
ss = stash save
|
||||
|
||||
# Operating System dependent settings
|
||||
{{ if eq .chezmoi.os "darwin" }}
|
||||
[core]
|
||||
trustctime = false
|
||||
[difftool "Kaleidoscope"]
|
||||
cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
|
||||
[diff]
|
||||
tool = Kaleidoscope
|
||||
[mergetool "Kaleidoscope"]
|
||||
cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
|
||||
trustExitCode = true
|
||||
[merge]
|
||||
tool = Kaleidoscope
|
||||
[credential]
|
||||
helper = osxkeychain
|
||||
{{ end }}
|
||||
{{ if eq .chezmoi.os "linux" }}
|
||||
[credential]
|
||||
helper = store
|
||||
{{ end }}
|
1
dot_config/git/create_private_credentials
Normal file
1
dot_config/git/create_private_credentials
Normal file
|
@ -0,0 +1 @@
|
|||
# This file is not to be synced
|
352
dot_config/git/ignore
Normal file
352
dot_config/git/ignore
Normal file
|
@ -0,0 +1,352 @@
|
|||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/windows,macos,linux,vim,visualstudiocode,jetbrains+all,hugo,java,homebrew,git,gradle,maven,microsoftoffice,ssh,vagrant,certificates
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,macos,linux,vim,visualstudiocode,jetbrains+all,hugo,java,homebrew,git,gradle,maven,microsoftoffice,ssh,vagrant,certificates
|
||||
|
||||
### certificates ###
|
||||
*.pem
|
||||
*.key
|
||||
*.crt
|
||||
*.cer
|
||||
*.der
|
||||
*.priv
|
||||
|
||||
### Git ###
|
||||
# Created by git for backups. To disable backups in Git:
|
||||
# $ git config --global mergetool.keepBackup false
|
||||
*.orig
|
||||
|
||||
# Created by git when using merge tools for conflicts
|
||||
*.BACKUP.*
|
||||
*.BASE.*
|
||||
*.LOCAL.*
|
||||
*.REMOTE.*
|
||||
*_BACKUP_*.txt
|
||||
*_BASE_*.txt
|
||||
*_LOCAL_*.txt
|
||||
*_REMOTE_*.txt
|
||||
|
||||
### Homebrew ###
|
||||
Brewfile.lock.json
|
||||
|
||||
### Hugo ###
|
||||
# Generated files by hugo
|
||||
/public/
|
||||
/resources/_gen/
|
||||
/assets/jsconfig.json
|
||||
hugo_stats.json
|
||||
|
||||
# Executable may be added to repository
|
||||
hugo.exe
|
||||
hugo.darwin
|
||||
hugo.linux
|
||||
|
||||
# Temporary lock file while building
|
||||
/.hugo_build.lock
|
||||
|
||||
### Java ###
|
||||
# Compiled class file
|
||||
*.class
|
||||
|
||||
# Log file
|
||||
*.log
|
||||
|
||||
# BlueJ files
|
||||
*.ctxt
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
replay_pid*
|
||||
|
||||
### JetBrains+all ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### JetBrains+all Patch ###
|
||||
# Ignores the whole .idea folder and all .iml files
|
||||
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
|
||||
|
||||
.idea/*
|
||||
|
||||
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
|
||||
|
||||
*.iml
|
||||
modules.xml
|
||||
.idea/misc.xml
|
||||
*.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
|
||||
### Linux ###
|
||||
*~
|
||||
|
||||
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||
.fuse_hidden*
|
||||
|
||||
# KDE directory preferences
|
||||
.directory
|
||||
|
||||
# Linux trash folder which might appear on any partition or disk
|
||||
.Trash-*
|
||||
|
||||
# .nfs files are created when an open file is removed but is still being accessed
|
||||
.nfs*
|
||||
|
||||
### macOS ###
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
### Maven ###
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
# Eclipse m2e generated files
|
||||
# Eclipse Core
|
||||
.project
|
||||
# JDT-specific (Eclipse Java Development Tools)
|
||||
.classpath
|
||||
|
||||
### MicrosoftOffice ###
|
||||
*.tmp
|
||||
|
||||
# Word temporary
|
||||
~$*.doc*
|
||||
|
||||
# Word Auto Backup File
|
||||
Backup of *.doc*
|
||||
|
||||
# Excel temporary
|
||||
~$*.xls*
|
||||
|
||||
# Excel Backup File
|
||||
*.xlk
|
||||
|
||||
# PowerPoint temporary
|
||||
~$*.ppt*
|
||||
|
||||
# Visio autosave temporary files
|
||||
*.~vsd*
|
||||
|
||||
### SSH ###
|
||||
**/.ssh/id_*
|
||||
**/.ssh/*_id_*
|
||||
**/.ssh/known_hosts
|
||||
|
||||
### Vagrant ###
|
||||
# General
|
||||
.vagrant/
|
||||
|
||||
# Log files (if you are creating logs in debug mode, uncomment this)
|
||||
# *.log
|
||||
|
||||
### Vagrant Patch ###
|
||||
*.box
|
||||
|
||||
### Vim ###
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
!*.svg # comment out if you don't need vector files
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# Session
|
||||
Session.vim
|
||||
Sessionx.vim
|
||||
|
||||
# Temporary
|
||||
.netrwhist
|
||||
# Auto-generated tag files
|
||||
tags
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
|
||||
### VisualStudioCode ###
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
!.vscode/*.code-snippets
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# Built Visual Studio Code Extensions
|
||||
*.vsix
|
||||
|
||||
### VisualStudioCode Patch ###
|
||||
# Ignore all local history of files
|
||||
.history
|
||||
.ionide
|
||||
|
||||
# Support for Project snippet scope
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
Thumbs.db:encryptable
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Dump file
|
||||
*.stackdump
|
||||
|
||||
# Folder config file
|
||||
[Dd]esktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
### Gradle ###
|
||||
.gradle
|
||||
build/
|
||||
|
||||
# Ignore Gradle GUI config
|
||||
gradle-app.setting
|
||||
|
||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
||||
!gradle-wrapper.jar
|
||||
|
||||
# Cache of project
|
||||
.gradletasknamecache
|
||||
|
||||
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
|
||||
# gradle/wrapper/gradle-wrapper.properties
|
||||
|
||||
### Gradle Patch ###
|
||||
**/build/
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/windows,macos,linux,vim,visualstudiocode,jetbrains+all,hugo,java,homebrew,git,gradle,maven,microsoftoffice,ssh,vagrant,certificates
|
111
dot_gitconfig
111
dot_gitconfig
|
@ -1,111 +0,0 @@
|
|||
[user]
|
||||
name = Oliver Weyhmueller
|
||||
email = oliver@weyhmueller.de
|
||||
username = weyhmueller
|
||||
signingkey = 2ECE9419860C7C3CD1C65D2A5286794099F934A3
|
||||
[mergetool]
|
||||
keepBackup = true
|
||||
[difftool "Kaleidoscope"]
|
||||
cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
|
||||
[diff]
|
||||
tool = Kaleidoscope
|
||||
[difftool]
|
||||
prompt = false
|
||||
[mergetool "Kaleidoscope"]
|
||||
cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
|
||||
trustExitCode = true
|
||||
[merge]
|
||||
tool = Kaleidoscope
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[push]
|
||||
default = tracking
|
||||
[color]
|
||||
branch = auto
|
||||
diff = auto
|
||||
status = auto
|
||||
[format]
|
||||
pretty = %Cblue%h%Creset %Cgreen[%ar]%Creset (%an) %s
|
||||
[merge]
|
||||
log = true
|
||||
[apply]
|
||||
whitespace = fix
|
||||
[alias]
|
||||
ci = commit -v
|
||||
create-branch = !sh -c 'git push origin HEAD:refs/heads/$1 && git fetch origin && git branch --track $1 origin/$1 && cd . && git checkout $1' -
|
||||
delete-branch = !sh -c 'git push origin :refs/heads/$1 && git remote prune origin && git branch -D $1' -
|
||||
merge-branch = !git checkout master && git merge @{-1} --ff-only
|
||||
rebase-origin = !git fetch origin && git rebase origin/master
|
||||
show-graph = log --graph --abbrev-commit --pretty=oneline
|
||||
all = add -A
|
||||
amend = commit --amend -C HEAD
|
||||
credit = commit --amend --author "$1 <$2>" -C HEAD
|
||||
delete-local-merged = branch -d `git branch --merged | grep -v '^*' | grep -v 'master'| tr -d '\n'`
|
||||
promote = !~/bin/git-promote
|
||||
rank-contributers = !~/bin/git-rank-contributers
|
||||
undo = reset --soft HEAD^
|
||||
wtf = !~/bin/git-wtf
|
||||
browse = !hub browse
|
||||
w = !hub browse
|
||||
compare = !hub compare
|
||||
cia = !git add -A && git commit -av
|
||||
s = status -s
|
||||
p = !"git pull; git submodule foreach git pull origin master"
|
||||
remotes = remote -v
|
||||
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
||||
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
||||
lnc = log --pretty=format:"%h\\ %s\\ [%cn]"
|
||||
lds = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
|
||||
ld = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
|
||||
le = log --oneline --decorate
|
||||
filelog = log -u
|
||||
fl = log -u
|
||||
dl = "!git ll -1"
|
||||
dlc = diff --cached HEAD^
|
||||
dr = "!f() { git diff "$1"^.."$1"; }; f"
|
||||
lc = "!f() { git ll "$1"^.."$1"; }; f"
|
||||
diffr = "!f() { git diff "$1"^.."$1"; }; f"
|
||||
f = "!git ls-files | grep -i"
|
||||
grep = grep -Ii
|
||||
gr = grep -Ii
|
||||
gra = "!f() { A=$(pwd) && TOPLEVEL=$(git rev-parse --show-toplevel) && cd $TOPLEVEL && git grep --full-name -In $1 | xargs -I{} echo $TOPLEVEL/{} && cd $A; }; f"
|
||||
la = "!git config -l | grep alias | cut -c 7-"
|
||||
done = "!f() { git branch | grep "$1" | cut -c 3- | grep -v done | xargs -I{} git branch -m {} done-{}; }; f"
|
||||
assume = update-index --assume-unchanged
|
||||
unassume = update-index --no-assume-unchanged
|
||||
assumed = "!git ls-files -v | grep ^h | cut -c 3-"
|
||||
unassumeall = "!git assumed | xargs git update-index --no-assume-unchanged"
|
||||
assumeall = "!git st -s | awk {'print $2'} | xargs git assume"
|
||||
lasttag = describe --tags --abbrev=0
|
||||
lt = describe --tags --abbrev=0
|
||||
ours = "!f() { git co --ours $@ && git add $@; }; f"
|
||||
theirs = "!f() { git co --theirs $@ && git add $@; }; f"
|
||||
diff = diff --word-diff
|
||||
dc = diff --cached
|
||||
r = reset
|
||||
r1 = reset HEAD^
|
||||
r2 = reset HEAD^^
|
||||
rh = reset --hard
|
||||
rh1 = reset HEAD^ --hard
|
||||
rh2 = reset HEAD^^ --hard
|
||||
svnr = svn rebase
|
||||
svnd = svn dcommit
|
||||
svnl = svn log --oneline --show-commit
|
||||
sl = stash list
|
||||
sa = stash apply
|
||||
ss = stash save
|
||||
[core]
|
||||
excludesfile = ~/.gitignore
|
||||
autocrlf = input
|
||||
attributesfile = ~/.gitattributes
|
||||
# Treat spaces before tabs, lines that are indented with 8 or more spaces, and all kinds of trailing whitespace as an error
|
||||
whitespace = space-before-tab,indent-with-non-tab,trailing-space
|
||||
pager =
|
||||
[gpg "x509"]
|
||||
program = smimesign
|
||||
|
||||
#[gpg]
|
||||
# program = /usr/local/bin/gpg
|
|
@ -1,13 +0,0 @@
|
|||
*.DS_Store
|
||||
*.sw[nop]
|
||||
.bundle
|
||||
.sass-cache/
|
||||
db/*.sqlite3
|
||||
log/*.log
|
||||
rerun.txt
|
||||
tags
|
||||
tmp/**/*
|
||||
!tmp/cache/.keep
|
||||
vendor/bundler_gems
|
||||
vim/.netrwhist
|
||||
zeus.json
|
41
dot_p10k.zsh
41
dot_p10k.zsh
|
@ -70,11 +70,13 @@
|
|||
haskell_stack # haskell version from stack (https://haskellstack.org/)
|
||||
kubecontext # current kubernetes context (https://kubernetes.io/)
|
||||
terraform # terraform workspace (https://www.terraform.io)
|
||||
# terraform_version # terraform version (https://www.terraform.io)
|
||||
aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
|
||||
aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
|
||||
azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
|
||||
gcloud # google cloud cli account and project (https://cloud.google.com/)
|
||||
google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
|
||||
toolbox # toolbox name (https://github.com/containers/toolbox)
|
||||
context # user@hostname
|
||||
nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
|
||||
ranger # ranger shell (https://github.com/ranger/ranger)
|
||||
|
@ -85,7 +87,7 @@
|
|||
nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
|
||||
# vi_mode # vi mode (you don't need this if you've enabled prompt_char)
|
||||
vpn_ip # virtual private network indicator
|
||||
# load # CPU load
|
||||
load # CPU load
|
||||
disk_usage # disk usage
|
||||
# ram # free RAM
|
||||
# swap # used swap
|
||||
|
@ -357,7 +359,7 @@
|
|||
|
||||
# Formatter for Git status.
|
||||
#
|
||||
# Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
|
||||
# Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
|
||||
#
|
||||
# You can edit the function to customize how Git status looks.
|
||||
#
|
||||
|
@ -1284,10 +1286,20 @@
|
|||
typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=232
|
||||
# typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
|
||||
|
||||
#############[ terraform_version: terraform version (https://www.terraform.io) ]##############
|
||||
# Terraform version color.
|
||||
typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4
|
||||
typeset -g POWERLEVEL9K_TERRAFORM_VERSION_BACKGROUND=0
|
||||
# Custom icon.
|
||||
# typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
|
||||
|
||||
################[ terraform_version: It shows active terraform version (https://www.terraform.io) ]#################
|
||||
typeset -g POWERLEVEL9K_TERRAFORM_VERSION_SHOW_ON_COMMAND='terraform|tf'
|
||||
|
||||
#############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
|
||||
# Show kubecontext only when the the command you are typing invokes one of these tools.
|
||||
# Show kubecontext only when the command you are typing invokes one of these tools.
|
||||
# Tip: Remove the next line to always show kubecontext.
|
||||
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|fluxctl|stern'
|
||||
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern'
|
||||
|
||||
# Kubernetes context classes for the purpose of using different colors, icons and expansions with
|
||||
# different contexts.
|
||||
|
@ -1374,7 +1386,7 @@
|
|||
# typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at '
|
||||
|
||||
#[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
|
||||
# Show aws only when the the command you are typing invokes one of these tools.
|
||||
# Show aws only when the command you are typing invokes one of these tools.
|
||||
# Tip: Remove the next line to always show aws.
|
||||
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi|terragrunt'
|
||||
|
||||
|
@ -1423,7 +1435,7 @@
|
|||
# typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
|
||||
|
||||
##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
|
||||
# Show azure only when the the command you are typing invokes one of these tools.
|
||||
# Show azure only when the command you are typing invokes one of these tools.
|
||||
# Tip: Remove the next line to always show azure.
|
||||
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
|
||||
# Azure account name color.
|
||||
|
@ -1433,9 +1445,9 @@
|
|||
# typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐'
|
||||
|
||||
##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
|
||||
# Show gcloud only when the the command you are typing invokes one of these tools.
|
||||
# Show gcloud only when the command you are typing invokes one of these tools.
|
||||
# Tip: Remove the next line to always show gcloud.
|
||||
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs'
|
||||
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
|
||||
# Google cloud color.
|
||||
typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7
|
||||
typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4
|
||||
|
@ -1475,7 +1487,7 @@
|
|||
# typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
|
||||
|
||||
#[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
|
||||
# Show google_app_cred only when the the command you are typing invokes one of these tools.
|
||||
# Show google_app_cred only when the command you are typing invokes one of these tools.
|
||||
# Tip: Remove the next line to always show google_app_cred.
|
||||
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
|
||||
|
||||
|
@ -1529,6 +1541,17 @@
|
|||
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
|
||||
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
|
||||
|
||||
##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
|
||||
# Toolbox color.
|
||||
typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=0
|
||||
typeset -g POWERLEVEL9K_TOOLBOX_BACKGROUND=3
|
||||
# Don't display the name of the toolbox if it matches fedora-toolbox-*.
|
||||
typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
|
||||
# Custom icon.
|
||||
# typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
|
||||
# Custom prefix.
|
||||
# typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='in '
|
||||
|
||||
###############################[ public_ip: public IP address ]###############################
|
||||
# Public IP color.
|
||||
typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{{ range (gitHubKeys "weyhmueller") -}}
|
||||
{{ .Key }}
|
||||
{{ end -}}
|
||||
command="/usr/bin/check_mk_agent" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFgOgaCRLxAsxPkMK4lgQKSzyHZYKvAL0Yq6UHDCYaXw cmk@checkmk
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
set show-date = no
|
||||
set author-width = 3
|
||||
set main-view-date-display = relative-compact
|
||||
set main-view-author-width = 5
|
||||
|
|
|
@ -1,10 +1,3 @@
|
|||
#
|
||||
# tmux configuration
|
||||
# Version: 1.0
|
||||
# Date: 2021-02-21 19:32:35 +0100
|
||||
#
|
||||
# Copyright 2021, Oliver Weyhmueller <oliver@weyhmueller.de>
|
||||
|
||||
#new-session -A -t 0
|
||||
set -g prefix C-a
|
||||
unbind C-b
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
90
dot_zshsyntax
Normal file
90
dot_zshsyntax
Normal file
|
@ -0,0 +1,90 @@
|
|||
# Dracula Theme (for zsh-syntax-highlighting)
|
||||
#
|
||||
# https://github.com/zenorocha/dracula-theme
|
||||
#
|
||||
# Copyright 2021, All rights reserved
|
||||
#
|
||||
# Code licensed under the MIT license
|
||||
# http://zenorocha.mit-license.org
|
||||
#
|
||||
# @author George Pickering <@bigpick>
|
||||
# @author Zeno Rocha <hi@zenorocha.com>
|
||||
# Paste this files contents inside your ~/.zshrc before you activate zsh-syntax-highlighting
|
||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main cursor)
|
||||
typeset -gA ZSH_HIGHLIGHT_STYLES
|
||||
# Default groupings per, https://spec.draculatheme.com, try to logically separate
|
||||
# possible ZSH_HIGHLIGHT_STYLES settings accordingly...?
|
||||
#
|
||||
# Italics not yet supported by zsh; potentially soon:
|
||||
# https://github.com/zsh-users/zsh-syntax-highlighting/issues/432
|
||||
# https://www.zsh.org/mla/workers/2021/msg00678.html
|
||||
# ... in hopes that they will, labelling accordingly with ,italic where appropriate
|
||||
#
|
||||
# Main highlighter styling: https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/main.md
|
||||
#
|
||||
## General
|
||||
### Diffs
|
||||
### Markup
|
||||
## Classes
|
||||
## Comments
|
||||
ZSH_HIGHLIGHT_STYLES[comment]='fg=#6272A4'
|
||||
## Constants
|
||||
## Entitites
|
||||
## Functions/methods
|
||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=#50FA7B'
|
||||
ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=#50FA7B'
|
||||
ZSH_HIGHLIGHT_STYLES[global-alias]='fg=#50FA7B'
|
||||
ZSH_HIGHLIGHT_STYLES[function]='fg=#50FA7B'
|
||||
ZSH_HIGHLIGHT_STYLES[command]='fg=#50FA7B'
|
||||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=#50FA7B,underline'
|
||||
ZSH_HIGHLIGHT_STYLES[autodirectory]='fg=#FFB86C,italic'
|
||||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=#FFB86C'
|
||||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=#FFB86C'
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=#BD93F9'
|
||||
## Keywords
|
||||
## Built ins
|
||||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=#8BE9FD'
|
||||
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#8BE9FD'
|
||||
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=#8BE9FD'
|
||||
## Punctuation
|
||||
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#FF79C6'
|
||||
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-unquoted]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]='fg=#FF79C6'
|
||||
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=#FF79C6'
|
||||
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=#FF79C6'
|
||||
## Serializable / Configuration Languages
|
||||
## Storage
|
||||
## Strings
|
||||
ZSH_HIGHLIGHT_STYLES[command-substitution-quoted]='fg=#F1FA8C'
|
||||
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-quoted]='fg=#F1FA8C'
|
||||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#F1FA8C'
|
||||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument-unclosed]='fg=#FF5555'
|
||||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#F1FA8C'
|
||||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument-unclosed]='fg=#FF5555'
|
||||
ZSH_HIGHLIGHT_STYLES[rc-quote]='fg=#F1FA8C'
|
||||
## Variables
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument-unclosed]='fg=#FF5555'
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[assign]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[named-fd]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[numeric-fd]='fg=#F8F8F2'
|
||||
## No category relevant in spec
|
||||
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#FF5555'
|
||||
ZSH_HIGHLIGHT_STYLES[path]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[path_pathseparator]='fg=#FF79C6'
|
||||
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]='fg=#FF79C6'
|
||||
ZSH_HIGHLIGHT_STYLES[globbing]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=#BD93F9'
|
||||
#ZSH_HIGHLIGHT_STYLES[command-substitution]='fg=?'
|
||||
#ZSH_HIGHLIGHT_STYLES[command-substitution-unquoted]='fg=?'
|
||||
#ZSH_HIGHLIGHT_STYLES[process-substitution]='fg=?'
|
||||
#ZSH_HIGHLIGHT_STYLES[arithmetic-expansion]='fg=?'
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-unclosed]='fg=#FF5555'
|
||||
ZSH_HIGHLIGHT_STYLES[redirection]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[arg0]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[default]='fg=#F8F8F2'
|
||||
ZSH_HIGHLIGHT_STYLES[cursor]='standout'
|
Loading…
Reference in a new issue