Compare commits
11 Commits
4fc054533c
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 229ff7dea0 | |||
| 967565c80b | |||
| 4361c5f17b | |||
| d56aba7823 | |||
| 4956885496 | |||
| 223616e1ec | |||
| eef10fc372 | |||
| c6364da38f | |||
| d0275c334b | |||
| ed1504aff0 | |||
| d171c94478 |
@@ -2,40 +2,56 @@ tap "charmbracelet/tap"
|
|||||||
tap "dotenvx/brew"
|
tap "dotenvx/brew"
|
||||||
tap "ghall89/tap"
|
tap "ghall89/tap"
|
||||||
tap "marsanne/cask"
|
tap "marsanne/cask"
|
||||||
tap "oven-sh/bun"
|
tap "simonbs/wut", "https://github.com/simonbs/wut.git"
|
||||||
brew "jq"
|
tap "tw93/tap"
|
||||||
brew "ansiweather"
|
brew "age"
|
||||||
brew "xz"
|
brew "xz"
|
||||||
|
brew "apfel"
|
||||||
brew "atuin"
|
brew "atuin"
|
||||||
brew "autoconf"
|
brew "autoconf"
|
||||||
brew "automake"
|
brew "automake"
|
||||||
brew "bazel"
|
brew "bazel"
|
||||||
brew "bchunk"
|
brew "bchunk"
|
||||||
|
brew "openssl@3"
|
||||||
|
brew "bento4"
|
||||||
brew "btop"
|
brew "btop"
|
||||||
|
brew "coreutils"
|
||||||
|
brew "cask"
|
||||||
brew "cloc"
|
brew "cloc"
|
||||||
brew "libyaml"
|
brew "libyaml"
|
||||||
brew "openssl@3"
|
|
||||||
brew "cocoapods"
|
brew "cocoapods"
|
||||||
brew "coreutils"
|
brew "create-dmg"
|
||||||
brew "csvkit"
|
brew "csvkit"
|
||||||
|
brew "deno"
|
||||||
|
brew "eslint"
|
||||||
brew "exiv2"
|
brew "exiv2"
|
||||||
brew "eza"
|
brew "eza"
|
||||||
|
brew "fastfetch"
|
||||||
|
brew "fd"
|
||||||
brew "ffmpeg"
|
brew "ffmpeg"
|
||||||
|
brew "fish"
|
||||||
brew "flyctl"
|
brew "flyctl"
|
||||||
|
brew "fresh-editor"
|
||||||
brew "fzf"
|
brew "fzf"
|
||||||
|
brew "gamdl"
|
||||||
brew "ggc"
|
brew "ggc"
|
||||||
brew "gh"
|
brew "gh"
|
||||||
brew "git"
|
brew "git"
|
||||||
|
brew "git-extras"
|
||||||
brew "git-split-diffs"
|
brew "git-split-diffs"
|
||||||
brew "gitmoji"
|
brew "gitmoji"
|
||||||
|
brew "gitui"
|
||||||
brew "glow"
|
brew "glow"
|
||||||
brew "gnupg"
|
brew "gnupg"
|
||||||
brew "go"
|
brew "go"
|
||||||
|
brew "go-task"
|
||||||
brew "gum"
|
brew "gum"
|
||||||
brew "helix"
|
brew "helix"
|
||||||
brew "icu4c@76"
|
brew "icu4c@76"
|
||||||
brew "libheif"
|
brew "libheif"
|
||||||
brew "imagemagick"
|
brew "imagemagick"
|
||||||
|
brew "jq"
|
||||||
|
brew "kew"
|
||||||
brew "lazygit"
|
brew "lazygit"
|
||||||
brew "libffi"
|
brew "libffi"
|
||||||
brew "loc"
|
brew "loc"
|
||||||
@@ -44,81 +60,104 @@ brew "man2html"
|
|||||||
brew "mas"
|
brew "mas"
|
||||||
brew "micro"
|
brew "micro"
|
||||||
brew "mint"
|
brew "mint"
|
||||||
|
brew "mistral-vibe"
|
||||||
brew "nvm"
|
brew "nvm"
|
||||||
brew "oh-my-posh"
|
brew "oh-my-posh"
|
||||||
brew "ollama"
|
|
||||||
brew "openssl@1.1"
|
brew "openssl@1.1"
|
||||||
brew "pandoc"
|
brew "pandoc"
|
||||||
brew "parallel"
|
brew "parallel"
|
||||||
brew "pkgconf"
|
brew "pkgconf"
|
||||||
brew "pnpm"
|
brew "python@3.10"
|
||||||
brew "ripgrep"
|
brew "ripgrep"
|
||||||
|
brew "rubyfmt"
|
||||||
brew "rust"
|
brew "rust"
|
||||||
|
brew "rust-analyzer"
|
||||||
brew "sf-pwgen"
|
brew "sf-pwgen"
|
||||||
|
brew "sops"
|
||||||
brew "speedtest-cli"
|
brew "speedtest-cli"
|
||||||
brew "superfile"
|
|
||||||
brew "swift-format"
|
brew "swift-format"
|
||||||
|
brew "swiftdraw"
|
||||||
|
brew "swiftlint"
|
||||||
|
brew "tea"
|
||||||
brew "telnet"
|
brew "telnet"
|
||||||
brew "thefuck"
|
brew "thefuck"
|
||||||
brew "toot"
|
brew "toot"
|
||||||
|
brew "trash"
|
||||||
|
brew "typst"
|
||||||
brew "vapor"
|
brew "vapor"
|
||||||
brew "vlang"
|
|
||||||
brew "watchman"
|
brew "watchman"
|
||||||
brew "wget"
|
brew "wget"
|
||||||
brew "yarn"
|
|
||||||
brew "yazi"
|
|
||||||
brew "yt-dlp"
|
brew "yt-dlp"
|
||||||
brew "zig"
|
brew "zig"
|
||||||
brew "zlib"
|
brew "zlib"
|
||||||
|
brew "zls"
|
||||||
brew "zoxide"
|
brew "zoxide"
|
||||||
|
brew "charmbracelet/tap/crush"
|
||||||
brew "dotenvx/brew/dotenvx"
|
brew "dotenvx/brew/dotenvx"
|
||||||
brew "oven-sh/bun/bun"
|
brew "simonbs/wut/wut"
|
||||||
|
brew "tw93/tap/mole"
|
||||||
|
cask "affinity"
|
||||||
cask "airbuddy"
|
cask "airbuddy"
|
||||||
cask "alfred"
|
cask "alfred"
|
||||||
cask "appflowy"
|
cask "appflowy"
|
||||||
|
cask "applite"
|
||||||
cask "arq"
|
cask "arq"
|
||||||
cask "autodock"
|
|
||||||
cask "bbedit"
|
cask "bbedit"
|
||||||
|
cask "bettershot"
|
||||||
|
cask "butterkit"
|
||||||
|
cask "claude-code"
|
||||||
cask "coderabbit"
|
cask "coderabbit"
|
||||||
cask "cog-app"
|
cask "codex"
|
||||||
cask "contexts"
|
cask "contexts"
|
||||||
cask "cork"
|
cask "cork"
|
||||||
cask "daisydisk"
|
cask "daisydisk"
|
||||||
|
cask "devcleaner"
|
||||||
|
cask "discord"
|
||||||
|
cask "ea"
|
||||||
|
cask "equinox"
|
||||||
|
cask "find-any-file"
|
||||||
cask "fork"
|
cask "fork"
|
||||||
|
cask "forklift"
|
||||||
|
cask "gb-studio"
|
||||||
cask "ghostty"
|
cask "ghostty"
|
||||||
cask "gog-galaxy"
|
cask "gog-galaxy"
|
||||||
|
cask "gram"
|
||||||
cask "hazel"
|
cask "hazel"
|
||||||
|
cask "helium-browser"
|
||||||
cask "iina"
|
cask "iina"
|
||||||
cask "imageoptim"
|
cask "imageoptim"
|
||||||
|
cask "istat-menus"
|
||||||
cask "jordanbaird-ice"
|
cask "jordanbaird-ice"
|
||||||
cask "keka"
|
cask "keka"
|
||||||
|
cask "key-codes"
|
||||||
cask "keyboardcleantool"
|
cask "keyboardcleantool"
|
||||||
cask "keystash"
|
cask "ghall89/tap/keystash"
|
||||||
cask "knockknock"
|
|
||||||
cask "lulu"
|
|
||||||
cask "mac-mouse-fix"
|
cask "mac-mouse-fix"
|
||||||
|
cask "mactracker"
|
||||||
|
cask "markedit"
|
||||||
|
cask "mullvad-vpn"
|
||||||
|
cask "musicbrainz-picard"
|
||||||
cask "nova"
|
cask "nova"
|
||||||
cask "onyx@beta"
|
cask "orbstack"
|
||||||
cask "openemu"
|
cask "orion"
|
||||||
cask "paletro"
|
cask "paletro"
|
||||||
cask "pearcleaner"
|
cask "postgres-app"
|
||||||
cask "postgres-unofficial"
|
|
||||||
cask "qlmarkdown"
|
cask "qlmarkdown"
|
||||||
cask "quicklook-json"
|
cask "rapidapi"
|
||||||
cask "raycast"
|
|
||||||
cask "rectangle-pro"
|
cask "rectangle-pro"
|
||||||
cask "rocket"
|
cask "rocket"
|
||||||
cask "siphon"
|
cask "slack"
|
||||||
|
cask "soulseek"
|
||||||
cask "spamsieve"
|
cask "spamsieve"
|
||||||
cask "steam"
|
cask "steam"
|
||||||
cask "swift-shift"
|
cask "swift-shift"
|
||||||
cask "swiftformat-for-xcode"
|
cask "sync"
|
||||||
cask "tableplus"
|
cask "tableplus"
|
||||||
cask "tic80"
|
cask "thaw"
|
||||||
cask "tunnelblick"
|
cask "unclack"
|
||||||
cask "vanilla"
|
cask "vscodium"
|
||||||
cask "visual-studio-code"
|
cask "whatsapp"
|
||||||
cask "vivaldi"
|
cask "windowkeys"
|
||||||
cask "xscope"
|
cask "xscope"
|
||||||
cask "zed"
|
cask "zed"
|
||||||
cask "zen"
|
cask "zen"
|
||||||
@@ -129,49 +168,56 @@ mas "Affinity Photo 2", id: 1616822987
|
|||||||
mas "Anybox", id: 1593408455
|
mas "Anybox", id: 1593408455
|
||||||
mas "Bakery", id: 1575220747
|
mas "Bakery", id: 1575220747
|
||||||
mas "Baking Soda", id: 1601151613
|
mas "Baking Soda", id: 1601151613
|
||||||
|
mas "Balatro", id: 6502451661
|
||||||
mas "Battery Indicator", id: 1206020918
|
mas "Battery Indicator", id: 1206020918
|
||||||
mas "Bear", id: 1091189122
|
mas "Bear", id: 1091189122
|
||||||
|
mas "brrr", id: 6755617665
|
||||||
mas "Codye", id: 1516894961
|
mas "Codye", id: 1516894961
|
||||||
mas "Collections", id: 1568395334
|
mas "Collections", id: 1568395334
|
||||||
mas "Color Picker", id: 1545870783
|
mas "Color Picker", id: 1545870783
|
||||||
|
mas "Coppice", id: 6741889046
|
||||||
mas "Dato", id: 1470584107
|
mas "Dato", id: 1470584107
|
||||||
mas "DevCleaner", id: 1388020431
|
mas "DevCleaner", id: 1388020431
|
||||||
mas "Developer", id: 640199958
|
mas "Developer", id: 640199958
|
||||||
mas "Dice by PCalc", id: 1479250666
|
mas "Dice by PCalc", id: 1479250666
|
||||||
mas "Dropover", id: 1355679052
|
mas "Dropover", id: 1355679052
|
||||||
mas "Equinox", id: 1591510203
|
|
||||||
mas "Expenses", id: 1492055171
|
mas "Expenses", id: 1492055171
|
||||||
mas "Find Any File", id: 0
|
mas "Find Any File", id: 402569179
|
||||||
mas "Folder Quick Look", id: 6753110395
|
mas "Folder Quick Look", id: 6753110395
|
||||||
mas "Front and Center", id: 1493996622
|
mas "Front and Center", id: 1493996622
|
||||||
mas "Gifski", id: 1351639930
|
mas "Gifski", id: 1351639930
|
||||||
mas "HEIC Converter", id: 1294126402
|
mas "HEIC Converter", id: 1294126402
|
||||||
mas "HTTPBot", id: 1232603544
|
|
||||||
mas "Ice Cubes", id: 6444915884
|
mas "Ice Cubes", id: 6444915884
|
||||||
mas "Interactful", id: 1528095640
|
mas "Interactful", id: 1528095640
|
||||||
mas "Ivory", id: 6444602274
|
mas "Ivory", id: 6444602274
|
||||||
mas "JSON Peep", id: 1458969831
|
mas "JSON Peep", id: 1458969831
|
||||||
mas "Key Codes", id: 414568915
|
mas "Key Codes", id: 414568915
|
||||||
mas "Keynote", id: 409183694
|
mas "Keynote", id: 361285480
|
||||||
|
mas "LiquidFetch", id: 6757637185
|
||||||
|
mas "Little Snitch Mini", id: 1629008763
|
||||||
mas "Lungo", id: 1263070803
|
mas "Lungo", id: 1263070803
|
||||||
mas "Mactracker", id: 430255202
|
mas "Mactracker", id: 430255202
|
||||||
mas "Numbers", id: 409203825
|
mas "Mockup", id: 1527554407
|
||||||
|
mas "Numbers", id: 361304891
|
||||||
mas "Online Check", id: 6504709660
|
mas "Online Check", id: 6504709660
|
||||||
mas "Page Screenshot for Safari", id: 1472715727
|
mas "Page Screenshot for Safari", id: 1472715727
|
||||||
mas "Pages", id: 409201541
|
mas "Pages", id: 361309726
|
||||||
mas "Parcel", id: 375589283
|
mas "Parcel", id: 375589283
|
||||||
mas "Pastel", id: 413897608
|
mas "Pastel", id: 413897608
|
||||||
|
mas "Pixelmator Pro", id: 6746662575
|
||||||
|
mas "Pixelmator Pro", id: 1289583905
|
||||||
mas "Pixen", id: 525180431
|
mas "Pixen", id: 525180431
|
||||||
mas "Pocket City 2", id: 6742559886
|
mas "Pocket City 2", id: 6742559886
|
||||||
mas "Pure Paste", id: 1611378436
|
mas "Pure Paste", id: 1611378436
|
||||||
mas "Raycast Companion", id: 6738274497
|
|
||||||
mas "Reeder", id: 6475002485
|
mas "Reeder", id: 6475002485
|
||||||
mas "Shareful", id: 1522267256
|
mas "Shareful", id: 1522267256
|
||||||
mas "Sleeve", id: 1606145041
|
mas "Sleeve", id: 1606145041
|
||||||
mas "Snippety", id: 1530751461
|
mas "Snippety", id: 1530751461
|
||||||
mas "Soulver 3", id: 1508732804
|
mas "Soulver 3", id: 1508732804
|
||||||
|
mas "Tapestry", id: 6448078074
|
||||||
mas "TestFlight", id: 899247664
|
mas "TestFlight", id: 899247664
|
||||||
mas "Text Workflow", id: 1600520682
|
mas "Text Workflow", id: 1600520682
|
||||||
|
mas "Textastic", id: 572491815
|
||||||
mas "Tot", id: 1491071483
|
mas "Tot", id: 1491071483
|
||||||
mas "Transporter", id: 1450874784
|
mas "Transporter", id: 1450874784
|
||||||
mas "uBlock Origin Lite", id: 6745342698
|
mas "uBlock Origin Lite", id: 6745342698
|
||||||
@@ -179,26 +225,39 @@ mas "Velja", id: 1607635845
|
|||||||
mas "Vinegar", id: 1591303229
|
mas "Vinegar", id: 1591303229
|
||||||
mas "WhatsApp", id: 310633997
|
mas "WhatsApp", id: 310633997
|
||||||
mas "WorldWideWeb", id: 1621370168
|
mas "WorldWideWeb", id: 1621370168
|
||||||
|
vscode "akamud.vscode-theme-onelight"
|
||||||
vscode "astro-build.astro-vscode"
|
vscode "astro-build.astro-vscode"
|
||||||
|
vscode "biomejs.biome"
|
||||||
vscode "bradlc.vscode-tailwindcss"
|
vscode "bradlc.vscode-tailwindcss"
|
||||||
vscode "christian-kohler.npm-intellisense"
|
vscode "christian-kohler.npm-intellisense"
|
||||||
|
vscode "codeliger.pirate-map"
|
||||||
vscode "csstools.postcss"
|
vscode "csstools.postcss"
|
||||||
vscode "dbaeumer.vscode-eslint"
|
vscode "dbaeumer.vscode-eslint"
|
||||||
|
vscode "dnicolson.binary-plist"
|
||||||
vscode "esbenp.prettier-vscode"
|
vscode "esbenp.prettier-vscode"
|
||||||
vscode "golang.go"
|
vscode "golang.go"
|
||||||
vscode "icrawl.discord-vscode"
|
|
||||||
vscode "littensy.charmed-icons"
|
vscode "littensy.charmed-icons"
|
||||||
vscode "lkytal.flatui"
|
vscode "lkytal.flatui"
|
||||||
vscode "llvm-vs-code-extensions.lldb-dap"
|
vscode "llvm-vs-code-extensions.lldb-dap"
|
||||||
vscode "mechatroner.rainbow-csv"
|
vscode "mechatroner.rainbow-csv"
|
||||||
|
vscode "ms-vscode.makefile-tools"
|
||||||
vscode "orta.vscode-jest"
|
vscode "orta.vscode-jest"
|
||||||
vscode "oven.bun-vscode"
|
vscode "oven.bun-vscode"
|
||||||
|
vscode "pollywoggames.pico8-ls"
|
||||||
vscode "prisma.prisma"
|
vscode "prisma.prisma"
|
||||||
vscode "redhat.vscode-xml"
|
vscode "redhat.vscode-xml"
|
||||||
vscode "ripplejs.ripple-vscode-plugin"
|
vscode "ripplejs.ripple-vscode-plugin"
|
||||||
vscode "rust-lang.rust-analyzer"
|
vscode "rust-lang.rust-analyzer"
|
||||||
vscode "shopify.ruby-lsp"
|
vscode "shopify.ruby-lsp"
|
||||||
|
vscode "svelte.svelte-vscode"
|
||||||
vscode "swiftlang.swift-vscode"
|
vscode "swiftlang.swift-vscode"
|
||||||
vscode "tamasfe.even-better-toml"
|
vscode "tamasfe.even-better-toml"
|
||||||
vscode "vue.volar"
|
vscode "task.vscode-task"
|
||||||
|
vscode "teabyii.ayu"
|
||||||
|
vscode "vknabel.vscode-swiftlint"
|
||||||
vscode "ziglang.vscode-zig"
|
vscode "ziglang.vscode-zig"
|
||||||
|
go "github.com/go-delve/delve/cmd/dlv"
|
||||||
|
go "github.com/golangci/golangci-lint/cmd/golangci-lint"
|
||||||
|
go "golang.org/x/tools/gopls"
|
||||||
|
go "github.com/mgechev/revive"
|
||||||
|
go "honnef.co/go/tools/cmd/staticcheck"
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<'EOF'
|
||||||
|
Usage:
|
||||||
|
codex_guarded.sh [--cwd DIR] [--sandbox MODE] [--approval POLICY] [--] [codex args...]
|
||||||
|
|
||||||
|
Defaults:
|
||||||
|
--approval never
|
||||||
|
--sandbox read-only
|
||||||
|
--cwd current working directory
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Launch Codex with deterministic non-interactive safety defaults.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
CWD="$(pwd)"
|
||||||
|
SANDBOX="read-only"
|
||||||
|
APPROVAL="never"
|
||||||
|
FORWARD_ARGS=()
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--cwd)
|
||||||
|
CWD="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--sandbox)
|
||||||
|
SANDBOX="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--approval)
|
||||||
|
APPROVAL="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
FORWARD_ARGS+=("$@")
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
FORWARD_ARGS+=("$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#FORWARD_ARGS[@]} -gt 0 ]]; then
|
||||||
|
exec codex -a "$APPROVAL" -s "$SANDBOX" -C "$CWD" "${FORWARD_ARGS[@]}"
|
||||||
|
else
|
||||||
|
exec codex -a "$APPROVAL" -s "$SANDBOX" -C "$CWD"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<'EOF'
|
||||||
|
Usage:
|
||||||
|
guard_apply_patch.sh PATCH_FILE [--cwd DIR] [--allow-deletes] [--max-files N] [--max-changed-lines N] [--allow-path-prefix PREFIX ...]
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Validates a patch and applies it only if policy checks pass.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" || "${#}" -lt 1 ]]; then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
PATCH_FILE="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
CWD="$(pwd)"
|
||||||
|
VALIDATOR_ARGS=()
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--cwd)
|
||||||
|
CWD="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--allow-deletes)
|
||||||
|
VALIDATOR_ARGS+=("$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--max-files|--max-changed-lines|--allow-path-prefix)
|
||||||
|
VALIDATOR_ARGS+=("$1" "$2")
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
VALIDATOR_ARGS+=("$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ! -f "$PATCH_FILE" ]]; then
|
||||||
|
echo "Patch file not found: $PATCH_FILE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
VALIDATOR="$SCRIPT_DIR/guard_validate_patch.py"
|
||||||
|
|
||||||
|
python3 "$VALIDATOR" "$PATCH_FILE" --cwd "$CWD" "${VALIDATOR_ARGS[@]}"
|
||||||
|
|
||||||
|
echo "Validation passed. Running dry-run apply..."
|
||||||
|
patch -p1 --dry-run -d "$CWD" < "$PATCH_FILE"
|
||||||
|
|
||||||
|
echo "Applying patch..."
|
||||||
|
patch -p1 -d "$CWD" < "$PATCH_FILE"
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Generic patch validator scoped to a target working directory.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import pathlib
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_FORBIDDEN_BASENAMES = {
|
||||||
|
"Package.resolved",
|
||||||
|
"Podfile.lock",
|
||||||
|
"package-lock.json",
|
||||||
|
"yarn.lock",
|
||||||
|
"pnpm-lock.yaml",
|
||||||
|
"Cargo.lock",
|
||||||
|
"Gemfile.lock",
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFAULT_FORBIDDEN_SUFFIXES = {
|
||||||
|
".xcconfig",
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFAULT_FORBIDDEN_PATH_PATTERNS = (
|
||||||
|
re.compile(r"(^|/)\.git(/|$)"),
|
||||||
|
re.compile(r"(^|/)Info\.plist$"),
|
||||||
|
re.compile(r"(^|/)project\.pbxproj$"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args() -> argparse.Namespace:
|
||||||
|
parser = argparse.ArgumentParser(description="Validate unified diff patch by policy.")
|
||||||
|
parser.add_argument("patch_file", type=pathlib.Path)
|
||||||
|
parser.add_argument("--cwd", type=pathlib.Path, default=pathlib.Path.cwd())
|
||||||
|
parser.add_argument("--max-files", type=int, default=12)
|
||||||
|
parser.add_argument("--max-changed-lines", type=int, default=2000)
|
||||||
|
parser.add_argument("--allow-deletes", action="store_true")
|
||||||
|
parser.add_argument(
|
||||||
|
"--allow-path-prefix",
|
||||||
|
action="append",
|
||||||
|
default=[],
|
||||||
|
help="Allowed path prefix relative to --cwd. Repeatable. Defaults to all paths under --cwd.",
|
||||||
|
)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def fail(message: str) -> None:
|
||||||
|
print(f"FAIL: {message}", file=sys.stderr)
|
||||||
|
raise SystemExit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def normalize_patch_path(raw: str) -> str | None:
|
||||||
|
raw = raw.strip()
|
||||||
|
if raw == "/dev/null":
|
||||||
|
return None
|
||||||
|
if raw.startswith("a/") or raw.startswith("b/"):
|
||||||
|
raw = raw[2:]
|
||||||
|
return raw
|
||||||
|
|
||||||
|
|
||||||
|
def is_safe_relative_path(path: str) -> bool:
|
||||||
|
p = pathlib.PurePosixPath(path)
|
||||||
|
if p.is_absolute():
|
||||||
|
return False
|
||||||
|
if ".." in p.parts:
|
||||||
|
return False
|
||||||
|
if path.startswith("./"):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
args = parse_args()
|
||||||
|
if not args.patch_file.exists():
|
||||||
|
fail(f"patch file not found: {args.patch_file}")
|
||||||
|
|
||||||
|
cwd = args.cwd.resolve()
|
||||||
|
if not cwd.exists() or not cwd.is_dir():
|
||||||
|
fail(f"--cwd is not a directory: {cwd}")
|
||||||
|
|
||||||
|
text = args.patch_file.read_text(encoding="utf-8")
|
||||||
|
lines = text.splitlines()
|
||||||
|
|
||||||
|
added_lines = 0
|
||||||
|
removed_lines = 0
|
||||||
|
touched_files: list[str] = []
|
||||||
|
deleted_files: list[str] = []
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
if line.startswith("+++ "):
|
||||||
|
path = normalize_patch_path(line[4:])
|
||||||
|
if path:
|
||||||
|
touched_files.append(path)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line.startswith("+") and not line.startswith("+++"):
|
||||||
|
added_lines += 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line.startswith("-") and not line.startswith("---"):
|
||||||
|
removed_lines += 1
|
||||||
|
|
||||||
|
for match in re.finditer(r"^--- (.+)\n\+\+\+ (.+)$", text, flags=re.MULTILINE):
|
||||||
|
before = normalize_patch_path(match.group(1))
|
||||||
|
after = normalize_patch_path(match.group(2))
|
||||||
|
if before and after is None:
|
||||||
|
deleted_files.append(before)
|
||||||
|
|
||||||
|
unique_files = sorted(set(touched_files + deleted_files))
|
||||||
|
if not unique_files:
|
||||||
|
fail("no file changes detected")
|
||||||
|
|
||||||
|
if len(unique_files) > args.max_files:
|
||||||
|
fail(f"too many files changed: {len(unique_files)} > {args.max_files}")
|
||||||
|
|
||||||
|
changed_line_count = added_lines + removed_lines
|
||||||
|
if changed_line_count > args.max_changed_lines:
|
||||||
|
fail(
|
||||||
|
f"too many changed lines: {changed_line_count} > {args.max_changed_lines}"
|
||||||
|
)
|
||||||
|
|
||||||
|
allowed_prefixes = [p.strip("/") for p in args.allow_path_prefix if p.strip("/")]
|
||||||
|
|
||||||
|
for rel_path in unique_files:
|
||||||
|
if not is_safe_relative_path(rel_path):
|
||||||
|
fail(f"unsafe path in patch: {rel_path}")
|
||||||
|
|
||||||
|
if allowed_prefixes and not any(
|
||||||
|
rel_path == prefix or rel_path.startswith(prefix + "/")
|
||||||
|
for prefix in allowed_prefixes
|
||||||
|
):
|
||||||
|
fail(f"path not in allowed prefixes: {rel_path}")
|
||||||
|
|
||||||
|
basename = pathlib.PurePosixPath(rel_path).name
|
||||||
|
if basename in DEFAULT_FORBIDDEN_BASENAMES:
|
||||||
|
fail(f"forbidden file basename: {rel_path}")
|
||||||
|
|
||||||
|
if any(rel_path.endswith(s) for s in DEFAULT_FORBIDDEN_SUFFIXES):
|
||||||
|
fail(f"forbidden file suffix: {rel_path}")
|
||||||
|
|
||||||
|
if any(pattern.search(rel_path) for pattern in DEFAULT_FORBIDDEN_PATH_PATTERNS):
|
||||||
|
fail(f"forbidden file path: {rel_path}")
|
||||||
|
|
||||||
|
target_path = cwd / rel_path
|
||||||
|
try:
|
||||||
|
target_path.resolve().relative_to(cwd)
|
||||||
|
except ValueError:
|
||||||
|
fail(f"path escapes cwd scope: {rel_path}")
|
||||||
|
|
||||||
|
if deleted_files and not args.allow_deletes:
|
||||||
|
fail(
|
||||||
|
"deletions are blocked (use --allow-deletes): "
|
||||||
|
+ ", ".join(sorted(set(deleted_files)))
|
||||||
|
)
|
||||||
|
|
||||||
|
print("OK: patch passed validation")
|
||||||
|
print(f"cwd={cwd}")
|
||||||
|
print(f"files={len(unique_files)} changed_lines={changed_line_count}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Executable
BIN
Binary file not shown.
@@ -28,3 +28,5 @@
|
|||||||
auto = true
|
auto = true
|
||||||
[coderabbit]
|
[coderabbit]
|
||||||
machineId = cli/e407c8d66b9f497cb110e079e700f9e1
|
machineId = cli/e407c8d66b9f497cb110e079e700f9e1
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
|||||||
@@ -3,3 +3,4 @@
|
|||||||
|
|
||||||
|
|
||||||
.mappsrc
|
.mappsrc
|
||||||
|
.claude/
|
||||||
|
|||||||
@@ -0,0 +1,210 @@
|
|||||||
|
## where to store your database, default is your system data directory
|
||||||
|
## linux/mac: ~/.local/share/atuin/history.db
|
||||||
|
## windows: %USERPROFILE%/.local/share/atuin/history.db
|
||||||
|
db_path = "~/Sync/Atuin/history.db"
|
||||||
|
|
||||||
|
## where to store your encryption key, default is your system data directory
|
||||||
|
## linux/mac: ~/.local/share/atuin/key
|
||||||
|
## windows: %USERPROFILE%/.local/share/atuin/key
|
||||||
|
key_path = "~/Sync/Atuin/key"
|
||||||
|
|
||||||
|
## where to store your auth session token, default is your system data directory
|
||||||
|
## linux/mac: ~/.local/share/atuin/session
|
||||||
|
## windows: %USERPROFILE%/.local/share/atuin/session
|
||||||
|
# session_path = "~/.session"
|
||||||
|
|
||||||
|
## date format used, either "us" or "uk"
|
||||||
|
# dialect = "us"
|
||||||
|
|
||||||
|
## default timezone to use when displaying time
|
||||||
|
## either "l", "local" to use the system's current local timezone, or an offset
|
||||||
|
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
|
||||||
|
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
|
||||||
|
# timezone = "local"
|
||||||
|
|
||||||
|
## enable or disable automatic sync
|
||||||
|
# auto_sync = true
|
||||||
|
|
||||||
|
## enable or disable automatic update checks
|
||||||
|
# update_check = true
|
||||||
|
|
||||||
|
## address of the sync server
|
||||||
|
# sync_address = "https://api.atuin.sh"
|
||||||
|
|
||||||
|
## how often to sync history. note that this is only triggered when a command
|
||||||
|
## is ran, so sync intervals may well be longer
|
||||||
|
## set it to 0 to sync after every command
|
||||||
|
# sync_frequency = "10m"
|
||||||
|
|
||||||
|
## which search mode to use
|
||||||
|
## possible values: prefix, fulltext, fuzzy, skim
|
||||||
|
# search_mode = "fuzzy"
|
||||||
|
|
||||||
|
## which filter mode to use
|
||||||
|
## possible values: global, host, session, directory
|
||||||
|
# filter_mode = "global"
|
||||||
|
|
||||||
|
## With workspace filtering enabled, Atuin will filter for commands executed
|
||||||
|
## in any directory within a git repository tree (default: false)
|
||||||
|
# workspaces = false
|
||||||
|
|
||||||
|
## which filter mode to use when atuin is invoked from a shell up-key binding
|
||||||
|
## the accepted values are identical to those of "filter_mode"
|
||||||
|
## leave unspecified to use same mode set in "filter_mode"
|
||||||
|
# filter_mode_shell_up_key_binding = "global"
|
||||||
|
|
||||||
|
## which search mode to use when atuin is invoked from a shell up-key binding
|
||||||
|
## the accepted values are identical to those of "search_mode"
|
||||||
|
## leave unspecified to use same mode set in "search_mode"
|
||||||
|
# search_mode_shell_up_key_binding = "fuzzy"
|
||||||
|
|
||||||
|
## which style to use
|
||||||
|
## possible values: auto, full, compact
|
||||||
|
style = "auto"
|
||||||
|
|
||||||
|
## the maximum number of lines the interface should take up
|
||||||
|
## set it to 0 to always go full screen
|
||||||
|
inline_height = 0
|
||||||
|
|
||||||
|
## Invert the UI - put the search bar at the top , Default to `false`
|
||||||
|
# invert = false
|
||||||
|
|
||||||
|
## enable or disable showing a preview of the selected command
|
||||||
|
## useful when the command is longer than the terminal width and is cut off
|
||||||
|
# show_preview = false
|
||||||
|
|
||||||
|
## what to do when the escape key is pressed when searching
|
||||||
|
## possible values: return-original, return-query
|
||||||
|
# exit_mode = "return-original"
|
||||||
|
|
||||||
|
## possible values: emacs, subl
|
||||||
|
# word_jump_mode = "emacs"
|
||||||
|
|
||||||
|
## characters that count as a part of a word
|
||||||
|
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||||
|
|
||||||
|
## number of context lines to show when scrolling by pages
|
||||||
|
# scroll_context_lines = 1
|
||||||
|
|
||||||
|
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
|
||||||
|
## alt-0 .. alt-9
|
||||||
|
# ctrl_n_shortcuts = false
|
||||||
|
|
||||||
|
## default history list format - can also be specified with the --format arg
|
||||||
|
# history_format = "{time}\t{command}\t{duration}"
|
||||||
|
|
||||||
|
## prevent commands matching any of these regexes from being written to history.
|
||||||
|
## Note that these regular expressions are unanchored, i.e. if they don't start
|
||||||
|
## with ^ or end with $, they'll match anywhere in the command.
|
||||||
|
## For details on the supported regular expression syntax, see
|
||||||
|
## https://docs.rs/regex/latest/regex/#syntax
|
||||||
|
# history_filter = [
|
||||||
|
# "^secret-cmd",
|
||||||
|
# "^innocuous-cmd .*--secret=.+",
|
||||||
|
# ]
|
||||||
|
|
||||||
|
## prevent commands run with cwd matching any of these regexes from being written
|
||||||
|
## to history. Note that these regular expressions are unanchored, i.e. if they don't
|
||||||
|
## start with ^ or end with $, they'll match anywhere in CWD.
|
||||||
|
## For details on the supported regular expression syntax, see
|
||||||
|
## https://docs.rs/regex/latest/regex/#syntax
|
||||||
|
# cwd_filter = [
|
||||||
|
# "^/very/secret/area",
|
||||||
|
# ]
|
||||||
|
|
||||||
|
## Configure the maximum height of the preview to show.
|
||||||
|
## Useful when you have long scripts in your history that you want to distinguish
|
||||||
|
## by more than the first few lines.
|
||||||
|
# max_preview_height = 4
|
||||||
|
|
||||||
|
## Configure whether or not to show the help row, which includes the current Atuin
|
||||||
|
## version (and whether an update is available), a keymap hint, and the total
|
||||||
|
## amount of commands in your history.
|
||||||
|
# show_help = true
|
||||||
|
|
||||||
|
## Configure whether or not to show tabs for search and inspect
|
||||||
|
# show_tabs = true
|
||||||
|
|
||||||
|
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
|
||||||
|
## 1. AWS key id
|
||||||
|
## 2. Github pat (old and new)
|
||||||
|
## 3. Slack oauth tokens (bot, user)
|
||||||
|
## 4. Slack webhooks
|
||||||
|
## 5. Stripe live/test keys
|
||||||
|
# secrets_filter = true
|
||||||
|
|
||||||
|
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
|
||||||
|
# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
|
||||||
|
enter_accept = true
|
||||||
|
search_mode = "daemon-fuzzy"
|
||||||
|
|
||||||
|
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
|
||||||
|
## search`. If this is set to "auto", the startup keymap mode in the Atuin
|
||||||
|
## search is automatically selected based on the shell's keymap where the
|
||||||
|
## keybinding is defined. If this is set to "emacs", "vim-insert", or
|
||||||
|
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
|
||||||
|
## the specified one.
|
||||||
|
# keymap_mode = "auto"
|
||||||
|
|
||||||
|
## Cursor style in each keymap mode. If specified, the cursor style is changed
|
||||||
|
## in entering the cursor shape. Available values are "default" and
|
||||||
|
## "{blink,steady}-{block,underline,bar}".
|
||||||
|
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
|
||||||
|
|
||||||
|
# network_connect_timeout = 5
|
||||||
|
# network_timeout = 5
|
||||||
|
|
||||||
|
## Timeout (in seconds) for acquiring a local database connection (sqlite)
|
||||||
|
# local_timeout = 5
|
||||||
|
|
||||||
|
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
|
||||||
|
## Alternatively, set env NO_MOTION=true
|
||||||
|
# prefers_reduced_motion = false
|
||||||
|
|
||||||
|
[stats]
|
||||||
|
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
|
||||||
|
# common_subcommands = [
|
||||||
|
# "apt",
|
||||||
|
# "cargo",
|
||||||
|
# "composer",
|
||||||
|
# "dnf",
|
||||||
|
# "docker",
|
||||||
|
# "git",
|
||||||
|
# "go",
|
||||||
|
# "ip",
|
||||||
|
# "kubectl",
|
||||||
|
# "nix",
|
||||||
|
# "nmcli",
|
||||||
|
# "npm",
|
||||||
|
# "pecl",
|
||||||
|
# "pnpm",
|
||||||
|
# "podman",
|
||||||
|
# "port",
|
||||||
|
# "systemctl",
|
||||||
|
# "tmux",
|
||||||
|
# "yarn",
|
||||||
|
# ]
|
||||||
|
|
||||||
|
## Set commands that should be totally stripped and ignored from stats
|
||||||
|
# common_prefix = ["sudo"]
|
||||||
|
|
||||||
|
## Set commands that will be completely ignored from stats
|
||||||
|
# ignored_commands = [
|
||||||
|
# "cd",
|
||||||
|
# "ls",
|
||||||
|
# "vi"
|
||||||
|
# ]
|
||||||
|
|
||||||
|
[keys]
|
||||||
|
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
|
||||||
|
# scroll_exits = false
|
||||||
|
|
||||||
|
[sync]
|
||||||
|
# Enable sync v2 by default
|
||||||
|
# This ensures that sync v2 is enabled for new installs only
|
||||||
|
# In a later release it will become the default across the board
|
||||||
|
records = true
|
||||||
|
|
||||||
|
[daemon]
|
||||||
|
enabled = true
|
||||||
|
autostart = true
|
||||||
+5
-3
@@ -1,4 +1,4 @@
|
|||||||
theme = dark: Afterglow,light: Adwaita
|
theme = dark: Andromeda,light: 3024 Day
|
||||||
macos-secure-input-indication = true
|
macos-secure-input-indication = true
|
||||||
|
|
||||||
cursor-style = underline
|
cursor-style = underline
|
||||||
@@ -11,10 +11,12 @@ font-thicken = true
|
|||||||
selection-invert-fg-bg = true
|
selection-invert-fg-bg = true
|
||||||
|
|
||||||
window-height = 34
|
window-height = 34
|
||||||
window-width = 120
|
window-width = 110
|
||||||
window-padding-x = 5
|
window-padding-x = 5
|
||||||
window-padding-y = 5
|
window-padding-y = 5
|
||||||
window-padding-balance = true
|
window-padding-balance = true
|
||||||
|
|
||||||
background-opacity=0.95
|
background-opacity=0.98
|
||||||
background-blur=true
|
background-blur=true
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,594 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"emoji": "🎨",
|
||||||
|
"entity": "🎨",
|
||||||
|
"code": ":art:",
|
||||||
|
"description": "Improve structure / format of the code.",
|
||||||
|
"name": "art",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "⚡️",
|
||||||
|
"entity": "⚡",
|
||||||
|
"code": ":zap:",
|
||||||
|
"description": "Improve performance.",
|
||||||
|
"name": "zap",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔥",
|
||||||
|
"entity": "🔥",
|
||||||
|
"code": ":fire:",
|
||||||
|
"description": "Remove code or files.",
|
||||||
|
"name": "fire",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🐛",
|
||||||
|
"entity": "🐛",
|
||||||
|
"code": ":bug:",
|
||||||
|
"description": "Fix a bug.",
|
||||||
|
"name": "bug",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚑️",
|
||||||
|
"entity": "🚑",
|
||||||
|
"code": ":ambulance:",
|
||||||
|
"description": "Critical hotfix.",
|
||||||
|
"name": "ambulance",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "✨",
|
||||||
|
"entity": "✨",
|
||||||
|
"code": ":sparkles:",
|
||||||
|
"description": "Introduce new features.",
|
||||||
|
"name": "sparkles",
|
||||||
|
"semver": "minor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📝",
|
||||||
|
"entity": "📝",
|
||||||
|
"code": ":memo:",
|
||||||
|
"description": "Add or update documentation.",
|
||||||
|
"name": "memo",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚀",
|
||||||
|
"entity": "🚀",
|
||||||
|
"code": ":rocket:",
|
||||||
|
"description": "Deploy stuff.",
|
||||||
|
"name": "rocket",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💄",
|
||||||
|
"entity": "&#ff99cc;",
|
||||||
|
"code": ":lipstick:",
|
||||||
|
"description": "Add or update the UI and style files.",
|
||||||
|
"name": "lipstick",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🎉",
|
||||||
|
"entity": "🎉",
|
||||||
|
"code": ":tada:",
|
||||||
|
"description": "Begin a project.",
|
||||||
|
"name": "tada",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "✅",
|
||||||
|
"entity": "✅",
|
||||||
|
"code": ":white_check_mark:",
|
||||||
|
"description": "Add, update, or pass tests.",
|
||||||
|
"name": "white-check-mark",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔒️",
|
||||||
|
"entity": "🔒",
|
||||||
|
"code": ":lock:",
|
||||||
|
"description": "Fix security or privacy issues.",
|
||||||
|
"name": "lock",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔐",
|
||||||
|
"entity": "🔐",
|
||||||
|
"code": ":closed_lock_with_key:",
|
||||||
|
"description": "Add or update secrets.",
|
||||||
|
"name": "closed-lock-with-key",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔖",
|
||||||
|
"entity": "🔖",
|
||||||
|
"code": ":bookmark:",
|
||||||
|
"description": "Release / Version tags.",
|
||||||
|
"name": "bookmark",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚨",
|
||||||
|
"entity": "🚨",
|
||||||
|
"code": ":rotating_light:",
|
||||||
|
"description": "Fix compiler / linter warnings.",
|
||||||
|
"name": "rotating-light",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚧",
|
||||||
|
"entity": "🚧",
|
||||||
|
"code": ":construction:",
|
||||||
|
"description": "Work in progress.",
|
||||||
|
"name": "construction",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💚",
|
||||||
|
"entity": "💚",
|
||||||
|
"code": ":green_heart:",
|
||||||
|
"description": "Fix CI Build.",
|
||||||
|
"name": "green-heart",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "⬇️",
|
||||||
|
"entity": "⬇️",
|
||||||
|
"code": ":arrow_down:",
|
||||||
|
"description": "Downgrade dependencies.",
|
||||||
|
"name": "arrow-down",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "⬆️",
|
||||||
|
"entity": "⬆️",
|
||||||
|
"code": ":arrow_up:",
|
||||||
|
"description": "Upgrade dependencies.",
|
||||||
|
"name": "arrow-up",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📌",
|
||||||
|
"entity": "📌",
|
||||||
|
"code": ":pushpin:",
|
||||||
|
"description": "Pin dependencies to specific versions.",
|
||||||
|
"name": "pushpin",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "👷",
|
||||||
|
"entity": "👷",
|
||||||
|
"code": ":construction_worker:",
|
||||||
|
"description": "Add or update CI build system.",
|
||||||
|
"name": "construction-worker",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📈",
|
||||||
|
"entity": "📈",
|
||||||
|
"code": ":chart_with_upwards_trend:",
|
||||||
|
"description": "Add or update analytics or track code.",
|
||||||
|
"name": "chart-with-upwards-trend",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "♻️",
|
||||||
|
"entity": "♻",
|
||||||
|
"code": ":recycle:",
|
||||||
|
"description": "Refactor code.",
|
||||||
|
"name": "recycle",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "➕",
|
||||||
|
"entity": "➕",
|
||||||
|
"code": ":heavy_plus_sign:",
|
||||||
|
"description": "Add a dependency.",
|
||||||
|
"name": "heavy-plus-sign",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "➖",
|
||||||
|
"entity": "➖",
|
||||||
|
"code": ":heavy_minus_sign:",
|
||||||
|
"description": "Remove a dependency.",
|
||||||
|
"name": "heavy-minus-sign",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔧",
|
||||||
|
"entity": "🔧",
|
||||||
|
"code": ":wrench:",
|
||||||
|
"description": "Add or update configuration files.",
|
||||||
|
"name": "wrench",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔨",
|
||||||
|
"entity": "🔨",
|
||||||
|
"code": ":hammer:",
|
||||||
|
"description": "Add or update development scripts.",
|
||||||
|
"name": "hammer",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🌐",
|
||||||
|
"entity": "🌐",
|
||||||
|
"code": ":globe_with_meridians:",
|
||||||
|
"description": "Internationalization and localization.",
|
||||||
|
"name": "globe-with-meridians",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "✏️",
|
||||||
|
"entity": "",
|
||||||
|
"code": ":pencil2:",
|
||||||
|
"description": "Fix typos.",
|
||||||
|
"name": "pencil2",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💩",
|
||||||
|
"entity": "",
|
||||||
|
"code": ":poop:",
|
||||||
|
"description": "Write bad code that needs to be improved.",
|
||||||
|
"name": "poop",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "⏪️",
|
||||||
|
"entity": "⏪",
|
||||||
|
"code": ":rewind:",
|
||||||
|
"description": "Revert changes.",
|
||||||
|
"name": "rewind",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔀",
|
||||||
|
"entity": "🔀",
|
||||||
|
"code": ":twisted_rightwards_arrows:",
|
||||||
|
"description": "Merge branches.",
|
||||||
|
"name": "twisted-rightwards-arrows",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📦️",
|
||||||
|
"entity": "F4E6;",
|
||||||
|
"code": ":package:",
|
||||||
|
"description": "Add or update compiled files or packages.",
|
||||||
|
"name": "package",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "👽️",
|
||||||
|
"entity": "F47D;",
|
||||||
|
"code": ":alien:",
|
||||||
|
"description": "Update code due to external API changes.",
|
||||||
|
"name": "alien",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚚",
|
||||||
|
"entity": "F69A;",
|
||||||
|
"code": ":truck:",
|
||||||
|
"description": "Move or rename resources (e.g.: files, paths, routes).",
|
||||||
|
"name": "truck",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📄",
|
||||||
|
"entity": "F4C4;",
|
||||||
|
"code": ":page_facing_up:",
|
||||||
|
"description": "Add or update license.",
|
||||||
|
"name": "page-facing-up",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💥",
|
||||||
|
"entity": "💥",
|
||||||
|
"code": ":boom:",
|
||||||
|
"description": "Introduce breaking changes.",
|
||||||
|
"name": "boom",
|
||||||
|
"semver": "major"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🍱",
|
||||||
|
"entity": "F371",
|
||||||
|
"code": ":bento:",
|
||||||
|
"description": "Add or update assets.",
|
||||||
|
"name": "bento",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "♿️",
|
||||||
|
"entity": "♿",
|
||||||
|
"code": ":wheelchair:",
|
||||||
|
"description": "Improve accessibility.",
|
||||||
|
"name": "wheelchair",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💡",
|
||||||
|
"entity": "💡",
|
||||||
|
"code": ":bulb:",
|
||||||
|
"description": "Add or update comments in source code.",
|
||||||
|
"name": "bulb",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🍻",
|
||||||
|
"entity": "🍻",
|
||||||
|
"code": ":beers:",
|
||||||
|
"description": "Write code drunkenly.",
|
||||||
|
"name": "beers",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💬",
|
||||||
|
"entity": "💬",
|
||||||
|
"code": ":speech_balloon:",
|
||||||
|
"description": "Add or update text and literals.",
|
||||||
|
"name": "speech-balloon",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🗃️",
|
||||||
|
"entity": "🗃",
|
||||||
|
"code": ":card_file_box:",
|
||||||
|
"description": "Perform database related changes.",
|
||||||
|
"name": "card-file-box",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔊",
|
||||||
|
"entity": "🔊",
|
||||||
|
"code": ":loud_sound:",
|
||||||
|
"description": "Add or update logs.",
|
||||||
|
"name": "loud-sound",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔇",
|
||||||
|
"entity": "🔇",
|
||||||
|
"code": ":mute:",
|
||||||
|
"description": "Remove logs.",
|
||||||
|
"name": "mute",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "👥",
|
||||||
|
"entity": "👥",
|
||||||
|
"code": ":busts_in_silhouette:",
|
||||||
|
"description": "Add or update contributor(s).",
|
||||||
|
"name": "busts-in-silhouette",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚸",
|
||||||
|
"entity": "🚸",
|
||||||
|
"code": ":children_crossing:",
|
||||||
|
"description": "Improve user experience / usability.",
|
||||||
|
"name": "children-crossing",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🏗️",
|
||||||
|
"entity": "f3d7;",
|
||||||
|
"code": ":building_construction:",
|
||||||
|
"description": "Make architectural changes.",
|
||||||
|
"name": "building-construction",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📱",
|
||||||
|
"entity": "📱",
|
||||||
|
"code": ":iphone:",
|
||||||
|
"description": "Work on responsive design.",
|
||||||
|
"name": "iphone",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🤡",
|
||||||
|
"entity": "🤡",
|
||||||
|
"code": ":clown_face:",
|
||||||
|
"description": "Mock things.",
|
||||||
|
"name": "clown-face",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🥚",
|
||||||
|
"entity": "🥚",
|
||||||
|
"code": ":egg:",
|
||||||
|
"description": "Add or update an easter egg.",
|
||||||
|
"name": "egg",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🙈",
|
||||||
|
"entity": "bdfe7;",
|
||||||
|
"code": ":see_no_evil:",
|
||||||
|
"description": "Add or update a .gitignore file.",
|
||||||
|
"name": "see-no-evil",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "📸",
|
||||||
|
"entity": "📸",
|
||||||
|
"code": ":camera_flash:",
|
||||||
|
"description": "Add or update snapshots.",
|
||||||
|
"name": "camera-flash",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "⚗️",
|
||||||
|
"entity": "⚗",
|
||||||
|
"code": ":alembic:",
|
||||||
|
"description": "Perform experiments.",
|
||||||
|
"name": "alembic",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🔍️",
|
||||||
|
"entity": "🔍",
|
||||||
|
"code": ":mag:",
|
||||||
|
"description": "Improve SEO.",
|
||||||
|
"name": "mag",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🏷️",
|
||||||
|
"entity": "🏷",
|
||||||
|
"code": ":label:",
|
||||||
|
"description": "Add or update types.",
|
||||||
|
"name": "label",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🌱",
|
||||||
|
"entity": "🌱",
|
||||||
|
"code": ":seedling:",
|
||||||
|
"description": "Add or update seed files.",
|
||||||
|
"name": "seedling",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🚩",
|
||||||
|
"entity": "🚩",
|
||||||
|
"code": ":triangular_flag_on_post:",
|
||||||
|
"description": "Add, update, or remove feature flags.",
|
||||||
|
"name": "triangular-flag-on-post",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🥅",
|
||||||
|
"entity": "🥅",
|
||||||
|
"code": ":goal_net:",
|
||||||
|
"description": "Catch errors.",
|
||||||
|
"name": "goal-net",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💫",
|
||||||
|
"entity": "💫",
|
||||||
|
"code": ":dizzy:",
|
||||||
|
"description": "Add or update animations and transitions.",
|
||||||
|
"name": "dizzy",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🗑️",
|
||||||
|
"entity": "🗑",
|
||||||
|
"code": ":wastebasket:",
|
||||||
|
"description": "Deprecate code that needs to be cleaned up.",
|
||||||
|
"name": "wastebasket",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🛂",
|
||||||
|
"entity": "🛂",
|
||||||
|
"code": ":passport_control:",
|
||||||
|
"description": "Work on code related to authorization, roles and permissions.",
|
||||||
|
"name": "passport-control",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🩹",
|
||||||
|
"entity": "🩹",
|
||||||
|
"code": ":adhesive_bandage:",
|
||||||
|
"description": "Simple fix for a non-critical issue.",
|
||||||
|
"name": "adhesive-bandage",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🧐",
|
||||||
|
"entity": "🧐",
|
||||||
|
"code": ":monocle_face:",
|
||||||
|
"description": "Data exploration/inspection.",
|
||||||
|
"name": "monocle-face",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "⚰️",
|
||||||
|
"entity": "⚰",
|
||||||
|
"code": ":coffin:",
|
||||||
|
"description": "Remove dead code.",
|
||||||
|
"name": "coffin",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🧪",
|
||||||
|
"entity": "🧪",
|
||||||
|
"code": ":test_tube:",
|
||||||
|
"description": "Add a failing test.",
|
||||||
|
"name": "test-tube",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "👔",
|
||||||
|
"entity": "👔",
|
||||||
|
"code": ":necktie:",
|
||||||
|
"description": "Add or update business logic.",
|
||||||
|
"name": "necktie",
|
||||||
|
"semver": "patch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🩺",
|
||||||
|
"entity": "🩺",
|
||||||
|
"code": ":stethoscope:",
|
||||||
|
"description": "Add or update healthcheck.",
|
||||||
|
"name": "stethoscope",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🧱",
|
||||||
|
"entity": "🧱",
|
||||||
|
"code": ":bricks:",
|
||||||
|
"description": "Infrastructure related changes.",
|
||||||
|
"name": "bricks",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🧑💻",
|
||||||
|
"entity": "🧑‍💻",
|
||||||
|
"code": ":technologist:",
|
||||||
|
"description": "Improve developer experience.",
|
||||||
|
"name": "technologist",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "💸",
|
||||||
|
"entity": "💸",
|
||||||
|
"code": ":money_with_wings:",
|
||||||
|
"description": "Add sponsorships or money related infrastructure.",
|
||||||
|
"name": "money-with-wings",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🧵",
|
||||||
|
"entity": "🧵",
|
||||||
|
"code": ":thread:",
|
||||||
|
"description": "Add or update code related to multithreading or concurrency.",
|
||||||
|
"name": "thread",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "🦺",
|
||||||
|
"entity": "🦺",
|
||||||
|
"code": ":safety_vest:",
|
||||||
|
"description": "Add or update code related to validation.",
|
||||||
|
"name": "safety-vest",
|
||||||
|
"semver": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emoji": "✈️",
|
||||||
|
"entity": "✈",
|
||||||
|
"code": ":airplane:",
|
||||||
|
"description": "Improve offline support.",
|
||||||
|
"name": "airplane",
|
||||||
|
"semver": null
|
||||||
|
}
|
||||||
|
]
|
||||||
+13
-15
@@ -11,8 +11,7 @@
|
|||||||
"alignment": "left",
|
"alignment": "left",
|
||||||
"segments": [
|
"segments": [
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {
|
||||||
"cache_duration": "none",
|
|
||||||
"time_format": "15:04"
|
"time_format": "15:04"
|
||||||
},
|
},
|
||||||
"template": "\uf017 {{ .CurrentDate | date .Format }}",
|
"template": "\uf017 {{ .CurrentDate | date .Format }}",
|
||||||
@@ -21,10 +20,7 @@
|
|||||||
"style": "plain"
|
"style": "plain"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {
|
||||||
"branch_max_length": 25,
|
|
||||||
"cache_duration": "none",
|
|
||||||
"fetch_stash_count": true,
|
|
||||||
"fetch_status": true,
|
"fetch_status": true,
|
||||||
"fetch_upstream_icon": true
|
"fetch_upstream_icon": true
|
||||||
},
|
},
|
||||||
@@ -47,9 +43,7 @@
|
|||||||
"alignment": "right",
|
"alignment": "right",
|
||||||
"segments": [
|
"segments": [
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {},
|
||||||
"cache_duration": "none"
|
|
||||||
},
|
|
||||||
"template": " x{{ reason .Code }}",
|
"template": " x{{ reason .Code }}",
|
||||||
"foreground": "#b8ff75",
|
"foreground": "#b8ff75",
|
||||||
"type": "status",
|
"type": "status",
|
||||||
@@ -57,9 +51,9 @@
|
|||||||
"foreground_templates": ["{{ if gt .Code 0 }}#E06C75{{ end }}"]
|
"foreground_templates": ["{{ if gt .Code 0 }}#E06C75{{ end }}"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {
|
||||||
"always_enabled": true,
|
"always_enabled": true,
|
||||||
"cache_duration": "none",
|
|
||||||
"style": "roundrock"
|
"style": "roundrock"
|
||||||
},
|
},
|
||||||
"template": " {{ .FormattedMs }} ",
|
"template": " {{ .FormattedMs }} ",
|
||||||
@@ -75,8 +69,7 @@
|
|||||||
"alignment": "left",
|
"alignment": "left",
|
||||||
"segments": [
|
"segments": [
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {
|
||||||
"cache_duration": "none",
|
|
||||||
"style": "full"
|
"style": "full"
|
||||||
},
|
},
|
||||||
"template": "\ue5ff {{ .Path }}",
|
"template": "\ue5ff {{ .Path }}",
|
||||||
@@ -92,7 +85,7 @@
|
|||||||
"alignment": "left",
|
"alignment": "left",
|
||||||
"segments": [
|
"segments": [
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {
|
||||||
"cache_duration": "none"
|
"cache_duration": "none"
|
||||||
},
|
},
|
||||||
"template": "!",
|
"template": "!",
|
||||||
@@ -101,7 +94,7 @@
|
|||||||
"style": "plain"
|
"style": "plain"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"properties": {
|
"options": {
|
||||||
"cache_duration": "none"
|
"cache_duration": "none"
|
||||||
},
|
},
|
||||||
"template": "❯",
|
"template": "❯",
|
||||||
@@ -116,3 +109,8 @@
|
|||||||
"version": 3,
|
"version": 3,
|
||||||
"final_space": true
|
"final_space": true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,68 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
git add -A
|
# Show modified + untracked files and let user pick (multi-select)
|
||||||
gitmoji commit
|
# Use NUL-safe listing then convert to newlines for gum
|
||||||
|
selected=$(git ls-files -m -o --exclude-standard -z | tr '\0' '\n' | gum choose --no-limit) || true
|
||||||
|
|
||||||
|
if [ -z "$selected" ]; then
|
||||||
|
echo "No files selected; aborting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Stage each selected file (handle spaces/newlines safely)
|
||||||
|
while IFS= read -r file; do
|
||||||
|
# skip empty lines (defensive)
|
||||||
|
[ -n "$file" ] || continue
|
||||||
|
git add -- "$file"
|
||||||
|
done <<< "$selected"
|
||||||
|
|
||||||
|
# Helper to unstage only the files we added
|
||||||
|
unstage_added() {
|
||||||
|
if [ "${#added[@]}" -gt 0 ]; then
|
||||||
|
git reset -- "${added[@]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# If nothing is staged, abort (don't commit or push)
|
||||||
|
if ! git diff --cached --name-only | grep -q .; then
|
||||||
|
echo "No files staged after selection; aborting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Commit using gum for message/summary
|
||||||
|
# Prompt for a short summary (single-line)
|
||||||
|
SUMMARY="$(gum input --placeholder "Summary of this change" --value "")" || true
|
||||||
|
|
||||||
|
# If the user cancelled or left it empty, unstage and abort
|
||||||
|
if [ -z "$SUMMARY" ]; then
|
||||||
|
echo "No summary provided; aborting and unstaging changes."
|
||||||
|
unstage_added
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for a longer description (multi-line)
|
||||||
|
DESCRIPTION="$(gum write --placeholder "Details of this change (optional)")" || true
|
||||||
|
|
||||||
|
# Confirm before committing
|
||||||
|
if ! gum confirm "Commit with summary: \"$SUMMARY\"?"; then
|
||||||
|
echo "Commit cancelled; unstaging changes."
|
||||||
|
unstage_added
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Perform the commit (description as second -m if present)
|
||||||
|
if [ -n "$DESCRIPTION" ]; then
|
||||||
|
git commit -m "$SUMMARY" -m "$DESCRIPTION"
|
||||||
|
else
|
||||||
|
git commit -m "$SUMMARY"
|
||||||
|
fi
|
||||||
|
|
||||||
BRANCH=$(git name-rev --name-only HEAD)
|
BRANCH=$(git name-rev --name-only HEAD)
|
||||||
gum confirm "Push?" && git push origin $BRANCH
|
|
||||||
|
# Only push if a remote named "origin" exists
|
||||||
|
if git config --get remote.origin.url >/dev/null 2>&1; then
|
||||||
|
git push origin "$BRANCH"
|
||||||
|
else
|
||||||
|
echo "No remote 'origin' found; skipping git push."
|
||||||
|
fi
|
||||||
|
|||||||
@@ -29,3 +29,9 @@ ln -s -f ~/dotfiles/misc_config/ghostty ~/Library/Application\ Support/com.mitch
|
|||||||
|
|
||||||
# fastfetch
|
# fastfetch
|
||||||
ln -s -f ~/dotfiles/misc_config/fastfetch.jsonc ~/.config/fastfetch/config.jsonc
|
ln -s -f ~/dotfiles/misc_config/fastfetch.jsonc ~/.config/fastfetch/config.jsonc
|
||||||
|
|
||||||
|
# gitmoji
|
||||||
|
ln -s -f ~/dotfiles/misc_config/gitmojis.json ~/.gitmoji/gitmojis.json
|
||||||
|
|
||||||
|
# atuin
|
||||||
|
ln -s -f ~/dotfiles/misc_config/atuin.toml ~/.config/atuin/config.toml
|
||||||
|
|||||||
+40
-16
@@ -2,18 +2,16 @@
|
|||||||
"workbench.iconTheme": "charmed-icons",
|
"workbench.iconTheme": "charmed-icons",
|
||||||
"workbench.tips.enabled": false,
|
"workbench.tips.enabled": false,
|
||||||
"workbench.tree.enableStickyScroll": false,
|
"workbench.tree.enableStickyScroll": false,
|
||||||
"workbench.tree.renderIndentGuides": "none",
|
|
||||||
"workbench.tree.indent": 10,
|
"workbench.tree.indent": 10,
|
||||||
"window.systemColorTheme": "auto",
|
"window.systemColorTheme": "auto",
|
||||||
"window.autoDetectColorScheme": true,
|
"window.autoDetectColorScheme": true,
|
||||||
"workbench.editor.tabActionLocation": "left",
|
"workbench.editor.tabActionLocation": "left",
|
||||||
"workbench.preferredDarkColorTheme": "FlatUI Dark",
|
"workbench.preferredDarkColorTheme": "Ayu Mirage Bordered",
|
||||||
"explorer.decorations.colors": false,
|
"explorer.decorations.colors": false,
|
||||||
"editor.fontFamily": "'Maple Mono', monospace",
|
"editor.fontFamily": "'Maple Mono', monospace",
|
||||||
"editor.fontSize": 14,
|
"editor.fontSize": 14,
|
||||||
"editor.fontLigatures": "'calt', 'ss01', 'ss02', 'ss03', 'ss06', 'ss07', 'ss08', 'ss09', 'liga'",
|
"editor.fontLigatures": "'calt', 'ss01', 'ss02', 'ss03', 'ss06', 'ss07', 'ss08', 'ss09', 'liga'",
|
||||||
"editor.inlineSuggest.fontFamily": "'Maple Mono', monospace",
|
"editor.inlineSuggest.fontFamily": "'Maple Mono', monospace",
|
||||||
"workbench.navigationControl.enabled": false,
|
|
||||||
"editor.fontVariations": false,
|
"editor.fontVariations": false,
|
||||||
"editor.wordWrap": "on",
|
"editor.wordWrap": "on",
|
||||||
"editor.cursorStyle": "underline",
|
"editor.cursorStyle": "underline",
|
||||||
@@ -22,27 +20,26 @@
|
|||||||
"workbench.startupEditor": "none",
|
"workbench.startupEditor": "none",
|
||||||
"editor.screenReaderAnnounceInlineSuggestion": false,
|
"editor.screenReaderAnnounceInlineSuggestion": false,
|
||||||
"[typescript]": {
|
"[typescript]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"accessibility.signalOptions.volume": 0,
|
"accessibility.signalOptions.volume": 0,
|
||||||
"breadcrumbs.icons": false,
|
"breadcrumbs.icons": false,
|
||||||
"explorer.autoReveal": true,
|
"explorer.autoReveal": true,
|
||||||
"explorer.compactFolders": false,
|
"explorer.compactFolders": false,
|
||||||
"explorer.sortOrder": "type",
|
"explorer.sortOrder": "type",
|
||||||
"window.commandCenter": false,
|
|
||||||
"window.title": "${rootName}",
|
"window.title": "${rootName}",
|
||||||
"breadcrumbs.enabled": false,
|
"breadcrumbs.enabled": false,
|
||||||
"terminal.integrated.fontLigatures.enabled": true,
|
"terminal.integrated.fontLigatures.enabled": true,
|
||||||
"[javascript]": {
|
"[javascript]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"terminal.external.osxExec": "Ghostty.app",
|
"terminal.external.osxExec": "Ghostty.app",
|
||||||
"[jsonc]": {
|
"[jsonc]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"[typescriptreact]": {
|
"[typescriptreact]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"terminal.integrated.fontSize": 14,
|
"terminal.integrated.fontSize": 14,
|
||||||
"terminal.integrated.fontFamily": "'MesloLGS NF', monospace",
|
"terminal.integrated.fontFamily": "'MesloLGS NF', monospace",
|
||||||
@@ -52,7 +49,7 @@
|
|||||||
"chat.commandCenter.enabled": false,
|
"chat.commandCenter.enabled": false,
|
||||||
"codeium.enableInComments": false,
|
"codeium.enableInComments": false,
|
||||||
"[javascriptreact]": {
|
"[javascriptreact]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"editor.minimap.enabled": false,
|
"editor.minimap.enabled": false,
|
||||||
"editor.scrollbar.verticalScrollbarSize": 6,
|
"editor.scrollbar.verticalScrollbarSize": 6,
|
||||||
@@ -60,22 +57,21 @@
|
|||||||
"javascript.format.enable": false,
|
"javascript.format.enable": false,
|
||||||
"typescript.format.enable": false,
|
"typescript.format.enable": false,
|
||||||
"[astro]": {
|
"[astro]": {
|
||||||
"editor.defaultFormatter": "astro-build.astro-vscode"
|
"editor.defaultFormatter": "astro-build.astro-vscode",
|
||||||
},
|
},
|
||||||
"workbench.preferredLightColorTheme": "FlatUI",
|
"workbench.preferredLightColorTheme": "Atom One Light",
|
||||||
"discord.suppressNotifications": true,
|
"discord.suppressNotifications": true,
|
||||||
"[json]": {
|
"[json]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"[html]": {
|
"[html]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
},
|
},
|
||||||
"redhat.telemetry.enabled": false,
|
"redhat.telemetry.enabled": false,
|
||||||
"jest.runMode": "on-demand",
|
"jest.runMode": "on-demand",
|
||||||
"testing.automaticallyOpenPeekView": "failureAnywhere",
|
"testing.automaticallyOpenPeekView": "failureAnywhere",
|
||||||
"workbench.statusBar.visible": false,
|
"workbench.statusBar.visible": false,
|
||||||
"ollama-autocoder.model": "qwen2.5-coder:7b",
|
"ollama-autocoder.model": "qwen2.5-coder:7b",
|
||||||
"workbench.layoutControl.enabled": false,
|
|
||||||
"rust-analyzer.lens.run.enable": false,
|
"rust-analyzer.lens.run.enable": false,
|
||||||
"rust-analyzer.lens.debug.enable": false,
|
"rust-analyzer.lens.debug.enable": false,
|
||||||
"rust-analyzer.lens.enable": false,
|
"rust-analyzer.lens.enable": false,
|
||||||
@@ -103,6 +99,34 @@
|
|||||||
"editor.inlayHints.enabled": "offUnlessPressed",
|
"editor.inlayHints.enabled": "offUnlessPressed",
|
||||||
"prettier.documentSelectors": ["**/*.ripple"],
|
"prettier.documentSelectors": ["**/*.ripple"],
|
||||||
"[ripple]": {
|
"[ripple]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
}
|
},
|
||||||
|
"makefile.configureOnOpen": false,
|
||||||
|
"svelte.enable-ts-plugin": true,
|
||||||
|
"[svelte]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
},
|
||||||
|
"[scss]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
},
|
||||||
|
"workbench.navigationControl.enabled": false,
|
||||||
|
"workbench.layoutControl.enabled": false,
|
||||||
|
"indentRainbow.lightIndicatorStyleLineWidth": 0,
|
||||||
|
"workbench.tree.renderIndentGuides": "none",
|
||||||
|
"swift.disableSwiftPackageManagerIntegration": true,
|
||||||
|
"[swift]": {
|
||||||
|
"editor.defaultFormatter": "vknabel.vscode-swiftformat",
|
||||||
|
},
|
||||||
|
"json.schemaDownload.trustedDomains": {
|
||||||
|
"https://schemastore.azurewebsites.net/": true,
|
||||||
|
"https://raw.githubusercontent.com/": true,
|
||||||
|
"https://www.schemastore.org/": true,
|
||||||
|
"https://json.schemastore.org/": true,
|
||||||
|
"https://json-schema.org/": true,
|
||||||
|
"https://biomejs.dev": true,
|
||||||
|
},
|
||||||
|
"swiftlint.toolchainPath": "/opt/homebrew/bin/swiftlint",
|
||||||
|
"swift.disableSwiftlyInstallPrompt": true,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
"terminal.integrated.initialHint": false,
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-13
@@ -3,8 +3,8 @@
|
|||||||
"context": "Workspace",
|
"context": "Workspace",
|
||||||
"bindings": {
|
"bindings": {
|
||||||
"shift-cmd-b": "workspace::ToggleRightDock",
|
"shift-cmd-b": "workspace::ToggleRightDock",
|
||||||
"cmd-w": null
|
"cmd-w": null,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"context": "Pane",
|
"context": "Pane",
|
||||||
@@ -18,21 +18,21 @@
|
|||||||
"cmd-7": ["pane::ActivateItem", 6],
|
"cmd-7": ["pane::ActivateItem", 6],
|
||||||
"cmd-8": ["pane::ActivateItem", 7],
|
"cmd-8": ["pane::ActivateItem", 7],
|
||||||
"cmd-9": ["pane::ActivateItem", 8],
|
"cmd-9": ["pane::ActivateItem", 8],
|
||||||
"cmd-0": "pane::ActivateLastItem"
|
"cmd-0": "pane::ActivateLastItem",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"context": "Editor",
|
"context": "Editor",
|
||||||
"bindings": {
|
"bindings": {
|
||||||
"cmd-alt-right": "workspace::ActivateNextPane",
|
"cmd-alt-right": "workspace::ActivateNextPane",
|
||||||
"cmd-alt-left": "workspace::ActivatePreviousPane"
|
"cmd-alt-left": "workspace::ActivatePreviousPane",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"context": "Terminal",
|
"context": "Terminal",
|
||||||
"bindings": {
|
"bindings": {
|
||||||
"ctrl-`": "pane::CloseActiveItem"
|
"ctrl-`": "pane::CloseActiveItem",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"context": "Editor",
|
"context": "Editor",
|
||||||
@@ -40,9 +40,9 @@
|
|||||||
"cmd-w": [
|
"cmd-w": [
|
||||||
"pane::CloseActiveItem",
|
"pane::CloseActiveItem",
|
||||||
{
|
{
|
||||||
"close_pinned": false
|
"close_pinned": false,
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
+72
-44
@@ -1,63 +1,75 @@
|
|||||||
{
|
{
|
||||||
"git_panel": {
|
"cli_default_open_behavior": "new_window",
|
||||||
"dock": "left"
|
"sticky_scroll": {
|
||||||
|
"enabled": true,
|
||||||
},
|
},
|
||||||
|
"preview_tabs": {
|
||||||
|
"enable_preview_from_file_finder": true,
|
||||||
|
},
|
||||||
|
"disable_ai": true,
|
||||||
"icon_theme": "Soft Charmed Icons",
|
"icon_theme": "Soft Charmed Icons",
|
||||||
"show_edit_predictions": false,
|
"show_edit_predictions": false,
|
||||||
"base_keymap": "VSCode",
|
"base_keymap": "VSCode",
|
||||||
"close_on_file_delete": true,
|
"close_on_file_delete": true,
|
||||||
"outline_panel": {
|
"outline_panel": {
|
||||||
"dock": "right"
|
"dock": "right",
|
||||||
|
},
|
||||||
|
"title_bar": {
|
||||||
|
"show_branch_status_icon": true,
|
||||||
|
"show_user_picture": false,
|
||||||
|
"show_sign_in": false,
|
||||||
},
|
},
|
||||||
"bottom_dock_layout": "full",
|
|
||||||
"telemetry": {
|
"telemetry": {
|
||||||
"diagnostics": true,
|
"diagnostics": false,
|
||||||
"metrics": false
|
"metrics": false,
|
||||||
},
|
},
|
||||||
"agent": {
|
"agent": {
|
||||||
|
"button": false,
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"dock": "right"
|
"dock": "right",
|
||||||
},
|
},
|
||||||
"edit_predictions": {
|
"edit_predictions": {
|
||||||
|
"provider": "none",
|
||||||
"disabled_globs": [".md"],
|
"disabled_globs": [".md"],
|
||||||
"mode": "subtle"
|
"mode": "subtle",
|
||||||
},
|
},
|
||||||
"active_pane_modifiers": {
|
"active_pane_modifiers": {
|
||||||
"inactive_opacity": 0.7
|
"border_size": 0.0,
|
||||||
},
|
"inactive_opacity": 0.7,
|
||||||
"features": {
|
|
||||||
"edit_prediction_provider": "zed"
|
|
||||||
},
|
},
|
||||||
"collaboration_panel": {
|
"collaboration_panel": {
|
||||||
"button": false
|
"button": false,
|
||||||
},
|
},
|
||||||
"toolbar": {
|
"toolbar": {
|
||||||
"breadcrumbs": false,
|
|
||||||
"quick_actions": false,
|
"quick_actions": false,
|
||||||
"selections_menu": false
|
"selections_menu": false,
|
||||||
},
|
},
|
||||||
"file_finder": {
|
"file_finder": {
|
||||||
"file_icons": true
|
"file_icons": true,
|
||||||
},
|
},
|
||||||
"seed_search_query_from_cursor": "selection",
|
"seed_search_query_from_cursor": "selection",
|
||||||
"gutter": {
|
"gutter": {
|
||||||
"runnables": false
|
"runnables": false,
|
||||||
},
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"mode": "system",
|
"mode": "system",
|
||||||
"light": "Catppuccin Latte (Blur)",
|
"light": "Fleet Light",
|
||||||
"dark": "Catppuccin Macchiato (Blur) [Heavy]"
|
"dark": "Nightfox - opaque",
|
||||||
},
|
},
|
||||||
"scrollbar": {
|
"scrollbar": {
|
||||||
"show": "system",
|
"show": "system",
|
||||||
"axes": {
|
"axes": {
|
||||||
"horizontal": false,
|
"horizontal": false,
|
||||||
"vertical": true
|
"vertical": true,
|
||||||
}
|
},
|
||||||
|
},
|
||||||
|
"status_bar": {
|
||||||
|
"active_language_button": false,
|
||||||
|
"cursor_position_button": false,
|
||||||
},
|
},
|
||||||
"cursor_shape": "underline",
|
"cursor_shape": "underline",
|
||||||
"vertical_scroll_margin": 18,
|
"vertical_scroll_margin": 18,
|
||||||
"ui_font_family": "Input Mono",
|
"ui_font_family": ".SystemUIFont",
|
||||||
"ui_font_size": 15,
|
"ui_font_size": 15,
|
||||||
"buffer_font_family": "Maple Mono",
|
"buffer_font_family": "Maple Mono",
|
||||||
// "buffer_font_features": {
|
// "buffer_font_features": {
|
||||||
@@ -78,69 +90,85 @@
|
|||||||
"dock": "bottom",
|
"dock": "bottom",
|
||||||
"font_family": "Maple Mono",
|
"font_family": "Maple Mono",
|
||||||
"font_fallbacks": ["FiraCode Nerd Font Mono"],
|
"font_fallbacks": ["FiraCode Nerd Font Mono"],
|
||||||
"toolbar": { "breadcrumbs": false }
|
"toolbar": { "breadcrumbs": false },
|
||||||
},
|
},
|
||||||
"soft_wrap": "editor_width",
|
"soft_wrap": "editor_width",
|
||||||
"tabs": {
|
"tabs": {
|
||||||
|
"show_close_button": "hover",
|
||||||
"close_position": "left",
|
"close_position": "left",
|
||||||
"git_status": true,
|
"git_status": true,
|
||||||
"file_icons": true,
|
"file_icons": true,
|
||||||
"show_diagnostics": "all"
|
"show_diagnostics": "all",
|
||||||
},
|
},
|
||||||
"notification_panel": {
|
"notification_panel": {
|
||||||
"button": false
|
"button": false,
|
||||||
},
|
},
|
||||||
"tab_bar": {
|
"tab_bar": {
|
||||||
"show_nav_history_buttons": false
|
"show": true,
|
||||||
|
"show_nav_history_buttons": false,
|
||||||
},
|
},
|
||||||
"git": {
|
"git": {
|
||||||
"git_gutter": "tracked_files",
|
"git_gutter": "tracked_files",
|
||||||
"hunk_style": "unstaged_hollow"
|
"hunk_style": "unstaged_hollow",
|
||||||
|
"inline_blame": {
|
||||||
|
"show_commit_summary": true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"indent_guides": {
|
"indent_guides": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"coloring": "indent_aware"
|
"coloring": "indent_aware",
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"JSONC": {
|
"JSONC": {
|
||||||
"show_edit_predictions": false
|
"show_edit_predictions": false,
|
||||||
},
|
},
|
||||||
"Markdown": {
|
"Markdown": {
|
||||||
"show_edit_predictions": false
|
"show_edit_predictions": false,
|
||||||
},
|
},
|
||||||
"Go": {
|
"Go": {
|
||||||
"tab_size": 2
|
"tab_size": 2,
|
||||||
},
|
},
|
||||||
"Astro": {
|
"Astro": {
|
||||||
"tab_size": 2
|
"tab_size": 2,
|
||||||
}
|
},
|
||||||
|
"Swift": {
|
||||||
|
"tab_size": 2,
|
||||||
|
"format_on_save": "off",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"lsp": {
|
"lsp": {
|
||||||
"biome": {
|
"biome": {
|
||||||
"settings": {
|
"settings": {
|
||||||
"require_config_file": true
|
"require_config_file": true,
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
"project_panel": {
|
"project_panel": {
|
||||||
|
"file_icons": true,
|
||||||
|
"folder_icons": true,
|
||||||
"dock": "left",
|
"dock": "left",
|
||||||
"indent_size": 10,
|
"indent_size": 14.0,
|
||||||
"auto_fold_dirs": false,
|
"auto_fold_dirs": false,
|
||||||
"show_diagnostics": "off",
|
"show_diagnostics": "off",
|
||||||
"git_status": true,
|
"git_status": true,
|
||||||
"entry_spacing": "standard"
|
"entry_spacing": "standard",
|
||||||
|
"sticky_scroll": false,
|
||||||
|
"hide_root": true,
|
||||||
|
"indent_guides": {
|
||||||
|
"show": "never",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"file_types": {
|
"file_types": {
|
||||||
"HTML": ["hbs", "njk", "webc", "leaf"]
|
"HTML": ["hbs", "njk", "webc", "leaf"],
|
||||||
},
|
},
|
||||||
"experimental.theme_overrides": {
|
"experimental.theme_overrides": {
|
||||||
"syntax": {
|
"syntax": {
|
||||||
"comment": {
|
"comment": {
|
||||||
"font_style": "italic"
|
"font_style": "italic",
|
||||||
},
|
},
|
||||||
"keyword": {
|
"keyword": {
|
||||||
"font_style": "italic"
|
"font_style": "italic",
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,12 @@ alias cd="z"
|
|||||||
alias nv="open -a Nova"
|
alias nv="open -a Nova"
|
||||||
|
|
||||||
# git
|
# git
|
||||||
alias ptob="gh pr create -B beta"
|
alias pr="gh pr create -B"
|
||||||
alias prune-git="git remote prune origin"
|
alias prune-git="git remote prune origin"
|
||||||
|
|
||||||
# ssh
|
# ssh
|
||||||
alias macmini="ssh admin@Memory-Alpha.local"
|
alias macmini="ssh admin@Memory-Alpha.local"
|
||||||
|
alias daweb="ssh ghall@95.111.207.194"
|
||||||
|
|
||||||
# shell scripts
|
# shell scripts
|
||||||
alias dev="sh ~/dotfiles/scripts/run-dev.sh"
|
alias dev="sh ~/dotfiles/scripts/run-dev.sh"
|
||||||
@@ -22,6 +23,7 @@ alias brewfile="brew bundle dump --file=~/dotfiles/Brewfile --force --"
|
|||||||
alias installbrewfile="brew bundle install --file=~/dotfiles/Brewfile"
|
alias installbrewfile="brew bundle install --file=~/dotfiles/Brewfile"
|
||||||
|
|
||||||
# dotfiles
|
# dotfiles
|
||||||
alias config="zed ~/dotfiles"
|
alias config="bb ~/dotfiles"
|
||||||
alias linkdfs="sh ~/dotfiles/symlink_dotfiles.zsh"
|
alias linkdfs="sh ~/dotfiles/symlink_dotfiles.zsh"
|
||||||
alias cdot="sh ~/dotfiles/scripts/commit-dotfiles.sh"
|
alias cdot="sh ~/dotfiles/scripts/commit-dotfiles.sh"
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ ZSH_THEME="robbyrussell"
|
|||||||
# DISABLE_AUTO_TITLE="true"
|
# DISABLE_AUTO_TITLE="true"
|
||||||
|
|
||||||
# Uncomment the following line to enable command auto-correction.
|
# Uncomment the following line to enable command auto-correction.
|
||||||
ENABLE_CORRECTION="true"
|
# ENABLE_CORRECTION="true"
|
||||||
|
|
||||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||||
# You can also set it to another string to have that shown instead of the default red dots.
|
# You can also set it to another string to have that shown instead of the default red dots.
|
||||||
@@ -79,9 +79,10 @@ ENABLE_CORRECTION="true"
|
|||||||
gh
|
gh
|
||||||
nvm
|
nvm
|
||||||
npm
|
npm
|
||||||
gitignore
|
|
||||||
brew
|
brew
|
||||||
thefuck
|
thefuck
|
||||||
|
macos
|
||||||
|
pnpm-shell-completion
|
||||||
)
|
)
|
||||||
|
|
||||||
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
|
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
|
||||||
|
|||||||
+11
-2
@@ -1,4 +1,11 @@
|
|||||||
|
autoload -U +X bashcompinit && bashcompinit
|
||||||
|
autoload -U +X compinit && compinit
|
||||||
|
|
||||||
|
# Run brew-autoupdate
|
||||||
|
brew-autoupdate
|
||||||
|
|
||||||
eval "$(oh-my-posh init zsh --config ~/dotfiles/misc_config/ohmyposh.json)"
|
eval "$(oh-my-posh init zsh --config ~/dotfiles/misc_config/ohmyposh.json)"
|
||||||
|
eval "$(wut init)"
|
||||||
|
|
||||||
source $(brew --prefix nvm)/nvm.sh
|
source $(brew --prefix nvm)/nvm.sh
|
||||||
source <(fzf --zsh)
|
source <(fzf --zsh)
|
||||||
@@ -9,9 +16,9 @@ for conf in "$HOME/dotfiles/zsh_config/"*.zsh; do
|
|||||||
done
|
done
|
||||||
unset conf
|
unset conf
|
||||||
|
|
||||||
eval $(thefuck --alias)
|
# eval "$(wut init)"
|
||||||
|
eval "$(thefuck --alias)"
|
||||||
eval "$(zoxide init zsh)"
|
eval "$(zoxide init zsh)"
|
||||||
# eval "$(starship init zsh)"
|
|
||||||
eval "$(atuin init zsh)"
|
eval "$(atuin init zsh)"
|
||||||
|
|
||||||
# bun completions
|
# bun completions
|
||||||
@@ -24,3 +31,5 @@ fi
|
|||||||
|
|
||||||
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
|
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
|
||||||
export PATH="$PATH:$HOME/.rvm/bin"
|
export PATH="$PATH:$HOME/.rvm/bin"
|
||||||
|
|
||||||
|
. "$HOME/.atuin/bin/env"
|
||||||
|
|||||||
Reference in New Issue
Block a user