mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 18:45:22 +00:00
Compare commits
362 Commits
24.12.3
...
feat/skhd-
| Author | SHA1 | Date | |
|---|---|---|---|
| 6b26215197 | |||
| a72c8ff33a | |||
| 19d9035214 | |||
| 7ca077c852 | |||
| 48604d81d6 | |||
|
|
405e68f895 | ||
| 6d62352127 | |||
| 017d82abc5 | |||
|
|
24ad4bf5b7 | ||
| 07264c594f | |||
|
|
7b58f660ac | ||
|
|
b000f2b0c4 | ||
| 4d548687e1 | |||
| 519d8398de | |||
| 2203bb3957 | |||
|
|
ddafdfe3c9 | ||
| a3f35b2d18 | |||
| 90020a4998 | |||
| 0f806c172d | |||
|
|
e8eb9b98b2 | ||
| 7e0a88cf8f | |||
| f72f57ebf0 | |||
| b5e56e2cbb | |||
|
|
179938132c | ||
|
|
bae84c176c | ||
| be8a6761af | |||
| c348f3625f | |||
| 094f19c99c | |||
| 5a23ae8f01 | |||
|
|
ee47821089 | ||
|
|
b834ce04f7 | ||
|
|
6a62d73d7f | ||
|
|
440842ed34 | ||
|
|
d0563e4a29 | ||
|
|
bc404bfbea | ||
| 923f881725 | |||
| ccc5903290 | |||
|
|
786efc48fa | ||
| 2a11a28422 | |||
| 812a27ea61 | |||
| e73e61f01b | |||
| 314679b4fc | |||
|
|
516b27384a | ||
|
|
9e1af3053d | ||
|
|
9e4f8741b3 | ||
| c0995c1b49 | |||
| c9f1e824c3 | |||
| 3d301daeb1 | |||
| 8b4198dc90 | |||
| 66461f9b1b | |||
| 80851d1efd | |||
|
|
c457c0f3ab | ||
| 9936e4bd76 | |||
| c3a45e2653 | |||
| 506360a027 | |||
|
|
00074ec3ff | ||
|
|
7c7daf89ea | ||
|
|
267c54aa56 | ||
|
|
d72409efc0 | ||
| 3d9e0477b0 | |||
| cfab48eee0 | |||
| 624920b2ab | |||
|
|
fd82f1e36c | ||
|
|
48ec8cd7a7 | ||
|
|
3a61bd2b72 | ||
| 895b0ad353 | |||
| 3c733ec7eb | |||
| 5321ad7bd7 | |||
| 196077bea9 | |||
|
|
75147c7dd6 | ||
| f28ad41f67 | |||
| 61b66d3114 | |||
| 282f760a4f | |||
| 4a9c9b4cb9 | |||
| 16311ee5b4 | |||
| 2fddfa82c0 | |||
| 8f5f44db2d | |||
| 8ad1f5c4d0 | |||
| ac0aa1fbc0 | |||
| e8c6794ff6 | |||
| 4de9a649f0 | |||
|
|
e7f115680e | ||
| f3b4551d0c | |||
| 64725c57dc | |||
| b32ee414e3 | |||
|
|
6ea7807718 | ||
| 6a776bd3dd | |||
| 6ffe581326 | |||
| 5d476e8eed | |||
|
|
bf84c67f08 | ||
| 9cb400dd3f | |||
| fce649619a | |||
| 8b0148e468 | |||
| 9cb27eb9dc | |||
| f1ed88a98e | |||
| ec35f1cb1e | |||
| dab8504cfd | |||
| 0f9a76e36f | |||
|
|
97244d5287 | ||
| 50ea9bea89 | |||
| 688469ad8b | |||
|
|
af32914d71 | ||
|
|
840bd85232 | ||
| c81ee240bf | |||
| e215fe0a2f | |||
| 38e340ac8d | |||
| c9383f955c | |||
| 8eeaea802a | |||
| d626731736 | |||
| e459cd99e7 | |||
| 3e4391adda | |||
| a6400943d2 | |||
| 5ec8e89641 | |||
|
|
115dac4fb4 | ||
|
|
405e2d5c77 | ||
| 535925aeaf | |||
|
|
7fa29ae3d6 | ||
|
|
b1a01b6717 | ||
|
|
b9d2ee01ed | ||
| e81938a04d | |||
| 3bbcb248ba | |||
| 17194755e6 | |||
| 45f95422ef | |||
| b8f0bb570e | |||
| a0d8069455 | |||
|
|
8b1eb0a582 | ||
|
|
9cb10250c5 | ||
| 2836ed19cf | |||
| 21eb5086a9 | |||
| 56f49ab314 | |||
| 5e1a2d0dd0 | |||
| 5fdd26bf80 | |||
| 0c93dd9ad8 | |||
| 9deb613b5b | |||
|
|
bf4031c238 | ||
| 087b33cc97 | |||
|
|
361657cdec | ||
| 4855e56f3c | |||
| c119d4c20b | |||
| 4815e8678b | |||
| 31a45fed19 | |||
| 5aae400c92 | |||
| 26e11047ce | |||
| 1f0826c7e7 | |||
| 9f71f3c8aa | |||
| 5d929c6466 | |||
| afc04db93a | |||
|
|
eca0321e21 | ||
| def3372b9a | |||
|
|
5aaa177756 | ||
| 31a6ea351d | |||
| 333995c7f4 | |||
| d6b24c27a1 | |||
| 89ae4003f9 | |||
| 7a008c3ae8 | |||
| a6f89e80bd | |||
| 3d987e491e | |||
| e1729fd925 | |||
| 4e5dae4161 | |||
| 6b30ebfddb | |||
|
|
0aafae5d97 | ||
| 32cc561d20 | |||
| 784fddea64 | |||
| 0a058aaf22 | |||
| ff6876a56d | |||
| ccbd29fc40 | |||
| 9251225d3e | |||
| 241eed66f5 | |||
| 6de8e92968 | |||
| 2cdda605ef | |||
| 87a4ec8ecf | |||
| 87613d10ec | |||
| f6dc193f6a | |||
| 4adbbdb47a | |||
| bdbe10f612 | |||
| 531488001f | |||
| 4f2b47d5c3 | |||
|
|
dfbdb89aca | ||
|
|
c9489ae50f | ||
| 9fdb4cdfb0 | |||
| f4da515120 | |||
| fae9665671 | |||
| d5e34d168b | |||
| e8b43d76dc | |||
| 4f9757ad2b | |||
| 611a3bfa72 | |||
| 10da4ea372 | |||
| 68525d5ae4 | |||
|
|
7311f2576e | ||
| 721d3c0d15 | |||
| c82e183ff9 | |||
| 1b6a93650b | |||
| aa85bb0c72 | |||
| ceb452aa68 | |||
| 467a1c2ff9 | |||
| f73cd32309 | |||
| 0be2a5b879 | |||
| 8c015ac251 | |||
| 894ec12fd8 | |||
| 8cf3602de1 | |||
| 57c4f0438e | |||
|
|
02907d6a6b | ||
|
|
127edd1b2c | ||
|
|
76dc53b50a | ||
| f88a5298b2 | |||
| b436472bbb | |||
| 4e4a2eaab1 | |||
| d59204f25f | |||
| b299e3df1e | |||
| 5bcc06d53b | |||
|
|
7c09a7ff74 | ||
| 88efedf26b | |||
|
|
cdd68748e0 | ||
|
|
f8ff2699e6 | ||
| c5e06888b8 | |||
|
|
4f138eee73 | ||
|
|
90258e5105 | ||
| efc53fc9bf | |||
|
|
f62c17d940 | ||
|
|
fb15b93887 | ||
|
|
222276486a | ||
|
|
4446d59e73 | ||
| a22709a0f0 | |||
| 76598ad33b | |||
| 56ccb7c136 | |||
|
|
b6d933d018 | ||
| f9856a27b9 | |||
| b36b52ad57 | |||
| 1e60ccf49b | |||
|
|
9ca9439b9a | ||
| 6d30ae7e84 | |||
| 031e124663 | |||
| bb50c9fe18 | |||
| 8e608de501 | |||
|
|
8917b7736b | ||
| 18ff879f1d | |||
| c5a258d7be | |||
| 7525f1f71d | |||
| 3b665bdba0 | |||
| 99477364bd | |||
|
|
629fdf6d4c | ||
| 1288599b1f | |||
| be3a68fecb | |||
| 101e4da1d6 | |||
| 23430a609a | |||
| bb0d56e403 | |||
| d3b08bdf4f | |||
| e1ec501c55 | |||
| f92c3407f0 | |||
| b5971439b6 | |||
| 8ea8a2797a | |||
| b0f9222482 | |||
| 825ccc1031 | |||
| dab7a8a38a | |||
| 1dbc7ae5cd | |||
| 7038da568e | |||
| bfcaa26070 | |||
| f6488aecce | |||
| ad166e8012 | |||
| 2a76a414a0 | |||
| bb8ddf0bba | |||
| bf3e746010 | |||
|
|
b9957e4f0e | ||
| e1deba4ccf | |||
| 36e4de3035 | |||
| 3eab1faeab | |||
| 1eb4098646 | |||
| f7db8cae15 | |||
| 97dd3dc21d | |||
| 6da6797f1b | |||
|
|
88356f1392 | ||
| 174bb842e9 | |||
| f6e7590118 | |||
| 498996a6e2 | |||
| 0961985fb4 | |||
| 293452604d | |||
|
|
9582f18c7d | ||
| 051e3604ee | |||
| 09d62dd159 | |||
| 8a3763e168 | |||
| c37793f649 | |||
| 7bc7230990 | |||
| 067df4e34b | |||
| 4d28499423 | |||
| b685af82fb | |||
|
|
b8a4b82431 | ||
| 0b03acebd8 | |||
| d172b86cb8 | |||
| f910dfb9ac | |||
| ee95d57ba0 | |||
| f8a317f3c7 | |||
| 3762e10932 | |||
| afda96902b | |||
| 3060b6ad66 | |||
|
|
4f154cf509 | ||
| 863d803483 | |||
| 07bb2b56d1 | |||
| 84a753100e | |||
| c8b01f3fda | |||
| 8e6a110aac | |||
| a8baa1671f | |||
| 2ccdd042f6 | |||
|
|
8cf43ed555 | ||
| e22094e0da | |||
| 6186c5cba4 | |||
| c453dcbf84 | |||
| 4daaa62aed | |||
| f56d5682d1 | |||
| 439638b686 | |||
| a8a473a46d | |||
| eb91a43bbd | |||
|
|
193fae662e | ||
|
|
117ca1a944 | ||
| 1f1a6d42ad | |||
| cca265cd99 | |||
| cc6abb53ba | |||
| ab34c148a6 | |||
|
|
910b29ed9f | ||
| 3fb0a75a62 | |||
|
|
f73abb508b | ||
|
|
1dd3d952cf | ||
| 1ffd6e1569 | |||
| a76033a48a | |||
| 34dc18883e | |||
| 832d8b94f3 | |||
| c40eb765f8 | |||
|
|
1bb7e9076b | ||
|
|
17821dfefa | ||
| 19327947ed | |||
| 2356fc4c61 | |||
| 45219deccb | |||
| 5471aba1a4 | |||
|
|
6f6ee3611c | ||
|
|
d8f9cdf265 | ||
| abb6de05be | |||
| 60ef48e918 | |||
| e58c79a3c3 | |||
| d47f21286d | |||
| 3f108c9353 | |||
|
|
4a68146786 | ||
|
|
cf79e61943 | ||
| 43dcb303a0 | |||
| 1b03f0bbd6 | |||
| 8a52c9a97e | |||
| 8e84c3aef7 | |||
| acd2f7fc6d | |||
| 1e4aa1558a | |||
| b314c0ba76 | |||
| ece46561c4 | |||
| 196d217c34 | |||
| 7d2fc55791 | |||
| 74fb12f093 | |||
|
|
d7988bcad7 | ||
| 320ae35dcd | |||
| 0964253be5 | |||
|
|
f3f7ecc522 | ||
|
|
b88de0c3ae | ||
| c5e6860595 | |||
| b5a3c34fc3 | |||
| 87c89cf828 | |||
|
|
8d57c9425e | ||
|
|
cfe97d81a7 |
@@ -8,10 +8,16 @@ indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.fish]
|
||||
max_line_length = 80
|
||||
|
||||
[*.md]
|
||||
max_line_length = 100
|
||||
|
||||
[*.php]
|
||||
[*.lua]
|
||||
max_line_length = 90
|
||||
|
||||
[*.{php,fish}]
|
||||
indent_size = 4
|
||||
|
||||
[.git{ignore,modules}]
|
||||
@@ -23,6 +29,8 @@ indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
||||
indent_size = 2
|
||||
tab_width = 2
|
||||
shell_variant = bash # --language-variant
|
||||
binary_next_line = true
|
||||
switch_case_indent = true # --case-indent
|
||||
@@ -34,5 +42,5 @@ function_next_line = true # --func-next-line
|
||||
# such as "shfmt -l -w .". When formatting files directly,
|
||||
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh",
|
||||
# the ignore logic is applied only when the --apply-ignore flag is given.
|
||||
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**}]
|
||||
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**,config/tmux/plugins/**}]
|
||||
ignore = true
|
||||
|
||||
45
.gitattributes
vendored
45
.gitattributes
vendored
@@ -1,4 +1,4 @@
|
||||
## GITATTRIBUTES FOR WEB PROJECTS
|
||||
## GITATTRIBUTES
|
||||
#
|
||||
# These settings are for any web project.
|
||||
#
|
||||
@@ -20,20 +20,23 @@
|
||||
*.bat text eol=crlf
|
||||
*.cmd text eol=crlf
|
||||
*.coffee text
|
||||
*.css text diff=css
|
||||
*.htm text diff=html
|
||||
*.html text diff=html
|
||||
*.css text diff=css eol=lf
|
||||
*.fish text diff=shell eol=lf
|
||||
*.htm text diff=html eol=lf
|
||||
*.html text diff=html eol=lf
|
||||
*.inc text
|
||||
*.ini text
|
||||
*.js text
|
||||
*.json text
|
||||
*.jsx text
|
||||
*.less text
|
||||
*.lua text diff=lua eol=lf
|
||||
*.ls text
|
||||
*.map text -diff
|
||||
*.od text
|
||||
*.onlydata text
|
||||
*.php text diff=php
|
||||
*.plist text eol=lf
|
||||
*.pl text
|
||||
*.ps1 text eol=crlf
|
||||
*.py text diff=python
|
||||
@@ -41,15 +44,18 @@
|
||||
*.sass text
|
||||
*.scm text
|
||||
*.scss text diff=css
|
||||
*.sh text eol=lf
|
||||
*.sh text eol=lf diff=shell
|
||||
.husky/* text eol=lf
|
||||
*.sql text
|
||||
*.styl text
|
||||
*.tag text
|
||||
*.tmux text eol=lf diff=tmux
|
||||
*.ts text
|
||||
*.tsx text
|
||||
*.vim text eol=lf
|
||||
*.xml text
|
||||
*.xhtml text diff=html
|
||||
*.zsh text diff=zsh eol=lf
|
||||
|
||||
# Docker
|
||||
Dockerfile text
|
||||
@@ -68,6 +74,7 @@ Dockerfile text
|
||||
AUTHORS text
|
||||
CHANGELOG text
|
||||
CHANGES text
|
||||
CODEOWNERS text
|
||||
CONTRIBUTING text
|
||||
COPYING text
|
||||
copyright text
|
||||
@@ -105,6 +112,8 @@ TODO text
|
||||
*.config text
|
||||
.editorconfig text
|
||||
.env text
|
||||
*.env text
|
||||
*.env.* text
|
||||
.gitattributes text
|
||||
.gitconfig text
|
||||
.htaccess text
|
||||
@@ -208,15 +217,37 @@ Procfile text
|
||||
|
||||
*.gitignore text
|
||||
*.gitkeep text
|
||||
.gitattributes export-ignore
|
||||
.gitattributes text export-ignore
|
||||
*.gitattributes text export-ignore
|
||||
.gitmodules text export-ignore
|
||||
*.gitmodules text export-ignore
|
||||
**/.gitignore export-ignore
|
||||
**/.gitkeep export-ignore
|
||||
|
||||
# Repo specials
|
||||
local/bin/* text eol=lf
|
||||
local/bin/* text eol=lf diff=shell
|
||||
local/bin/*.md text eol=lf diff=markdown
|
||||
config/antigen.zsh text
|
||||
git/* text
|
||||
**/git/* text
|
||||
**/alias text
|
||||
ssh/* text
|
||||
ssh/shared.d/* text
|
||||
ssh/local.d/* text
|
||||
|
||||
# Auto-generated rules - 2025-04-16 10:28:04
|
||||
# Shell scripts detected by content
|
||||
install text eol=lf diff=shell
|
||||
|
||||
# File extension-based rules
|
||||
*.1 text eol=lf
|
||||
*.applescript text eol=lf
|
||||
*.d/work-git text eol=lf
|
||||
*.dirs text eol=lf
|
||||
*.example text eol=lf
|
||||
*.itermcolors text eol=lf
|
||||
*.locale text eol=lf
|
||||
*.python-version text eol=lf
|
||||
*.snippets text eol=lf
|
||||
*.theme text eol=lf
|
||||
*.yamlfmt text eol=lf
|
||||
|
||||
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* @ivuorinen
|
||||
18
.github/workflows/changelog.yml
vendored
18
.github/workflows/changelog.yml
vendored
@@ -1,18 +1,32 @@
|
||||
---
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Debug Changelog # Workflow name displayed on GitHub
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
debug-changelog:
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Create changelog text
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@v1
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: 'Echo results'
|
||||
id: output-changelog
|
||||
run: |
|
||||
|
||||
30
.github/workflows/linters.yml
vendored
30
.github/workflows/linters.yml
vendored
@@ -1,29 +1,49 @@
|
||||
---
|
||||
name: reviewdog
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Reviewdog
|
||||
|
||||
on: [push]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
linters:
|
||||
name: Linters
|
||||
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
|
||||
- name: GitHub Actions
|
||||
uses: reviewdog/action-actionlint@v1
|
||||
uses: reviewdog/action-actionlint@a5524e1c19e62881d79c1f1b9b6f09f16356e281 # v1.65.2
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
|
||||
- name: detect-secrets
|
||||
uses: reviewdog/action-detect-secrets@master
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
|
||||
- name: markdownlint
|
||||
uses: reviewdog/action-markdownlint@v0
|
||||
uses: reviewdog/action-markdownlint@3667398db9118d7e78f7a63d10e26ce454ba5f58 # v0.26.2
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
|
||||
- name: shfmt
|
||||
uses: reviewdog/action-shfmt@v1
|
||||
uses: reviewdog/action-shfmt@d8f080930b9be5847b4f97e9f4122b81a82aaeac # v1.0.4
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
shfmt_flags: |
|
||||
|
||||
28
.github/workflows/new-release.yml
vendored
28
.github/workflows/new-release.yml
vendored
@@ -1,38 +1,48 @@
|
||||
---
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Release Daily State
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
new-daily-release:
|
||||
runs-on: self-hosted
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
permissions: write-all
|
||||
|
||||
outputs:
|
||||
created: ${{ steps.daily-version.outputs.created }}
|
||||
version: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Create tag if necessary
|
||||
uses: fregante/daily-version-action@v2
|
||||
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
|
||||
id: daily-version
|
||||
|
||||
- name: Create changelog text
|
||||
if: steps.daily-version.outputs.created
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@v1
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: actions/create-release@latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
release_name: Release ${{ steps.daily-version.outputs.version }}
|
||||
name: Release ${{ steps.daily-version.outputs.version }}
|
||||
body: ${{ steps.changelog.outputs.changes }}
|
||||
|
||||
27
.github/workflows/pre-commit-autoupdate.yml
vendored
27
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -1,23 +1,38 @@
|
||||
---
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Pre-commit autoupdate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: '0 4 * * 1,4'
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
auto-update:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5.3.0
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||
|
||||
- run: pip install pre-commit && pre-commit autoupdate
|
||||
- uses: peter-evans/create-pull-request@v7
|
||||
|
||||
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: update/pre-commit-hooks
|
||||
title: "chore: update pre-commit hooks"
|
||||
commit-message: "chore: update pre-commit hooks"
|
||||
title: 'chore: update pre-commit hooks'
|
||||
commit-message: 'chore: update pre-commit hooks'
|
||||
body: Update versions of pre-commit hooks to latest version.
|
||||
|
||||
10
.github/workflows/semantic-pr.yml
vendored
10
.github/workflows/semantic-pr.yml
vendored
@@ -1,4 +1,5 @@
|
||||
---
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Semantic PR
|
||||
|
||||
on:
|
||||
@@ -8,11 +9,18 @@ on:
|
||||
- edited
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
semantic-pr:
|
||||
runs-on: self-hosted
|
||||
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v5.5.3
|
||||
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
|
||||
32
.github/workflows/sync-labels.yml
vendored
Normal file
32
.github/workflows/sync-labels.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Sync labels
|
||||
|
||||
# yamllint disable-line rule:truthy
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- .github/workflows/sync-labels.yml
|
||||
- .github/labels.yml
|
||||
schedule:
|
||||
- cron: '34 5 * * *'
|
||||
workflow_call:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
SyncLabels:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: ivuorinen/actions/sync-labels@main
|
||||
45
.github/workflows/update-submodules.yml
vendored
45
.github/workflows/update-submodules.yml
vendored
@@ -1,37 +1,54 @@
|
||||
---
|
||||
# yaml-language-server: https://json.schemastore.org/github-workflow.json
|
||||
name: Update submodules
|
||||
|
||||
on:
|
||||
schedule: [{ cron: 0 3 * * * }]
|
||||
schedule:
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: '0 4 * * 1'
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
update-submodules:
|
||||
permissions:
|
||||
contents: write
|
||||
issues: write
|
||||
pull-requests: write
|
||||
runs-on: self-hosted
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
fetch-depth: 2
|
||||
token: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
- name: Config Git User
|
||||
run: |
|
||||
git config --global user.name "${{ github.actor }}"
|
||||
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
||||
|
||||
- name: Update submodules
|
||||
run: |
|
||||
if git commit -am"chore(git): Update submodules (automated)
|
||||
|
||||
$(git submodule --quiet foreach \
|
||||
'tag="$(git describe --tags --abbrev=0 origin/HEAD)"
|
||||
git submodule sync
|
||||
git submodule foreach --quiet '
|
||||
tag="$(git describe --tags --abbrev=0 origin/HEAD)"
|
||||
if [ "$(git describe --tags)" != "$tag" ]; then
|
||||
git checkout --quiet "$tag"
|
||||
echo "$name" "$tag"
|
||||
fi')"
|
||||
then
|
||||
echo "$name updated to $tag"
|
||||
fi
|
||||
'
|
||||
|
||||
if git diff --quiet; then
|
||||
echo "No updates for submodules."
|
||||
else
|
||||
git add .
|
||||
git commit -m "chore(git): Update submodules (automated)"
|
||||
git show --raw
|
||||
git push
|
||||
fi
|
||||
|
||||
61
.gitignore
vendored
61
.gitignore
vendored
@@ -1,32 +1,51 @@
|
||||
Brewfile.lock.json
|
||||
lazy-lock.json
|
||||
config/nvim/lazy-lock.json
|
||||
*.log
|
||||
!.gitkeep
|
||||
*-secret
|
||||
*.bak
|
||||
*.log
|
||||
*.socket
|
||||
*.swp
|
||||
*.old
|
||||
*cache
|
||||
.env
|
||||
.idea
|
||||
.nfs*
|
||||
.vscode
|
||||
Brewfile.lock.json
|
||||
antidote_plugins.zsh
|
||||
config/alacritty/theme-active.toml
|
||||
config/cheat/cheatsheets/pure-bash-bible/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/git/credentials
|
||||
config/npm/npmrc
|
||||
config/zsh/.zcompdump
|
||||
config/alacritty/theme-active.toml
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
!.gitkeep
|
||||
.env
|
||||
local/share/fonts/*
|
||||
node_modules
|
||||
.nfs*
|
||||
*.socket
|
||||
iTermServer-*
|
||||
lock
|
||||
config/iterm2/AppSupport
|
||||
config/gnupg/S.*
|
||||
config/gnupg/s
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/gnupg/s
|
||||
config/iterm2/AppSupport
|
||||
config/npm/npmrc
|
||||
config/nvim/lazy-lock.json
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
antidote_plugins.zsh
|
||||
|
||||
config/git/local.d/*
|
||||
!config/git/local.d/.gitkeep
|
||||
config/vim/fzf
|
||||
config/vim/plugged/*
|
||||
config/zed/*
|
||||
!config/zed/settings.json
|
||||
config/zsh/.zcompdump
|
||||
iTermServer-*
|
||||
lazy-lock.json
|
||||
local/share/fonts/*
|
||||
local/bin/asdf/plugins/*
|
||||
lock
|
||||
node_modules
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
config/fish/fish_variables
|
||||
**/exports.secret.fish
|
||||
**/exports-secret.fish
|
||||
config/fish/completions/asdf.fish
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/gh/hosts.yml
|
||||
dependency-check-report.html
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
|
||||
27
.gitmodules
vendored
27
.gitmodules
vendored
@@ -1,4 +1,4 @@
|
||||
# vim: set expandtab:
|
||||
# vim: noexpandtab filetype=gitconfig
|
||||
[submodule "dotbot"]
|
||||
path = tools/dotbot
|
||||
url = https://github.com/anishathalye/dotbot.git
|
||||
@@ -23,44 +23,63 @@
|
||||
path = config/tmux/plugins/tmux-continuum
|
||||
url = https://github.com/tmux-plugins/tmux-continuum
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-sensible"]
|
||||
path = config/tmux/plugins/tmux-sensible
|
||||
url = https://github.com/tmux-plugins/tmux-sensible.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-sessionist"]
|
||||
path = config/tmux/plugins/tmux-sessionist
|
||||
url = https://github.com/tmux-plugins/tmux-sessionist.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-yank"]
|
||||
path = config/tmux/plugins/tmux-yank
|
||||
url = https://github.com/tmux-plugins/tmux-yank.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-window-name"]
|
||||
path = config/tmux/plugins/tmux-window-name
|
||||
url = https://github.com/ivuorinen/tmux-window-name.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "dotbot-pip"]
|
||||
path = tools/dotbot-pip
|
||||
url = https://github.com/sobolevn/dotbot-pip.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-suspend"]
|
||||
path = config/tmux/plugins/tmux-suspend
|
||||
url = https://github.com/MunifTanjim/tmux-suspend.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-mode-indicator"]
|
||||
path = config/tmux/plugins/tmux-mode-indicator
|
||||
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-current-pane-hostname"]
|
||||
path = config/tmux/plugins/tmux-current-pane-hostname
|
||||
url = https://github.com/soyuka/tmux-current-pane-hostname.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "cheat-tldr"]
|
||||
path = config/cheat/cheatsheets/tldr
|
||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-dark-notify"]
|
||||
path = config/tmux/plugins/tmux-dark-notify
|
||||
url = https://github.com/erikw/tmux-dark-notify.git
|
||||
[submodule "asdf"]
|
||||
path = local/bin/asdf
|
||||
url = https://github.com/asdf-vm/asdf.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "antidote"]
|
||||
path = tools/antidote
|
||||
url = https://github.com/mattmc3/antidote.git
|
||||
shallow = true
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-resurrect"]
|
||||
path = config/tmux/plugins/tmux-resurrect
|
||||
url = https://github.com/tmux-plugins/tmux-resurrect.git
|
||||
|
||||
3
.ignore
3
.ignore
@@ -1,7 +1,10 @@
|
||||
**/__pycache__/**
|
||||
.git/**
|
||||
config/cheat/cheatsheets/community/**
|
||||
config/tmux/plugins/**
|
||||
node_modules
|
||||
tools/antidote/**
|
||||
tools/dotbot-brew/**
|
||||
tools/dotbot-include/**
|
||||
tools/dotbot/**
|
||||
*.pyc
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
{
|
||||
"diagnostics.globals": [
|
||||
"vim"
|
||||
]
|
||||
}
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# only care about files that are directly under our control
|
||||
config/cheat/cheatsheets/community/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
local/bin/asdf/*
|
||||
tools/*
|
||||
|
||||
@@ -2,10 +2,14 @@ repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: requirements-txt-fixer
|
||||
- id: detect-aws-credentials
|
||||
- id: detect-private-key
|
||||
- id: trailing-whitespace
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- id: check-executables-have-shebangs
|
||||
- id: check-shebang-scripts-are-executable
|
||||
- id: check-symlinks
|
||||
- id: check-toml
|
||||
@@ -19,32 +23,43 @@ repos:
|
||||
args: [--autofix, --no-sort-keys]
|
||||
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.43.0
|
||||
rev: v0.45.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [-c, .markdownlint.yaml, --fix]
|
||||
args: [-c, .markdownlint.json, --fix]
|
||||
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.35.1
|
||||
rev: v1.37.1
|
||||
hooks:
|
||||
- id: yamllint
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v4.0.0-alpha.8
|
||||
hooks:
|
||||
- id: prettier
|
||||
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.10.0.1
|
||||
- repo: https://github.com/koalaman/shellcheck-precommit
|
||||
rev: v0.10.0
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
|
||||
- repo: https://github.com/scop/pre-commit-shfmt
|
||||
rev: v3.10.0-2
|
||||
rev: v3.11.0-1
|
||||
hooks:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.4
|
||||
rev: v1.7.7
|
||||
hooks:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||
rev: 41.1.4
|
||||
hooks:
|
||||
- id: renovate-config-validator
|
||||
|
||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||
rev: v2.1.0
|
||||
hooks:
|
||||
- id: stylua # or stylua-system / stylua-github
|
||||
|
||||
- repo: https://github.com/hugoh/pre-commit-fish.git
|
||||
rev: v1.2
|
||||
hooks:
|
||||
- id: fish_syntax
|
||||
- id: fish_indent
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
# vim: ft=gitignore
|
||||
.mypy_cache/*
|
||||
Brewfile.lock.json
|
||||
config/cheat/cheatsheets/community
|
||||
config/cheat/cheatsheets/tldr
|
||||
config/fzf/*
|
||||
config/nvim-kickstart/*
|
||||
config/nvim/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
config/zsh/*
|
||||
lazy-lock.json
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools/antidote/*
|
||||
tools/dotbot*
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.13.0
|
||||
3.13.5
|
||||
|
||||
@@ -24,3 +24,7 @@ disable=SC1091
|
||||
# SC2174: When used with -p, -m only applies to the deepest directory.
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2174
|
||||
disable=SC2174
|
||||
|
||||
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
|
||||
# https://www.shellcheck.net/wiki/SC2016
|
||||
disable=SC2016
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
git submodule sync --recursive
|
||||
|
||||
# dotbot and plugins
|
||||
git submodule add --name dotbot \
|
||||
-f https://github.com/anishathalye/dotbot.git tools/dotbot
|
||||
@@ -15,18 +17,17 @@ git submodule add --name cheat-community \
|
||||
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||
git submodule add --name cheat-tldr \
|
||||
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
|
||||
git submodule add --name asdf \
|
||||
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
|
||||
git submodule add --name antidote \
|
||||
--depth 1 \
|
||||
-f https://github.com/mattmc3/antidote.git tools/antidote \
|
||||
|
||||
-f https://github.com/mattmc3/antidote.git tools/antidote
|
||||
|
||||
# tmux plugin manager and plugins
|
||||
git submodule add --name tmux/tmux-continuum \
|
||||
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
|
||||
git submodule add --name tmux/tmux-mode-indicator \
|
||||
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
|
||||
git submodule add --name tmux/tmux-resurrect \
|
||||
-f https://github.com/tmux-plugins/tmux-resurrect.git config/tmux/plugins/tmux-resurrect
|
||||
git submodule add --name tmux/tmux-sensible \
|
||||
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
|
||||
git submodule add --name tmux/tmux-sessionist \
|
||||
@@ -44,17 +45,28 @@ git submodule add --name tmux/tmux-dark-notify \
|
||||
|
||||
# Takes submodules and sets them to ignore all changes
|
||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||
git config "submodule.${MODULE}.ignore" all
|
||||
echo "Ignoring submodule changes for submodule.${MODULE}..."
|
||||
git config "submodule.${MODULE}.ignore" "dirty"
|
||||
done
|
||||
|
||||
# Mark certain repositories shallow
|
||||
git config -f .gitmodules submodule.antidote.shallow true
|
||||
|
||||
# remove old submodules
|
||||
[ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm
|
||||
[ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux
|
||||
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
|
||||
[ -d "config/tmux/plugins/tmux-resurrect" ] && rm -rf config/tmux/plugins/tmux-resurrect
|
||||
[ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab
|
||||
[ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap
|
||||
[ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart
|
||||
folders=(
|
||||
"config/tmux/plugins/tpm"
|
||||
"config/tmux/plugins/tmux"
|
||||
"config/tmux/plugins/tmux-menus"
|
||||
"tools/dotbot-crontab"
|
||||
"tools/dotbot-snap"
|
||||
"config/nvim-kickstart"
|
||||
"local/bin/asdf"
|
||||
"local/asdf"
|
||||
"tools/dotbot-asdf"
|
||||
)
|
||||
|
||||
for folder in "${folders[@]}"; do
|
||||
[ -d "$folder" ] \
|
||||
&& rm -rf "$folder" \
|
||||
&& msgr run_done "Removed old submodule $folder"
|
||||
done
|
||||
|
||||
@@ -7,6 +7,10 @@ export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
|
||||
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
|
||||
fi
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.bash
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||
source "${DOTFILES}/config/fzf/fzf.bash"
|
||||
@@ -21,3 +25,6 @@ x-have antidot && {
|
||||
PROMPT_DIRTRIM=3
|
||||
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
|
||||
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
export PATH="$PATH:$HOME/.lmstudio/bin"
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
use node
|
||||
use asdf
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"work": [
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ismo.vuorinen@vincit.fi"
|
||||
"value": "ismo.vuorinen@svea.com"
|
||||
},
|
||||
{
|
||||
"key": "user.name",
|
||||
@@ -31,4 +31,4 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
6
base/ignore
Normal file
6
base/ignore
Normal file
@@ -0,0 +1,6 @@
|
||||
Applications/
|
||||
Library/
|
||||
Movies/
|
||||
Music/
|
||||
Pictures/
|
||||
Google Drive/
|
||||
@@ -1 +1 @@
|
||||
lts/*
|
||||
v22.14.0
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
asdf-plugin-manager 1.4.0
|
||||
golang 1.23.3
|
||||
ruby 3.3.4
|
||||
rust 1.82.0
|
||||
direnv 2.35.0
|
||||
fd 10.2.0
|
||||
1password-cli 2.30.3
|
||||
age 1.2.0
|
||||
bottom 0.10.2
|
||||
dotenv-linter 3.3.0
|
||||
editorconfig-checker 2.8.0
|
||||
github-cli 2.61.0
|
||||
hadolint 2.12.0
|
||||
kubectl 1.31.2
|
||||
pre-commit 4.0.1
|
||||
ripgrep 14.1.1
|
||||
shellcheck 0.10.0
|
||||
shfmt 3.10.0
|
||||
terragrunt 0.68.8
|
||||
tf-summarize 0.3.13
|
||||
yamllint 1.35.1
|
||||
yq 4.44.3
|
||||
bats 1.11.0
|
||||
gitleaks 8.18.4
|
||||
delta 0.18.1
|
||||
eza 0.20.8
|
||||
sops 3.9.1
|
||||
15
base/zshrc
15
base/zshrc
@@ -12,12 +12,16 @@ export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$L
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
|
||||
|
||||
# zsh completions directory
|
||||
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
|
||||
|
||||
# Add zsh completions to FPATH, compinit will be called later
|
||||
FPATH="$ZSH_COMPLETIONS:$FPATH"
|
||||
|
||||
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
|
||||
source "$DOTFILES/config/zsh/antidote.zsh"
|
||||
# source "$DOTFILES/config/zsh/prompt.zsh"
|
||||
|
||||
# Function to source FZF configuration
|
||||
source_fzf_config()
|
||||
@@ -52,3 +56,10 @@ x-have antidot && eval "$(antidot init)"
|
||||
autoload -Uz compinit bashcompinit
|
||||
compinit -d $ZSH_COMPDUMP
|
||||
bashcompinit
|
||||
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
export P10K_CONFIG="$DOTFILES/config/zsh/p10k.zsh"
|
||||
[[ ! -f "$P10K_CONFIG" ]] || source "$P10K_CONFIG"
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
export PATH="$PATH:$HOME/.lmstudio/bin"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
--container-architecture linux/amd64
|
||||
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
||||
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
|
||||
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
|
||||
|
||||
251
config/aerospace/aerospace.toml
Normal file
251
config/aerospace/aerospace.toml
Normal file
@@ -0,0 +1,251 @@
|
||||
# Start AeroSpace at login
|
||||
start-at-login = false
|
||||
|
||||
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
|
||||
enable-normalization-flatten-containers = true
|
||||
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
|
||||
# The 'accordion-padding' specifies the size of accordion padding
|
||||
# You can set 0 to disable the padding feature
|
||||
accordion-padding = 10
|
||||
|
||||
# Possible values: tiles|accordion
|
||||
default-root-container-layout = 'tiles'
|
||||
|
||||
# Possible values: horizontal|vertical|auto
|
||||
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
|
||||
# tall monitor (anything higher than wide) gets vertical orientation
|
||||
default-root-container-orientation = 'auto'
|
||||
|
||||
# Mouse follows focus when focused monitor changes
|
||||
# Drop it from your config, if you don't like this behavior
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
|
||||
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
|
||||
# Fallback value (if you omit the key): on-focused-monitor-changed = []
|
||||
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||
|
||||
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
|
||||
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
|
||||
# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app
|
||||
automatically-unhide-macos-hidden-apps = true
|
||||
|
||||
# [[on-window-detected]]
|
||||
# if.app-id = 'com.apple.systempreferences'
|
||||
# if.app-name-regex-substring = 'settings'
|
||||
# if.window-title-regex-substring = 'substring'
|
||||
# if.workspace = 'workspace-name'
|
||||
# if.during-aerospace-startup = true
|
||||
# check-further-callbacks = true
|
||||
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-name-regex-substring = 'settings' # All settings
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.systempreferences' # macOS System Preferences
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.1password.1password' # 1Password
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.jetbrains.PhpStorm' # PhpStorm
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.finder' # Finder
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.Preview' # Preview
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.mail' # Mail
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.DanPristupov.Fork' # Fork
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'org.whispersystems.signal-desktop' # Signal
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.tidal.desktop' # TIDAL
|
||||
run = ['layout floating', 'move-node-to-workspace 2'] # Float and move to workspace 2
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.TV' # Apple TV app
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.setapp.DesktopClient' # Setapp
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.electron.dockerdesktop' # Docker Desktop
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'md.obsidia' # Obsidian
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.todoist.mac.Todoist' # Todoist
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.backup.launcher' # TimeMachine
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.philipyoungg.session-setapp' # Session app (Setapp)
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.microsoft.rdc.macos' # Remote Desktop
|
||||
run = ['layout floating']
|
||||
|
||||
# Possible values: (qwerty|dvorak)
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||
[key-mapping]
|
||||
preset = 'qwerty'
|
||||
|
||||
# Gaps between windows (inner-*) and between monitor edges (outer-*).
|
||||
# Possible values:
|
||||
# - Constant: gaps.outer.top = 8
|
||||
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
|
||||
# In this example, 24 is a default value when there is no match.
|
||||
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
|
||||
[gaps]
|
||||
inner.horizontal = 5
|
||||
inner.vertical = 5
|
||||
outer.top = [{ monitor.'^built-in retina display$' = 0 }, 0]
|
||||
outer.right = 0
|
||||
outer.bottom = 0
|
||||
outer.left = 0
|
||||
|
||||
# 'main' binding mode declaration
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
# 'main' binding mode must be always presented
|
||||
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||
[mode.main.binding]
|
||||
|
||||
cmd-h = [] # Disable "hide application"
|
||||
cmd-alt-h = [] # Disable "hide others"
|
||||
|
||||
# All possible keys:
|
||||
# - Letters. a, b, c, ..., z
|
||||
# - Numbers. 0, 1, 2, ..., 9
|
||||
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
|
||||
# - F-keys. f1, f2, ..., f20
|
||||
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
|
||||
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
|
||||
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
|
||||
# keypadMinus, keypadMultiply, keypadPlus
|
||||
# - Arrows. left, down, up, right
|
||||
|
||||
# All possible modifiers: cmd, alt, ctrl, shift
|
||||
|
||||
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
|
||||
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
|
||||
# alt-enter = '''exec-and-forget osascript -e '
|
||||
# tell application "Terminal"
|
||||
# do script
|
||||
# activate
|
||||
# end tell'
|
||||
# '''
|
||||
|
||||
# alt-cmd-shift-f = 'fullscreen'
|
||||
# alt-shift-f = 'layout floating'
|
||||
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||
alt-h = 'focus left'
|
||||
alt-j = 'focus down'
|
||||
alt-k = 'focus up'
|
||||
alt-l = 'focus right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||
alt-shift-1 = 'workspace 1' # Main
|
||||
alt-shift-2 = 'workspace 2' # Media
|
||||
ctrl-shift-1 = 'move-node-to-workspace 1' # Move node to Main
|
||||
ctrl-shift-2 = 'move-node-to-workspace 2' # Move node to Media
|
||||
|
||||
alt-shift-tab = 'workspace-back-and-forth' # Switch between workspaces
|
||||
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
alt-a = 'mode apps'
|
||||
alt-s = 'mode service'
|
||||
alt-m = 'mode move'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-m │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.move.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||
1 = ['move-node-to-workspace 1 --focus-follows-window']
|
||||
2 = ['move-node-to-workspace 2 --focus-follows-window']
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||
h = 'move left'
|
||||
j = 'move down'
|
||||
k = 'move up'
|
||||
l = 'move right'
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#join-with
|
||||
shift-h = 'join-with left'
|
||||
shift-j = 'join-with down'
|
||||
shift-k = 'join-with up'
|
||||
shift-l = 'join-with right'
|
||||
# https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||
ctrl-h = 'resize smart -70'
|
||||
ctrl-l = 'resize smart +70'
|
||||
shift-left = 'resize smart +70'
|
||||
shift-right = 'resize smart -70'
|
||||
# https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-a │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.apps.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] # Browser
|
||||
c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] # Chat
|
||||
g = ['exec-and-forget open -a /Applications/Ghostty.app', 'mode main'] # Ghostty
|
||||
o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] # Obsidian
|
||||
s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] # Slack
|
||||
t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] # Tidal
|
||||
w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] # WezTerm
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-s │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.service.binding]
|
||||
esc = ['reload-config', 'mode main'] # reload config
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||
backspace = ['close-all-windows-but-current', 'mode main']
|
||||
65
config/alias
65
config/alias
@@ -7,21 +7,34 @@ x-have eza && {
|
||||
alias ls="eza -h -s=type --git --icons --group-directories-first"
|
||||
}
|
||||
|
||||
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
|
||||
|
||||
# Easier navigation: .., ..., ....
|
||||
alias ..="cd .."
|
||||
alias ...="cd ../.."
|
||||
alias ....="cd ../../.."
|
||||
|
||||
# Get git repository root path
|
||||
get_git_root()
|
||||
{
|
||||
# check that we are in a git repository
|
||||
if git rev-parse --is-inside-work-tree &> /dev/null; then
|
||||
git rev-parse --show-toplevel
|
||||
else
|
||||
>&2 msgr err "Not in a git repository"
|
||||
fi
|
||||
}
|
||||
|
||||
# cd to git root directory
|
||||
alias cdgr='cd "$(git root)"'
|
||||
alias cdgr='cd "$(get_git_root)"'
|
||||
|
||||
# interesting folders, and shortcuts
|
||||
alias .="cd $HOME"
|
||||
alias .b="cd $XDG_BIN_HOME"
|
||||
alias .c="cd $HOME/Code"
|
||||
alias .d="cd $DOTFILES"
|
||||
alias .dx="cd $DOTFILES;ks"
|
||||
alias .l="cd $HOME/.local"
|
||||
alias .='cd $HOME'
|
||||
alias .b='cd $XDG_BIN_HOME'
|
||||
alias .c='cd $HOME/Code'
|
||||
alias .d='cd $DOTFILES'
|
||||
alias .l='cd $HOME/.local'
|
||||
alias .o='cd $HOME/Code/ivuorinen/obsidian/'
|
||||
|
||||
# Shortcuts for listing
|
||||
alias ll="ls -la"
|
||||
@@ -31,13 +44,10 @@ alias l="ls -a"
|
||||
alias cd..="cd .."
|
||||
alias sl="ls"
|
||||
|
||||
# List only directories
|
||||
alias lsd="ls -lF | grep '^d'"
|
||||
|
||||
# IP addresses
|
||||
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||||
alias localip="ipconfig getifaddr en1"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //' | sort"
|
||||
|
||||
# Show/hide hidden files in Finder
|
||||
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
|
||||
@@ -57,14 +67,7 @@ alias isodate="date +'%Y-%m-%d'"
|
||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||
alias x-timestamp="date +'%s'"
|
||||
|
||||
# tmux: automatically attach or create session with name 'main'
|
||||
alias tm='command tmux new-session -A -s main'
|
||||
# tmux: attach or create new session
|
||||
alias ta='command tmux attach || command tmux'
|
||||
|
||||
# nvim
|
||||
alias c='nvim'
|
||||
alias ks='nvim'
|
||||
# nvim aliases
|
||||
alias vi='nvim'
|
||||
alias vim='nvim'
|
||||
|
||||
@@ -79,8 +82,6 @@ alias zapds='find . -name ".DS_Store" -print -delete'
|
||||
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
|
||||
# Run all zaps
|
||||
alias zapall="zapds && zappyc"
|
||||
# tail with follow flag on
|
||||
alias t='tail -f'
|
||||
# directory usage, return only the total
|
||||
alias dn='du -chd1'
|
||||
# Mirror site with wget
|
||||
@@ -88,6 +89,7 @@ alias mirror_site='wget -m -k -K -E -e robots=off'
|
||||
# Mirror stdout to stderr, useful for seeing data going through a pipe
|
||||
alias peek='tee >(cat 1>&2)'
|
||||
|
||||
# Runs Gitlab code quality scanner
|
||||
alias code_scanner='docker run
|
||||
--env SOURCE_CODE="$PWD"
|
||||
--volume "${PWD}":/code
|
||||
@@ -95,20 +97,25 @@ alias code_scanner='docker run
|
||||
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
|
||||
/code'
|
||||
|
||||
# Runs trivy container image scanner
|
||||
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
|
||||
|
||||
# Opens dotfiles with $EDITOR
|
||||
alias zedit='$EDITOR ~/.dotfiles'
|
||||
# Open irssi with my configurations
|
||||
alias irssi='irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi'
|
||||
# Configures wget to use correct wget-hsts file
|
||||
alias wget='wget --hsts-file=$XDG_DATA_HOME/wget-hsts'
|
||||
# Configures svn to use correct config directory
|
||||
alias svn='svn --config-dir $XDG_CONFIG_HOME/subversion'
|
||||
|
||||
alias irssi="irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi"
|
||||
# Laravel artisan shortcut
|
||||
alias art='[ -f artisan ] && php artisan || php vendor/bin/artisan'
|
||||
|
||||
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts"
|
||||
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
||||
# Laravel Sail shortcut
|
||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||
|
||||
if [[ $(uname) == 'Darwin' ]]; then
|
||||
|
||||
# Laravel Sail shortcut
|
||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||
|
||||
# Flush Directory Service cache
|
||||
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
||||
|
||||
@@ -130,6 +137,6 @@ X_ALIAS_FILES=(
|
||||
)
|
||||
for aliasFile in "${X_ALIAS_FILES[@]}"; do
|
||||
# shellcheck source=$HOME/.config/alias-secret
|
||||
[ -f "$aliasFile" ] && source "$aliasFile" && msg "Sourced $aliasFile"
|
||||
[ -f "$aliasFile" ] && source "$aliasFile" && msgr ok "Sourced $aliasFile"
|
||||
done
|
||||
unset X_ALIAS_FILES
|
||||
|
||||
15
config/aqua/aqua.yaml
Normal file
15
config/aqua/aqua.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json
|
||||
# aqua - Declarative CLI Version Manager
|
||||
# https://aquaproj.github.io/
|
||||
# checksum:
|
||||
# enabled: true
|
||||
# require_checksum: true
|
||||
# supported_envs:
|
||||
# - all
|
||||
registries:
|
||||
- type: standard
|
||||
ref: v4.346.0 # renovate: depName=aquaproj/aqua-registry
|
||||
packages:
|
||||
- name: cli/cli
|
||||
version: 'v2.69.0'
|
||||
@@ -1,3 +0,0 @@
|
||||
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
|
||||
export ASDF_DIRENV_BIN="$(asdf where direnv)/bin/direnv"
|
||||
eval "$($ASDF_DIRENV_BIN hook zsh)"
|
||||
@@ -1,6 +1,8 @@
|
||||
// These are golang packages I use,
|
||||
// so they should be available with all versions
|
||||
|
||||
// Aqua is a package manager like asdf, or Brew
|
||||
github.com/aquaproj/aqua/v2/cmd/aqua@latest
|
||||
// Git Profile allows you to switch between user profiles in git repos
|
||||
github.com/dotzero/git-profile@v1.4.0
|
||||
// An extensible command line tool or library to format yaml files.
|
||||
|
||||
@@ -1,27 +1,20 @@
|
||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||
age https://github.com/threkk/asdf-age.git 396bdf6
|
||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git b5862c1
|
||||
bats https://github.com/timgluz/asdf-bats.git 299551f
|
||||
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
||||
delta https://github.com/andweeb/asdf-delta.git 501318b
|
||||
direnv https://github.com/asdf-community/asdf-direnv.git 6ff3dbe
|
||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||
eza https://github.com/lwiechec/asdf-eza.git 11f578d
|
||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||
gitleaks https://github.com/jmcvetta/asdf-gitleaks.git 0cc0d7e
|
||||
golang https://github.com/asdf-community/asdf-golang.git e2527a3
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git c8eb88b
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
ruby https://github.com/asdf-vm/asdf-ruby.git 194fe45
|
||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
sops https://github.com/feniix/asdf-sops.git 5c7a2fb
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 29f2935
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git bc2813e
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git e4cfb17
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
|
||||
73
config/cheat/cheatsheets/personal/printf
Normal file
73
config/cheat/cheatsheets/personal/printf
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
tags: [printf, bash, zsh]
|
||||
---
|
||||
|
||||
# printf
|
||||
|
||||
The printf command accepts the following syntax:
|
||||
|
||||
`printf [-v var] [format specifiers] [arguments]`
|
||||
|
||||
- [-v var]
|
||||
The optional -v flag assigns the output to the [var]
|
||||
variable instead of printing it in standard output.
|
||||
|
||||
- [format specifiers]
|
||||
Format specifiers are strings that determine the methods of
|
||||
formatting specifiers. The following section includes a
|
||||
list of accepted specifiers.
|
||||
|
||||
- [arguments]
|
||||
Arguments can be any value or variable, and the [format specifiers]
|
||||
point to the [arguments]. If there are more arguments than format
|
||||
specifiers, the format string is reused until it interprets
|
||||
the last argument.
|
||||
|
||||
If there are fewer format specifiers than arguments, number formats
|
||||
are set to zero (0), while string formats are set to null (empty).
|
||||
|
||||
## printf Specifiers
|
||||
|
||||
Format Description
|
||||
------ -----------
|
||||
%c Treat the arguments as a single character.
|
||||
%d Treat the input as a decimal (integer) number (base 10).
|
||||
%e Treats the input as an exponential floating-point number.
|
||||
%f Treat the input as a floating-point number.
|
||||
%i Treat the input as an integer number (base 10).
|
||||
%o Treats the input as an octal number (base 8).
|
||||
%s Treat the input as a string of characters.
|
||||
%u Treat the input as an unsigned decimal (integer) number.
|
||||
%x Treats the input as a hexadecimal number (base 16).
|
||||
%% Print a percent sign.
|
||||
%Wd Print the W integer X digits wide.
|
||||
%(format)T Outputs a date-time string resulting from using format as a
|
||||
format string for strftime. The corresponding argument can
|
||||
be the number of seconds since Epoch (January 1, 1970, 00:00),
|
||||
-1 (the current time), or -2 (shell startup time).
|
||||
Not specifying an argument uses the current time as the default value.
|
||||
\% Print a percent sign.
|
||||
\n Prints a newline character.
|
||||
\t Print a tab character.
|
||||
|
||||
Some format specifiers accept format modifiers that modify their actions.
|
||||
Enter the modifiers between the % character and the character that
|
||||
specifies the format.
|
||||
|
||||
Available format modifiers are:
|
||||
|
||||
<N>. Enter a number that specifies a minimum field width.
|
||||
If the output text is shorter, it's padded with spaces.
|
||||
If the text is longer, the field expands.
|
||||
. (dot). When used with a field width modifier, the field doesn't
|
||||
expand for longer text. Instead, the text is truncated.
|
||||
-. Left-aligns the printed text. The default alignment is right.
|
||||
0. Pads the numbers with zeros instead of spaces.
|
||||
<space>. Pads a positive number with a space, and a negative
|
||||
number with a minus (-).
|
||||
+. Prints all numbers signed (+ for positive, - for negative).
|
||||
'. For decimal conversions, applies the thousands grouping
|
||||
separator to the integer portion of the output according
|
||||
to the current LC_NUMERIC file.
|
||||
|
||||
|
||||
@@ -61,12 +61,6 @@ cheatpaths:
|
||||
path: ~/.config/cheat/cheatsheets/community
|
||||
tags: [community]
|
||||
readonly: true
|
||||
# If you have personalized cheatsheets, list them last. They will take
|
||||
# precedence over the more global cheatsheets.
|
||||
- name: personal
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||
tags: [personal]
|
||||
readonly: false
|
||||
- name: pure-bash-bible
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
||||
tags: [pure-bash-bible]
|
||||
@@ -75,6 +69,12 @@ cheatpaths:
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/tldr/tldr
|
||||
tags: [tldr]
|
||||
readonly: true
|
||||
# If you have personalized cheatsheets, list them last. They will take
|
||||
# precedence over the more global cheatsheets.
|
||||
- name: personal
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||
tags: [personal]
|
||||
readonly: false
|
||||
# While it requires no configuration here, it's also worth noting that
|
||||
# cheat will automatically append directories named '.cheat' within the
|
||||
# current working directory to the 'cheatpath'. This can be very useful if
|
||||
|
||||
@@ -14,14 +14,8 @@
|
||||
# if DOTFILES is not set, set it to the default location
|
||||
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
# zsh completions directory
|
||||
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
|
||||
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
|
||||
# Add zsh completions to FPATH, compinit will be called later
|
||||
FPATH="$ZSH_COMPLETIONS:$FPATH"
|
||||
|
||||
if ! command -v msg &> /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
@@ -219,7 +213,7 @@ get_sha256sum()
|
||||
# $2 - filename (string)
|
||||
#
|
||||
# Returns 1 when replaceable, 0 when not replaceable.
|
||||
replacable()
|
||||
replaceable()
|
||||
{
|
||||
FILE1="$1"
|
||||
FILE2="$2"
|
||||
@@ -281,8 +275,8 @@ export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
||||
# export LESS_TERMCAP_md="$ORANGE"
|
||||
|
||||
# zsh autoloaded terminfo
|
||||
export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||
export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||
# export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||
# export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||
|
||||
# Don't clear the screen after quitting a manual page
|
||||
export MANPAGER="less -X"
|
||||
@@ -297,35 +291,6 @@ hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
# shellcheck disable=SC2155
|
||||
export SHORT_HOST=$(hostname -s)
|
||||
|
||||
# asdf
|
||||
# https://github.com/asdf-vm/asdf
|
||||
msg "Setting up asdf configuration"
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
if [[ -d $ASDF_DIR ]]; then
|
||||
[[ -d $ASDF_DIR/completions ]] && FPATH="$ASDF_DIR/completions:$FPATH"
|
||||
[[ -d $ASDF_DIR/plugins ]] && FPATH="$ASDF_DIR/plugins:$FPATH"
|
||||
|
||||
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
|
||||
export ASDF_DATA_DIR="${ASDF_DIR}"
|
||||
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
||||
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
|
||||
export ASDF_FORCE_PREPEND=yes
|
||||
## Default package files
|
||||
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
|
||||
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
|
||||
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
|
||||
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
|
||||
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/python-packages"
|
||||
## Plugin configuration
|
||||
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
|
||||
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
|
||||
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
|
||||
## Add asdf to path
|
||||
export PATH="${ASDF_DIR}/bin:${PATH}"
|
||||
|
||||
source "$ASDF_DIR/asdf.sh"
|
||||
fi
|
||||
|
||||
# Antidote configuration
|
||||
# https://getantidote.github.io/
|
||||
msg "Setting up Antidote configuration"
|
||||
@@ -333,14 +298,6 @@ export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
||||
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
msg "Setting up Antigen configuration"
|
||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
||||
export ANTIGEN_CACHE="$XDG_CACHE_HOME/antigen"
|
||||
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
|
||||
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
msg "Setting up Ansible configuration"
|
||||
@@ -382,8 +339,6 @@ export HOMEBREW_NO_ENV_HINTS=true
|
||||
export HOMEBREW_BUNDLE_MAS_SKIP=true
|
||||
export HOMEBREW_BUNDLE_FILE="$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
x-have brew && {
|
||||
# Add brew autocompletion to fpath
|
||||
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
|
||||
eval "$(brew shellenv)"
|
||||
}
|
||||
|
||||
@@ -476,11 +431,13 @@ export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
# tmux
|
||||
# https://tmux.github.io/
|
||||
msg "Setting up tmux configuration"
|
||||
export TMUX_PLUGINS="$XDG_CONFIG_HOME/tmux/plugins"
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
export TMUX_TMPDIR="$XDG_STATE_HOME/tmux"
|
||||
export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
|
||||
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
|
||||
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
|
||||
## These settings are for zsh-tmux
|
||||
export ZSH_TMUX_AUTOSTART=false
|
||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||
export ZSH_TMUX_AUTOSTART=true
|
||||
export ZSH_TMUX_CONFIG="$TMUX_CONF"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
@@ -499,13 +456,7 @@ export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
|
||||
|
||||
X_EXPORTS_FILES=(
|
||||
"$HOME/.config/exports-secret"
|
||||
"$HOME/.config/exports-$(hostname)"
|
||||
"$HOME/.config/exports-$(hostname)-secret"
|
||||
)
|
||||
for exportFile in "${X_EXPORTS_FILES[@]}"; do
|
||||
# shellcheck source=$HOME/.config/exports-secret
|
||||
[ -f "$exportFile" ] && source "$exportFile" && msg "Sourced $exportFile"
|
||||
done
|
||||
unset X_EXPORTS_FILES
|
||||
[ -f "$XDG_CONFIG_HOME/exports-secret" ] && source "$XDG_CONFIG_HOME/exports-secret"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-local" ] && source "$XDG_CONFIG_HOME/exports-local"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"
|
||||
|
||||
108
config/fish/alias.fish
Normal file
108
config/fish/alias.fish
Normal file
@@ -0,0 +1,108 @@
|
||||
# Set aliases for fish shell
|
||||
|
||||
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
|
||||
|
||||
# eza aliases if eza is installed
|
||||
if type -q eza >/dev/null
|
||||
function eza_git -d "Use eza and its git options if in a git repo"
|
||||
if git rev-parse --is-inside-work-tree &>/dev/null
|
||||
eza --group-directories-first --icons=always --smart-group --git $argv
|
||||
else
|
||||
eza --group-directories-first --icons=always --smart-group $argv
|
||||
end
|
||||
end
|
||||
|
||||
function lsa --wraps='eza_git -al' --description 'eza -al'
|
||||
eza_git -al $argv
|
||||
end
|
||||
|
||||
function ls --wraps='eza_git' --description eza
|
||||
eza_git $argv
|
||||
end
|
||||
|
||||
function ll --wraps='eza_git -l' --description 'eza -l'
|
||||
eza_git -l $argv
|
||||
end
|
||||
|
||||
function l --wraps='eza_git' --description eza
|
||||
eza_git $argv
|
||||
end
|
||||
end
|
||||
|
||||
# Edit fish alias file
|
||||
function .a --wraps='nvim ~/.dotfiles/config/fish/alias.fish' --description 'edit alias.fish'
|
||||
nvim ~/.dotfiles/config/fish/alias.fish $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my projects are stored
|
||||
function .c --wraps='cd ~/Code' --description 'cd ~/Code'
|
||||
cd ~/Code $argv
|
||||
end
|
||||
|
||||
# Go to the directory where the dotfiles are stored
|
||||
function .d --wraps='cd ~/.dotfiles' --description 'cd ~/.dotfiles'
|
||||
cd ~/.dotfiles $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my work codes are stored
|
||||
function .s --wraps='cd ~/Code/s' --description 'cd ~/Code/s'
|
||||
cd ~/Code/s $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my personal codes are stored
|
||||
function .p --wraps='cd ~/Code/ivuorinen' --description 'cd ~/Code/ivuorinen'
|
||||
cd ~/Code/ivuorinen $argv
|
||||
end
|
||||
|
||||
# shortcut to commit with a message
|
||||
function commit --wraps='git commit -a -m "chore: automated commit"' --description 'commit shortcut'
|
||||
set -l commitMessage $argv
|
||||
git add .
|
||||
|
||||
if test -z "$commitMessage"
|
||||
if type -q aicommits
|
||||
aicommits --type conventional
|
||||
else
|
||||
git commit -a -m "chore: automated commit"
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
git commit -a -m "$commitMessage"
|
||||
end
|
||||
|
||||
function configure_tide --description 'Configure tide with the lean style and my preferences'
|
||||
tide configure \
|
||||
--auto \
|
||||
--style=Lean \
|
||||
--prompt_colors='True color' \
|
||||
--show_time=No \
|
||||
--lean_prompt_height='Two lines' \
|
||||
--prompt_connection=Disconnected \
|
||||
--prompt_spacing=Sparse \
|
||||
--icons='Many icons' \
|
||||
--transient=Yes
|
||||
end
|
||||
|
||||
# Abbreviations for git
|
||||
abbr --add gau git add -u
|
||||
abbr --add gaa git add -A
|
||||
abbr --add gcv git commit -v
|
||||
|
||||
# Abbreviations for composer
|
||||
abbr --add c composer
|
||||
abbr --add cu composer update
|
||||
abbr --add ci composer install
|
||||
|
||||
# Abbreviations for php artisan
|
||||
abbr --add .pa php artisan
|
||||
abbr --add .paf php artisan fresh
|
||||
abbr --add .pam php artisan migrate
|
||||
abbr --add .pams php artisan migrate --seed
|
||||
abbr --add .pat php artisan test
|
||||
|
||||
# Abbreviations for npm
|
||||
abbr --add .n npm
|
||||
abbr --add .nt npm test --if-present
|
||||
abbr --add .nb npm run build --if-present
|
||||
abbr --add .ns npm run start --if-present
|
||||
71
config/fish/completions/app.fish
Normal file
71
config/fish/completions/app.fish
Normal file
@@ -0,0 +1,71 @@
|
||||
# @halostatue/fish-macos/completions/app.fish:v7.0.1
|
||||
|
||||
complete --command app --erase
|
||||
|
||||
complete --command app --arguments bundleid \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Show bundle IDs for macOS apps'
|
||||
|
||||
complete --command app --arguments find \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Find macOS apps by pattern'
|
||||
|
||||
complete --command app --arguments frontmost \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows the front-most application'
|
||||
|
||||
complete --command app --arguments icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Extracts a MacOS app icon as a png file'
|
||||
|
||||
complete --command app --arguments quit \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Quit macOS apps by pattern'
|
||||
|
||||
for subcommand in bundleid find
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option a --long-option all --description 'Show all matches'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option q --long-option quiet --description 'Quiet (show no output)'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for app '$subcommand
|
||||
end
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'bundleid \
|
||||
--short-option s --long-option short --description 'Show only the bundle ID'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option b --long-option bundle-id --description 'Shows the app bundle ID'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option p --long-option path --description 'Shows the app path'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option n --long-option name --description 'Shows the app name'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option P --long-option pid --description 'Shows the PID of the app'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option a --long-option all --description 'Shows all details'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option h --long-option help --description 'Help for app 'frontmost
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option o --long-option output --description 'Extracts to this file or directory' \
|
||||
--force-files
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option w --long-option width --description 'Uses this pixel width' \
|
||||
--no-files
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option h --long-option help --description 'Help for app 'icon
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option r --long-option restart --description 'Restart after quit'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option h --long-option help --description 'Help for app 'quit
|
||||
125
config/fish/completions/aqua.fish
Normal file
125
config/fish/completions/aqua.fish
Normal file
@@ -0,0 +1,125 @@
|
||||
# aqua fish shell completion
|
||||
|
||||
function __fish_aqua_no_subcommand --description 'Test if there has been any subcommand yet'
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i init install i generate g update-aqua upa update-checksum upc update up completion bash zsh fish help h help h which info remove rm vacuum cp policy allow deny init init-policy exec list generate-registry gr version root-dir help h
|
||||
return 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l log-level -r -d 'log level'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-cosign -d 'Disable Cosign verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-slsa -d 'Disable SLSA verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-github-artifact-attestation -d 'Disable GitHub Artifact Attestations verification'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l trace -r -d 'trace output file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l cpu-profile -r -d 'cpu profile output file path'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init' -d 'Create a configuration file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l use-import-dir -s u -d 'Use import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l import-dir -s i -r -d 'import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l create-dir -s d -d 'Create a directory named aqua and create aqua.yaml in it'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'install i' -d 'Install tools'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l only-link -s l -d 'create links but skip downloading packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l test -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1691'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate g' -d 'Search packages in registries and output the configuration interactively'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l f -r -d 'the file path of packages list. When the value is "-", the list is passed from the standard input'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l i -d 'Insert packages to configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l pin -d 'Pin version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l g -d 'Insert packages in a global configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l detail -s d -d 'Output additional fields such as description and link'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l o -r -d 'inserted file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l select-version -s s -d 'Select the installed version interactively. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-aqua upa' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-aqua upa' -d 'Update aqua'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-checksum upc' -d 'Create or Update aqua-checksums.json'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l all -s a -d 'Create or Update all aqua-checksums.json including global configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1769'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l prune -d 'Remove unused checksums'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update up' -d 'Update registries and packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l i -d 'Select packages with fuzzy finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l select-version -s s -d 'Select the version with fuzzy finder. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-registry -s r -d 'Update only registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-package -s p -d 'Update only packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'completion' -d 'Output shell completion script for bash, zsh, or fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from bash' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'bash' -d 'Output shell completion script for bash'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from zsh' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'zsh' -d 'Output shell completion script for zsh'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'fish' -d 'Output shell completion script for fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from fish' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'which' -d 'Output the absolute file path of the given command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l version -s v -d 'Output the given package version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from info' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'info' -d 'Show information'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'remove rm' -d 'Uninstall packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l all -s a -d 'uninstall all packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l mode -s m -r -d 'Removed target modes. l: link, p: package'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l i -d 'Select packages with a Fuzzy Finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'vacuum' -d 'Remove unused installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l init -d 'Create timestamp files.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l days -s d -r -d 'Expiration days'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'cp' -d 'Copy executable files in a directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l o -r -d 'destination directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'policy' -d 'Manage Policy'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from allow' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'allow' -d 'Allow a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from deny' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'deny' -d 'Deny a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'init' -d 'Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init-policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init-policy' -d '[Deprecated] Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from exec' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'exec' -d 'Execute tool'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'list' -d 'List packages in Registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l installed -s i -d 'List installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l all -s a -d 'List global configuration packages too'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate-registry gr' -d 'Generate a registry\'s package configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l out-testdata -r -d 'A file path where the testdata is outputted'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l cmd -r -d 'A list of commands joined with commas \',\''
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l generate-config -s c -r -d 'A configuration file path'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l limit -s l -r -d 'the maximum number of versions'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.15.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/2351'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l init -d 'Generate a configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from version' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'version' -d 'Show version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from root-dir' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'root-dir' -d 'Output the aqua root directory (AQUA_ROOT_DIR)'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
|
||||
70
config/fish/completions/finder.fish
Normal file
70
config/fish/completions/finder.fish
Normal file
@@ -0,0 +1,70 @@
|
||||
# @halostatue/fish-macos/completions/finder.fish:v7.0.1
|
||||
|
||||
complete --command finder --erase
|
||||
|
||||
complete --command finder --arguments track \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Enables Finder PWD tracking'
|
||||
complete --command finder --arguments untrack \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Disables Finder PWD tracking'
|
||||
complete --command finder --arguments pwd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Prints the path of the Finder window'
|
||||
complete --command finder --arguments cd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes to the path of the Finder window'
|
||||
complete --command finder --arguments pushd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Pushes to the path of the Finder window'
|
||||
complete --command finder --arguments update \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Updates the Finder to PWD'
|
||||
complete --command finder --arguments list \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to list view with PWD'
|
||||
complete --command finder --arguments icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to icon view with PWD'
|
||||
complete --command finder --arguments column \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to column view with PWD'
|
||||
complete --command finder --arguments hidden \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows or hides `hidden` files'
|
||||
complete --command finder --arguments desktop-icons \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows or hides desktop icons'
|
||||
complete --command finder --arguments clean \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Cleans .DS_Store files'
|
||||
complete --command finder --arguments quarantine \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Works with file quarantine data'
|
||||
complete --command finder --arguments selected \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Print Finder selected files'
|
||||
|
||||
for subcommand in cd clean column desktop-icons hidden icon list pushd pwd quarantine selected track untrack update
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for finder '$subcommand
|
||||
end
|
||||
|
||||
for subcommand in hidden desktop-icons
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments off --description 'Turns '$subcommand' off'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments on --description 'Turns '$subcommand' on'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments toggle --description 'Toggles '$subcommand
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments show --description 'Shows quarantine events'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments clear --description 'Clears all quarantine events'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments clean --description 'Removes 'quarantine' attributes from files' \
|
||||
--require-parameter --force-files
|
||||
7
config/fish/completions/fisher.fish
Normal file
7
config/fish/completions/fisher.fish
Normal file
@@ -0,0 +1,7 @@
|
||||
complete --command fisher --exclusive --long help --description "Print help"
|
||||
complete --command fisher --exclusive --long version --description "Print version"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
||||
176
config/fish/completions/git-profile.fish
Normal file
176
config/fish/completions/git-profile.fish
Normal file
@@ -0,0 +1,176 @@
|
||||
# fish completion for git-profile -*- shell-script -*-
|
||||
|
||||
function __git_profile_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >> $file
|
||||
end
|
||||
end
|
||||
|
||||
function __git_profile_perform_completion
|
||||
__git_profile_debug "Starting __git_profile_perform_completion"
|
||||
|
||||
# Extract all args except the last one
|
||||
set -l args (commandline -opc)
|
||||
# Extract the last arg and escape it in case it is a space
|
||||
set -l lastArg (string escape -- (commandline -ct))
|
||||
|
||||
__git_profile_debug "args: $args"
|
||||
__git_profile_debug "last arg: $lastArg"
|
||||
|
||||
set -l requestComp "$args[1] __complete $args[2..-1] $lastArg"
|
||||
|
||||
__git_profile_debug "Calling $requestComp"
|
||||
set -l results (eval $requestComp 2> /dev/null)
|
||||
|
||||
# Some programs may output extra empty lines after the directive.
|
||||
# Let's ignore them or else it will break completion.
|
||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||
for line in $results[-1..1]
|
||||
if test (string trim -- $line) = ""
|
||||
# Found an empty line, remove it
|
||||
set results $results[1..-2]
|
||||
else
|
||||
# Found non-empty line, we have our proper output
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
set -l comps $results[1..-2]
|
||||
set -l directiveLine $results[-1]
|
||||
|
||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||
# completions must be prefixed with the flag
|
||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||
|
||||
__git_profile_debug "Comps: $comps"
|
||||
__git_profile_debug "DirectiveLine: $directiveLine"
|
||||
__git_profile_debug "flagPrefix: $flagPrefix"
|
||||
|
||||
for comp in $comps
|
||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||
end
|
||||
|
||||
printf "%s\n" "$directiveLine"
|
||||
end
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __git_profile_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
function __git_profile_prepare_completions
|
||||
__git_profile_debug ""
|
||||
__git_profile_debug "========= starting completion logic =========="
|
||||
|
||||
# Start fresh
|
||||
set --erase __git_profile_comp_results
|
||||
|
||||
set -l results (__git_profile_perform_completion)
|
||||
__git_profile_debug "Completion results: $results"
|
||||
|
||||
if test -z "$results"
|
||||
__git_profile_debug "No completion, probably due to a failure"
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $results[-1])
|
||||
set --global __git_profile_comp_results $results[1..-2]
|
||||
|
||||
__git_profile_debug "Completions are: $__git_profile_comp_results"
|
||||
__git_profile_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveError 1
|
||||
set -l shellCompDirectiveNoSpace 2
|
||||
set -l shellCompDirectiveNoFileComp 4
|
||||
set -l shellCompDirectiveFilterFileExt 8
|
||||
set -l shellCompDirectiveFilterDirs 16
|
||||
|
||||
if test -z "$directive"
|
||||
set directive 0
|
||||
end
|
||||
|
||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||
if test $compErr -eq 1
|
||||
__git_profile_debug "Received error directive: aborting."
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||
__git_profile_debug "File extension filtering or directory filtering not supported"
|
||||
# Do full file completion instead
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||
|
||||
__git_profile_debug "nospace: $nospace, nofiles: $nofiles"
|
||||
|
||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||
# we need to count the number of valid completions.
|
||||
# To do so, we will filter on prefix as the completions we have received
|
||||
# may not already be filtered so as to allow fish to match on different
|
||||
# criteria than the prefix.
|
||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||
set -l prefix (commandline -t | string escape --style=regex)
|
||||
__git_profile_debug "prefix: $prefix"
|
||||
|
||||
set -l completions (string match -r -- "^$prefix.*" $__git_profile_comp_results)
|
||||
set --global __git_profile_comp_results $completions
|
||||
__git_profile_debug "Filtered completions are: $__git_profile_comp_results"
|
||||
|
||||
# Important not to quote the variable for count to work
|
||||
set -l numComps (count $__git_profile_comp_results)
|
||||
__git_profile_debug "numComps: $numComps"
|
||||
|
||||
if test $numComps -eq 1; and test $nospace -ne 0
|
||||
# We must first split on \t to get rid of the descriptions to be
|
||||
# able to check what the actual completion will be.
|
||||
# We don't need descriptions anyway since there is only a single
|
||||
# real completion which the shell will expand immediately.
|
||||
set -l split (string split --max 1 \t $__git_profile_comp_results[1])
|
||||
|
||||
# Fish won't add a space if the completion ends with any
|
||||
# of the following characters: @=/:.,
|
||||
set -l lastChar (string sub -s -1 -- $split)
|
||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||
# In other cases, to support the "nospace" directive we trick the shell
|
||||
# by outputting an extra, longer completion.
|
||||
__git_profile_debug "Adding second completion to perform nospace directive"
|
||||
set --global __git_profile_comp_results $split[1] $split[1].
|
||||
__git_profile_debug "Completions are now: $__git_profile_comp_results"
|
||||
end
|
||||
end
|
||||
|
||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||
# To be consistent with bash and zsh, we only trigger file
|
||||
# completion when there are no other completions
|
||||
__git_profile_debug "Requesting file completion"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q "git-profile"
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "git-profile " > /dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c git-profile -e
|
||||
|
||||
# The call to __git_profile_prepare_completions will setup __git_profile_comp_results
|
||||
# which provides the program's completion choices.
|
||||
complete -c git-profile -n '__git_profile_prepare_completions' -f -a '$__git_profile_comp_results'
|
||||
|
||||
119
config/fish/completions/mac.fish
Normal file
119
config/fish/completions/mac.fish
Normal file
@@ -0,0 +1,119 @@
|
||||
# @halostatue/fish-macos/completions/mac.fish:v7.0.1
|
||||
|
||||
complete --command mac --erase
|
||||
|
||||
complete --command mac --arguments airdrop \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes AirDrop settings'
|
||||
complete --command mac --arguments airport \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Work with AirPort (WiFi) settings'
|
||||
complete --command mac --arguments brightness \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Adjust the screen brightness level'
|
||||
complete --command mac --arguments flushdns \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Flushes DNS'
|
||||
complete --command mac --arguments font-smoothing \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manages font smoothing settings'
|
||||
complete --command mac --arguments lsclean \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Cleans LaunchServices to remove duplicate Open with... entries'
|
||||
complete --command mac --arguments mail \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage various operations of Mail.app'
|
||||
complete --command mac --arguments proxy-icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage proxy icon appearance delay'
|
||||
complete --command mac --arguments transparency \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage UI transparency'
|
||||
complete --command mac --arguments vol \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes Mac volume; accepts 0–100 volume percentage'
|
||||
|
||||
for subcommand in airdrop airport brightness flushdns font-smoothing lsclean mail proxy-icon transparency version vol
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for mac '$subcommand
|
||||
end
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
|
||||
--arguments up --description 'Increases screen brightness'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
|
||||
--arguments down --description 'Decreases screen brightness'
|
||||
|
||||
for subcommand in airdrop proxy-icon transparency
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments on --description 'Enables '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments off --description 'Disables '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments toggle --description 'Toggles '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments scan --description 'Shows available networks'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments ssid --description 'Shows the SSID'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments password --description 'Gets the current WiFi network password'
|
||||
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments on --description 'Enables font smoothing; app IDs can be provided to limit control'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments off --description 'Disables font smoothing; app IDs can be provided to limit control'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
|
||||
--arguments vacuum --description 'Vacuums the Mail.app envelope index'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
|
||||
--arguments attachments --description 'Sets Mail.app attachment handling' \
|
||||
--require-parameter --no-files
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
|
||||
--arguments inline \
|
||||
--description 'Sets Mail.app attachment handling so that they are inline to the message'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
|
||||
--arguments icon \
|
||||
--description 'Sets Mail.app attachment handling so that they are icons on the message'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option s --long-option simple --description 'Simple mac version name'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option l --long-option lowercase --description 'Lowercase mac version name'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option f --long-option version --description 'Full version number'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option c --long-option comparable --description 'Simplified comparable version value'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option h --long-option help --description 'Help for mac 'version
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments mute --description 'Mutes volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments unmute --description 'Unmutes volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments show --description 'Shows the current volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 10 --description 'Sets the volume to 10%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 20 --description 'Sets the volume to 20%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 30 --description 'Sets the volume to 30%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 40 --description 'Sets the volume to 40%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 50 --description 'Sets the volume to 50%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 60 --description 'Sets the volume to 60%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 70 --description 'Sets the volume to 70%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 80 --description 'Sets the volume to 80%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 90 --description 'Sets the volume to 90%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 100 --description 'Sets the volume to 100%'
|
||||
8
config/fish/completions/manp.fish
Normal file
8
config/fish/completions/manp.fish
Normal file
@@ -0,0 +1,8 @@
|
||||
# @halostatue/fish-macos/completions/manp.fish:v7.0.1
|
||||
|
||||
complete --command manp --erase
|
||||
complete --command manp --wraps man
|
||||
complete --command manp --exclusive --condition __fish_no_arguments \
|
||||
--short-option h --long-option help --description 'Show help for manp'
|
||||
complete --command manp --exclusive --condition __fish_no_arguments \
|
||||
--long-option clear-cache --description 'Clear the man page PDF cache'
|
||||
4
config/fish/completions/ql.fish
Normal file
4
config/fish/completions/ql.fish
Normal file
@@ -0,0 +1,4 @@
|
||||
# @halostatue/fish-macos/completions/ql.fish:v7.0.1
|
||||
|
||||
complete --erase --command ql
|
||||
complete --command ql --wraps qlmanage
|
||||
13
config/fish/completions/tide.fish
Normal file
13
config/fish/completions/tide.fish
Normal file
@@ -0,0 +1,13 @@
|
||||
complete tide --no-files
|
||||
|
||||
set -l subcommands bug-report configure reload
|
||||
|
||||
complete tide -x -n __fish_use_subcommand -a bug-report -d "Print info for use in bug reports"
|
||||
complete tide -x -n __fish_use_subcommand -a configure -d "Run the configuration wizard"
|
||||
complete tide -x -n __fish_use_subcommand -a reload -d "Reload tide configuration"
|
||||
|
||||
complete tide -x -n "not __fish_seen_subcommand_from $subcommands" -s h -l help -d "Print help message"
|
||||
complete tide -x -n "not __fish_seen_subcommand_from $subcommands" -s v -l version -d "Print tide version"
|
||||
|
||||
complete tide -x -n '__fish_seen_subcommand_from bug-report' -l clean -d "Run clean Fish instance and install Tide"
|
||||
complete tide -x -n '__fish_seen_subcommand_from bug-report' -l verbose -d "Print full Tide configuration"
|
||||
44
config/fish/conf.d/_tide_init.fish
Normal file
44
config/fish/conf.d/_tide_init.fish
Normal file
@@ -0,0 +1,44 @@
|
||||
function _tide_init_install --on-event _tide_init_install
|
||||
set -U VIRTUAL_ENV_DISABLE_PROMPT true
|
||||
|
||||
source (functions --details _tide_sub_configure)
|
||||
_load_config lean
|
||||
_tide_finish
|
||||
|
||||
if status is-interactive
|
||||
tide bug-report --check || sleep 4
|
||||
|
||||
if contains ilancosman/tide (string lower $_fisher_plugins)
|
||||
set_color bryellow
|
||||
echo "ilancosman/tide is a development branch. Please install from a release tag:"
|
||||
_tide_fish_colorize "fisher install ilancosman/tide@v6"
|
||||
sleep 3
|
||||
end
|
||||
|
||||
switch (read --prompt-str="Configure tide prompt? [Y/n] " | string lower)
|
||||
case y ye yes ''
|
||||
tide configure
|
||||
case '*'
|
||||
echo -s \n 'Run ' (_tide_fish_colorize "tide configure") ' to customize your prompt.'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function _tide_init_update --on-event _tide_init_update
|
||||
# Warn users who install from main branch
|
||||
if contains ilancosman/tide (string lower $_fisher_plugins)
|
||||
set_color bryellow
|
||||
echo "ilancosman/tide is a development branch. Please install from a release tag:"
|
||||
_tide_fish_colorize "fisher install ilancosman/tide@v6"
|
||||
sleep 3
|
||||
end
|
||||
|
||||
# Set (disable) the new jobs variable
|
||||
set -q tide_jobs_number_threshold || set -U tide_jobs_number_threshold 1000
|
||||
end
|
||||
|
||||
function _tide_init_uninstall --on-event _tide_init_uninstall
|
||||
set -e VIRTUAL_ENV_DISABLE_PROMPT
|
||||
set -e (set -U --names | string match --entire -r '^_?tide')
|
||||
functions --erase (functions --all | string match --entire -r '^_?tide')
|
||||
end
|
||||
7
config/fish/conf.d/fish-ssh-agent.fish
Normal file
7
config/fish/conf.d/fish-ssh-agent.fish
Normal file
@@ -0,0 +1,7 @@
|
||||
if test -z "$SSH_ENV"
|
||||
set -xg SSH_ENV $HOME/.ssh/environment
|
||||
end
|
||||
|
||||
if not __ssh_agent_is_started
|
||||
__ssh_agent_start
|
||||
end
|
||||
62
config/fish/conf.d/halostatue_fish_brew.fish
Normal file
62
config/fish/conf.d/halostatue_fish_brew.fish
Normal file
@@ -0,0 +1,62 @@
|
||||
# @halostatue/fish-brew/conf.d/halostatue_fish_brew.fish:v3.2.1
|
||||
|
||||
# Find Homebrew via a known prefix. If the `__homebrew_prefix` universal
|
||||
# variable is set, that will be set as the first test prefix.
|
||||
if not command --query brew
|
||||
set --local prefixes $HOME/.brew $HOME/.linuxbrew /opt/homebrew /usr/local
|
||||
set --query --universal __homebrew_prefix
|
||||
and set --prepend prefixes $__homebrew_prefix
|
||||
|
||||
for prefix in $prefixes
|
||||
test -x $prefix/bin/brew
|
||||
or continue
|
||||
|
||||
set --prepend PATH $prefix/bin
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if command --query brew
|
||||
set --query --universal __brew_prefix
|
||||
and set --erase --universal __brew_prefix
|
||||
|
||||
set --local __brew_prefix (brew --prefix)
|
||||
|
||||
if ! contains -- {$__brew_prefix}/bin $fish_user_paths
|
||||
fish_add_path --append --move --path \
|
||||
{$__brew_prefix}/bin \
|
||||
/usr/local/bin \
|
||||
/usr/bin \
|
||||
/bin \
|
||||
{$__brew_prefix}/sbin \
|
||||
/usr/local/sbin \
|
||||
/usr/sbin \
|
||||
/sbin
|
||||
end
|
||||
|
||||
if test -s $HOME/.config/brew/config.fish
|
||||
if status is-interactive
|
||||
set --local deprecated 0
|
||||
|
||||
if set --query $__halostatue_fish_brew_config_deprecated
|
||||
set deprecated $__halostatue_fish_brew_config_deprecated
|
||||
end
|
||||
|
||||
if test $deprecated -le 0
|
||||
echo >&2 "Sourcing ~/.config/brew/config.fish is deprecated."
|
||||
echo >&2 "See https://docs.brew.sh/Manpage#environment for a better alternative."
|
||||
|
||||
set --universal $__halostatue_fish_brew_config_deprecated 10
|
||||
else
|
||||
set --universal $__halostatue_fish_brew_config_deprecated (math $deprecated - 1)
|
||||
end
|
||||
end
|
||||
|
||||
source $HOME/.config/brew/config.fish
|
||||
end
|
||||
end
|
||||
|
||||
function _halostatue_fish_brew_uninstall -e halostatue_fish_brew_uninstall
|
||||
set --universal --erase __brew_prefix __halostatue_fish_brew_config_deprecated
|
||||
functions --erase has_cask has_keg (status function)
|
||||
end
|
||||
14
config/fish/conf.d/halostatue_fish_macos.fish
Normal file
14
config/fish/conf.d/halostatue_fish_macos.fish
Normal file
@@ -0,0 +1,14 @@
|
||||
# @halostatue/fish-macos/conf.d/halostatue_fish_macos.fish:v7.0.1
|
||||
|
||||
function _halostatue_fish_macos_uninstall -e halostatue_fish_macos_uninstall
|
||||
set --function functions app finder has_app mac manp note ql remind
|
||||
|
||||
for cmd in $functions
|
||||
complete --erase --command $cmd
|
||||
end
|
||||
|
||||
set --append functions (status function) \
|
||||
(functions --all | string match --entire --regex '^__macos_app_|^__macos_finder_|^__macos_mac_')
|
||||
|
||||
functions --erase $functions
|
||||
end
|
||||
22
config/fish/conf.d/paths.fish
Normal file
22
config/fish/conf.d/paths.fish
Normal file
@@ -0,0 +1,22 @@
|
||||
function ___paths_plugin_set_colors
|
||||
if not set -q ___paths_plugin_colors
|
||||
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function _paths_uninstall --on-event paths_uninstall
|
||||
for i in ___paths_plugin_wrap_color ___paths_plugin_output ___paths_plugin_handle_found_item ___paths_plugin_handle_source ___paths_plugin_cycle_color
|
||||
functions -e $i
|
||||
end
|
||||
set -e ___paths_plugin_colors
|
||||
set -e ___paths_plugin_current_color
|
||||
end
|
||||
|
||||
function _paths_install --on-event _paths_install
|
||||
___paths_plugin_set_colors
|
||||
end
|
||||
|
||||
function _paths_update --on-event paths_update
|
||||
___paths_plugin_set_colors
|
||||
end
|
||||
25
config/fish/conf.d/puffer_fish_key_bindings.fish
Normal file
25
config/fish/conf.d/puffer_fish_key_bindings.fish
Normal file
@@ -0,0 +1,25 @@
|
||||
status is-interactive || exit
|
||||
|
||||
function _puffer_fish_key_bindings --on-variable fish_key_bindings
|
||||
set -l modes
|
||||
if test "$fish_key_bindings" = fish_default_key_bindings
|
||||
set modes default insert
|
||||
else
|
||||
set modes insert default
|
||||
end
|
||||
|
||||
bind --mode $modes[1] . _puffer_fish_expand_dots
|
||||
bind --mode $modes[1] ! _puffer_fish_expand_bang
|
||||
bind --mode $modes[1] '$' _puffer_fish_expand_lastarg
|
||||
bind --mode $modes[2] --erase . ! '$'
|
||||
end
|
||||
|
||||
_puffer_fish_key_bindings
|
||||
|
||||
set -l uninstall_event puffer_fish_key_bindings_uninstall
|
||||
|
||||
function _$uninstall_event --on-event $uninstall_event
|
||||
bind -e .
|
||||
bind -e !
|
||||
bind -e '$'
|
||||
end
|
||||
52
config/fish/conf.d/sponge.fish
Normal file
52
config/fish/conf.d/sponge.fish
Normal file
@@ -0,0 +1,52 @@
|
||||
# Sponge version
|
||||
set --global sponge_version 1.1.0
|
||||
|
||||
# Allow to repeat previous command by default
|
||||
if not set --query --universal sponge_delay
|
||||
set --universal sponge_delay 2
|
||||
end
|
||||
|
||||
# Purge entries both after `sponge_delay` entries and on exit by default
|
||||
if not set --query --universal sponge_purge_only_on_exit
|
||||
set --universal sponge_purge_only_on_exit false
|
||||
end
|
||||
|
||||
# Add default filters
|
||||
if not set --query --universal sponge_filters
|
||||
set --universal sponge_filters sponge_filter_failed sponge_filter_matched
|
||||
end
|
||||
|
||||
# Don't filter out commands that already have been in the history by default
|
||||
if not set --query --universal sponge_allow_previously_successful
|
||||
set --universal sponge_allow_previously_successful true
|
||||
end
|
||||
|
||||
# Consider `0` the only successful exit code by default
|
||||
if not set --query --universal sponge_successful_exit_codes
|
||||
set --universal sponge_successful_exit_codes 0
|
||||
end
|
||||
|
||||
# No active regex patterns by default
|
||||
if not set --query --universal sponge_regex_patterns
|
||||
set --universal sponge_regex_patterns
|
||||
end
|
||||
|
||||
# Attach event handlers
|
||||
functions --query \
|
||||
_sponge_on_prompt \
|
||||
_sponge_on_preexec \
|
||||
_sponge_on_postexec \
|
||||
_sponge_on_exit
|
||||
|
||||
# Initialize empty state for the first run
|
||||
function _sponge_install --on-event sponge_install
|
||||
set --global _sponge_current_command ''
|
||||
set --global _sponge_current_command_exit_code 0
|
||||
set --global _sponge_current_command_previously_in_history false
|
||||
end
|
||||
|
||||
# Clean up variables
|
||||
function _sponge_uninstall --on-event sponge_uninstall
|
||||
_sponge_clear_state
|
||||
set --erase sponge_version
|
||||
end
|
||||
63
config/fish/conf.d/z.fish
Normal file
63
config/fish/conf.d/z.fish
Normal file
@@ -0,0 +1,63 @@
|
||||
if test -z "$Z_DATA"
|
||||
if test -z "$XDG_DATA_HOME"
|
||||
set -U Z_DATA_DIR "$HOME/.local/share/z"
|
||||
else
|
||||
set -U Z_DATA_DIR "$XDG_DATA_HOME/z"
|
||||
end
|
||||
set -U Z_DATA "$Z_DATA_DIR/data"
|
||||
end
|
||||
|
||||
if test ! -e "$Z_DATA"
|
||||
if test ! -e "$Z_DATA_DIR"
|
||||
mkdir -p -m 700 "$Z_DATA_DIR"
|
||||
end
|
||||
touch "$Z_DATA"
|
||||
end
|
||||
|
||||
if test -z "$Z_CMD"
|
||||
set -U Z_CMD z
|
||||
end
|
||||
|
||||
set -U ZO_CMD "$Z_CMD"o
|
||||
|
||||
if test ! -z $Z_CMD
|
||||
function $Z_CMD -d "jump around"
|
||||
__z $argv
|
||||
end
|
||||
end
|
||||
|
||||
if test ! -z $ZO_CMD
|
||||
function $ZO_CMD -d "open target dir"
|
||||
__z -d $argv
|
||||
end
|
||||
end
|
||||
|
||||
if not set -q Z_EXCLUDE
|
||||
set -U Z_EXCLUDE "^$HOME\$"
|
||||
else if contains $HOME $Z_EXCLUDE
|
||||
# Workaround: migrate old default values to a regex (see #90).
|
||||
set Z_EXCLUDE (string replace -r -- "^$HOME\$" '^'$HOME'$$' $Z_EXCLUDE)
|
||||
end
|
||||
|
||||
# Setup completions once first
|
||||
__z_complete
|
||||
|
||||
function __z_on_variable_pwd --on-variable PWD
|
||||
__z_add
|
||||
end
|
||||
|
||||
function __z_uninstall --on-event z_uninstall
|
||||
functions -e __z_on_variable_pwd
|
||||
functions -e $Z_CMD
|
||||
functions -e $ZO_CMD
|
||||
|
||||
if test ! -z "$Z_DATA"
|
||||
printf "To completely erase z's data, remove:\n" >/dev/stderr
|
||||
printf "%s\n" "$Z_DATA" >/dev/stderr
|
||||
end
|
||||
|
||||
set -e Z_CMD
|
||||
set -e ZO_CMD
|
||||
set -e Z_DATA
|
||||
set -e Z_EXCLUDE
|
||||
end
|
||||
36
config/fish/config.fish
Normal file
36
config/fish/config.fish
Normal file
@@ -0,0 +1,36 @@
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ fish/config.fish │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
|
||||
test -e "$HOME/.config/fish/alias.fish" &&
|
||||
source "$HOME/.config/fish/alias.fish"
|
||||
|
||||
test -e "$HOME/.config/fish/exports.fish" &&
|
||||
source "$HOME/.config/fish/exports.fish"
|
||||
|
||||
test -e "$HOME/.dotfiles/config/fzf/key-bindings.fish" &&
|
||||
source "$HOME/.dotfiles/config/fzf/key-bindings.fish"
|
||||
|
||||
if status is-interactive
|
||||
# Commands to run in interactive shell
|
||||
|
||||
# 1Password plugins if op command is available
|
||||
type -q op; and test -e "$HOME/.config/op/plugins.sh" &&
|
||||
source "$HOME/.config/op/plugins.sh"
|
||||
|
||||
# version manager initializers
|
||||
type -q rbenv; and source (rbenv init -|psub)
|
||||
type -q pyenv; and source (pyenv init -|psub)
|
||||
type -q pyenv; and source (pyenv virtualenv-init -|psub)
|
||||
type -q goenv; and source (goenv init -|psub)
|
||||
# type -q fnm; and fnm env --use-on-cd --shell fish | source
|
||||
type -q load_nvm; and load_nvm > /dev/stderr
|
||||
|
||||
# Start tmux if not already running and not in SSH
|
||||
open-tmux # defined in functions/open-tmux.fish
|
||||
end
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
set -gx PATH $PATH $HOME/.lmstudio/bin
|
||||
|
||||
# vim: ft=fish ts=4 sw=4 et:
|
||||
187
config/fish/exports.fish
Normal file
187
config/fish/exports.fish
Normal file
@@ -0,0 +1,187 @@
|
||||
#!/usr/bin/env fish
|
||||
|
||||
# XDG Base Directory Specification
|
||||
set -q XDG_CONFIG_HOME; or set -x XDG_CONFIG_HOME "$HOME/.config"
|
||||
set -q XDG_DATA_HOME; or set -x XDG_DATA_HOME "$HOME/.local/share"
|
||||
set -q XDG_CACHE_HOME; or set -x XDG_CACHE_HOME "$HOME/.cache"
|
||||
set -q XDG_STATE_HOME; or set -x XDG_STATE_HOME "$HOME/.local/state"
|
||||
set -q XDG_BIN_HOME; or set -x XDG_BIN_HOME "$HOME/.local/bin"
|
||||
set -q XDG_RUNTIME_DIR; or set -x XDG_RUNTIME_DIR "$HOME/.local/run"
|
||||
|
||||
# Dotfiles directory
|
||||
set -q DOTFILES; or set -x DOTFILES "$HOME/.dotfiles"
|
||||
|
||||
# Editor settings
|
||||
set -q EDITOR; or set -x EDITOR nvim
|
||||
set -q VISUAL; or set -x VISUAL code
|
||||
set -q HOSTNAME; or set -x HOSTNAME (hostname -s)
|
||||
|
||||
# Add local bin to path
|
||||
fish_add_path "$XDG_BIN_HOME"
|
||||
|
||||
# Add cargo bin to path
|
||||
fish_add_path "$XDG_SHARE_HOME/cargo/bin"
|
||||
|
||||
# NPM/NVM configuration
|
||||
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
|
||||
fish_add_path "$NVM_DIR/bin"
|
||||
fish_add_path "$XDG_CONFIG_HOME/nvm"
|
||||
|
||||
# Yarn configuration
|
||||
set -q YARN_GLOBAL_FOLDER; or set -x YARN_GLOBAL_FOLDER "$XDG_DATA_HOME/yarn"
|
||||
fish_add_path "$YARN_GLOBAL_FOLDER/bin"
|
||||
|
||||
# Mason configuration
|
||||
set -q MASON_HOME; or set -x MASON_HOME "$XDG_DATA_HOME/nvim/mason"
|
||||
fish_add_path "$MASON_HOME/bin"
|
||||
|
||||
# Set Neovim environment variables
|
||||
test -z "$NVIM_STATE" && set -x NVIM_STATE "$XDG_STATE_HOME/nvim"
|
||||
test -z "$NVIM_CONFIG_HOME" && set -x NVIM_CONFIG_HOME "$XDG_CONFIG_HOME/nvim"
|
||||
test -z "$NVIM_DATA_HOME" && set -x NVIM_DATA_HOME "$XDG_DATA_HOME/nvim"
|
||||
test -z "$NVIM_CACHE_HOME" && set -x NVIM_CACHE_HOME "$XDG_CACHE_HOME/nvim"
|
||||
test -z "$NVIM_LOG_PATH" && set -x NVIM_LOG_PATH "$NVIM_STATE/log"
|
||||
test -z "$NVIM_SESSION_PATH" && set -x NVIM_SESSION_PATH "$NVIM_STATE/session"
|
||||
test -z "$NVIM_SHADA_PATH" && set -x NVIM_SHADA_PATH "$NVIM_STATE/shada"
|
||||
test -z "$NVIM_UNDO_PATH" && set -x NVIM_UNDO_PATH "$NVIM_STATE/undo"
|
||||
|
||||
# Ansible configuration
|
||||
set -q ANSIBLE_HOME; or set -x ANSIBLE_HOME "$XDG_CONFIG_HOME/ansible"
|
||||
set -q ANSIBLE_CONFIG; or set -x ANSIBLE_CONFIG "$ANSIBLE_HOME/ansible.cfg"
|
||||
set -q ANSIBLE_GALAXY_CACHE_DIR; or set -x ANSIBLE_GALAXY_CACHE_DIR "$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
# AWS configuration
|
||||
set -q AWS_CONFIG_FILE; or set -x AWS_CONFIG_FILE "$XDG_STATE_HOME/aws/config"
|
||||
set -q AWS_SHARED_CREDENTIALS_FILE; or set -x AWS_SHARED_CREDENTIALS_FILE "$XDG_STATE_HOME/aws/credentials"
|
||||
set -q AWS_SESSION_TOKEN; or set -x AWS_SESSION_TOKEN "$XDG_STATE_HOME/aws/session_token"
|
||||
set -q AWS_DATA_PATH; or set -x AWS_DATA_PATH "$XDG_DATA_HOME/aws"
|
||||
set -q AWS_DEFAULT_OUTPUT; or set -x AWS_DEFAULT_OUTPUT table
|
||||
set -q AWS_CONFIGURE_KEYS; or set -x AWS_CONFIGURE_KEYS true
|
||||
set -q AWS_CONFIGURE_SESSION; or set -x AWS_CONFIGURE_SESSION true
|
||||
set -q AWS_CONFIGURE_SESSION_DURATION; or set -x AWS_CONFIGURE_SESSION_DURATION 7200
|
||||
set -q AWS_CONFIGURE_SESSION_MFA; or set -x AWS_CONFIGURE_SESSION_MFA true
|
||||
set -q AWS_CONFIGURE_PROFILE; or set -x AWS_CONFIGURE_PROFILE true
|
||||
set -q AWS_CONFIGURE_PROMPT; or set -x AWS_CONFIGURE_PROMPT true
|
||||
set -q AWS_CONFIGURE_PROMPT_DEFAULT; or set -x AWS_CONFIGURE_PROMPT_DEFAULT true
|
||||
|
||||
# Brew configuration
|
||||
set -q HOMEBREW_NO_ANALYTICS; or set -x HOMEBREW_NO_ANALYTICS true
|
||||
set -q HOMEBREW_NO_ENV_HINTS; or set -x HOMEBREW_NO_ENV_HINTS true
|
||||
set -q HOMEBREW_BUNDLE_MAS_SKIP; or set -x HOMEBREW_BUNDLE_MAS_SKIP true
|
||||
set -q HOMEBREW_BUNDLE_FILE; or set -x HOMEBREW_BUNDLE_FILE "$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
|
||||
# Composer configuration
|
||||
set -q COMPOSER_HOME; or set -x COMPOSER_HOME "$XDG_STATE_HOME/composer"
|
||||
set -q COMPOSER_BIN; or set -x COMPOSER_BIN "$COMPOSER_HOME/vendor/bin"
|
||||
fish_add_path "$COMPOSER_BIN"
|
||||
|
||||
# direnv configuration
|
||||
set -q DIRENV_LOG_FORMAT; or set -x DIRENV_LOG_FORMAT ''
|
||||
|
||||
# Docker configuration
|
||||
set -q DOCKER_CONFIG; or set -x DOCKER_CONFIG "$XDG_CONFIG_HOME/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
set -q DOCKER_HIDE_LEGACY_COMMANDS; or set -x DOCKER_HIDE_LEGACY_COMMANDS true
|
||||
set -q DOCKER_SCAN_SUGGEST; or set -x DOCKER_SCAN_SUGGEST false
|
||||
|
||||
# FNM / Node.js configuration
|
||||
set -q FNM_DIR; or set -x FNM_DIR "$XDG_DATA_HOME/fnm"
|
||||
fish_add_path "$FNM_DIR"
|
||||
set -q FNM_VERSION_FILE_STRATEGY; or set -x FNM_VERSION_FILE_STRATEGY recursive
|
||||
set -q FNM_USE_ON_CD; or set -x FNM_USE_ON_CD true
|
||||
set -q FNM_COREPACK_ENABLED; or set -x FNM_COREPACK_ENABLED true
|
||||
set -q FNM_RESOLVE_ENGINES; or set -x FNM_RESOLVE_ENGINES true
|
||||
|
||||
# fzf configuration
|
||||
set -q FZF_BASE; or set -x FZF_BASE "$XDG_CONFIG_HOME/fzf"
|
||||
set -q FZF_DEFAULT_OPTS; or set -x FZF_DEFAULT_OPTS '--height 40% --tmux bottom,40% --layout reverse --border top'
|
||||
|
||||
# GnuPG configuration
|
||||
set -q GNUPGHOME; or set -x GNUPGHOME "$XDG_DATA_HOME/gnupg"
|
||||
|
||||
# Go configuration
|
||||
# set -q GOPATH; or set -x GOPATH "$XDG_DATA_HOME/go"
|
||||
set -q GOBIN; or set -x GOBIN "$XDG_BIN_HOME"
|
||||
|
||||
set -q GOENV_ROOT; or set -x GOENV_ROOT "$XDG_DATA_HOME/goenv"
|
||||
set -q GOENV_RC_FILE; or set -x GOENV_RC_FILE "$XDG_CONFIG_HOME/goenv/goenvrc.fish"
|
||||
|
||||
# 1Password configuration
|
||||
set -q OP_CACHE; or set -x OP_CACHE "$XDG_STATE_HOME/1password"
|
||||
|
||||
# Python configuration
|
||||
set -q WORKON_HOME; or set -x WORKON_HOME "$XDG_DATA_HOME/virtualenvs"
|
||||
set -q PYENV_ROOT; or set -x PYENV_ROOT "$XDG_DATA_HOME/pyenv"
|
||||
fish_add_path "$PYENV_ROOT/bin"
|
||||
|
||||
# Poetry configuration
|
||||
set -q POETRY_HOME; or set -x POETRY_HOME "$XDG_DATA_HOME/poetry"
|
||||
fish_add_path "$POETRY_HOME/bin"
|
||||
|
||||
# Rust / cargo configuration
|
||||
set -q CARGO_HOME; or set -x CARGO_HOME "$XDG_DATA_HOME/cargo"
|
||||
set -q CARGO_BIN_HOME; or set -x CARGO_BIN_HOME "$XDG_BIN_HOME"
|
||||
set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
|
||||
set -x RUST_WITHOUT "clippy,docs,rls"
|
||||
fish_add_path "$CARGO_HOME/bin"
|
||||
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin"
|
||||
|
||||
# screen configuration
|
||||
set -q SCREENRC; or set -x SCREENRC "$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
# Sonarlint configuration
|
||||
set -q SONARLINT_HOME; or set -x SONARLINT_HOME "$XDG_DATA_HOME/sonarlint"
|
||||
set -q SONARLINT_BIN; or set -x SONARLINT_BIN "$XDG_BIN_HOME"
|
||||
set -q SONARLINT_USER_HOME; or set -x SONARLINT_USER_HOME "$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# Terraform configuration
|
||||
set -q TF_DATA_DIR; or set -x TF_DATA_DIR "$XDG_STATE_HOME/terraform"
|
||||
set -q TF_CLI_CONFIG_FILE; or set -x TF_CLI_CONFIG_FILE "$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
set -q TF_PLUGIN_CACHE_DIR; or set -x TF_PLUGIN_CACHE_DIR "$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tmux configuration
|
||||
set -q TMUX_TMPDIR; or set -x TMUX_TMPDIR "$XDG_STATE_HOME/tmux"
|
||||
set -q TMUX_CONF_DIR; or set -x TMUX_CONF_DIR "$XDG_CONFIG_HOME/tmux"
|
||||
set -q TMUX_PLUGINS; or set -x TMUX_PLUGINS "$TMUX_CONF_DIR/plugins"
|
||||
set -q TMUX_CONF; or set -x TMUX_CONF "$TMUX_CONF_DIR/tmux.conf"
|
||||
set -q TMUX_PLUGIN_MANAGER_PATH; or set -x TMUX_PLUGIN_MANAGER_PATH "$TMUX_PLUGINS"
|
||||
|
||||
# Source tmux theme activation script for Fish shell
|
||||
if test -f "$DOTFILES/config/tmux/theme-activate.fish"
|
||||
source "$DOTFILES/config/tmux/theme-activate.fish"
|
||||
end
|
||||
|
||||
# tms configuration
|
||||
set -q TMS_CONFIG_FILE; or set -x TMS_CONFIG_FILE "$XDG_CONFIG_HOME/tms/config.toml"
|
||||
|
||||
# wakatime configuration
|
||||
set -q WAKATIME_HOME; or set -x WAKATIME_HOME "$XDG_STATE_HOME/wakatime"
|
||||
x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Miscellaneous configuration
|
||||
set -q CHEAT_USE_FZF; or set -x CHEAT_USE_FZF true
|
||||
set -q SQLITE_HISTORY; or set -x SQLITE_HISTORY "$XDG_CACHE_HOME/sqlite/sqlite_history"
|
||||
|
||||
# Source additional configuration files if they exist
|
||||
if test -f "$DOTFILES/config/fish/exports-secret.fish"
|
||||
source "$DOTFILES/config/fish/exports-secret.fish"
|
||||
end
|
||||
|
||||
if test -f "$DOTFILES/hosts/$HOSTNAME/config/fish/exports.fish"
|
||||
source "$DOTFILES/hosts/$HOSTNAME/config/fish/exports.fish"
|
||||
end
|
||||
|
||||
if test -f "$DOTFILES/hosts/$HOSTNAME/config/fish/exports-secret.fish"
|
||||
source "$DOTFILES/hosts/$HOSTNAME/config/fish/exports-secret.fish"
|
||||
end
|
||||
|
||||
# Configure tide prompt
|
||||
set -gx tide_prompt_transient_enabled true
|
||||
set -gx tide_prompt_add_newline_before true
|
||||
set -gx tide_prompt_min_cols 34
|
||||
set -gx tide_prompt_pad_items false
|
||||
set -gx tide_left_prompt_items context pwd git node python rustc java php pulumi ruby go gcloud kubectl distrobox toolbox terraform aws nix_shell crystal elixir zig newline character
|
||||
set -gx tide_right_prompt_items status jobs direnv
|
||||
set -gx tide_context_hostname_parts 1
|
||||
10
config/fish/fish_plugins
Normal file
10
config/fish/fish_plugins
Normal file
@@ -0,0 +1,10 @@
|
||||
jorgebucaran/fisher
|
||||
ilancosman/tide@v6
|
||||
jethrokuan/z
|
||||
halostatue/fish-macos@v7
|
||||
danhper/fish-ssh-agent
|
||||
halostatue/fish-brew@v3
|
||||
edc/bass
|
||||
meaningful-ooo/sponge
|
||||
nickeb96/puffer-fish
|
||||
jgusta/paths
|
||||
140
config/fish/functions/__bass.py
Normal file
140
config/fish/functions/__bass.py
Normal file
@@ -0,0 +1,140 @@
|
||||
"""
|
||||
To be used with a companion fish function like this:
|
||||
|
||||
function refish
|
||||
set -l _x (python /tmp/bass.py source ~/.nvm/nvim.sh ';' nvm use iojs); source $_x; and rm -f $_x
|
||||
end
|
||||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import json
|
||||
import os
|
||||
import signal
|
||||
import subprocess
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
|
||||
BASH = 'bash'
|
||||
|
||||
FISH_READONLY = [
|
||||
'PWD', 'SHLVL', 'history', 'pipestatus', 'status', 'version',
|
||||
'FISH_VERSION', 'fish_pid', 'hostname', '_', 'fish_private_mode'
|
||||
]
|
||||
|
||||
IGNORED = [
|
||||
'PS1', 'XPC_SERVICE_NAME'
|
||||
]
|
||||
|
||||
def ignored(name):
|
||||
if name == 'PWD': # this is read only, but has special handling
|
||||
return False
|
||||
# ignore other read only variables
|
||||
if name in FISH_READONLY:
|
||||
return True
|
||||
if name in IGNORED or name.startswith("BASH_FUNC"):
|
||||
return True
|
||||
if name.startswith('%'):
|
||||
return True
|
||||
return False
|
||||
|
||||
def escape(string):
|
||||
# use json.dumps to reliably escape quotes and backslashes
|
||||
return json.dumps(string).replace(r'$', r'\$')
|
||||
|
||||
def escape_identifier(word):
|
||||
return escape(word.replace('?', '\\?'))
|
||||
|
||||
def comment(string):
|
||||
return '\n'.join(['# ' + line for line in string.split('\n')])
|
||||
|
||||
def gen_script():
|
||||
# Use the following instead of /usr/bin/env to read environment so we can
|
||||
# deal with multi-line environment variables (and other odd cases).
|
||||
env_reader = "%s -c 'import os,json; print(json.dumps({k:v for k,v in os.environ.items()}))'" % (sys.executable)
|
||||
args = [BASH, '-c', env_reader]
|
||||
output = subprocess.check_output(args, universal_newlines=True)
|
||||
old_env = output.strip()
|
||||
|
||||
pipe_r, pipe_w = os.pipe()
|
||||
if sys.version_info >= (3, 4):
|
||||
os.set_inheritable(pipe_w, True)
|
||||
command = 'eval $1 && ({}; alias) >&{}'.format(
|
||||
env_reader,
|
||||
pipe_w
|
||||
)
|
||||
args = [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])]
|
||||
p = subprocess.Popen(args, universal_newlines=True, close_fds=False)
|
||||
os.close(pipe_w)
|
||||
with os.fdopen(pipe_r) as f:
|
||||
new_env = f.readline()
|
||||
alias_str = f.read()
|
||||
if p.wait() != 0:
|
||||
raise subprocess.CalledProcessError(
|
||||
returncode=p.returncode,
|
||||
cmd=' '.join(sys.argv[1:]),
|
||||
output=new_env + alias_str
|
||||
)
|
||||
new_env = new_env.strip()
|
||||
|
||||
old_env = json.loads(old_env)
|
||||
new_env = json.loads(new_env)
|
||||
|
||||
script_lines = []
|
||||
|
||||
for k, v in new_env.items():
|
||||
if ignored(k):
|
||||
continue
|
||||
v1 = old_env.get(k)
|
||||
if not v1:
|
||||
script_lines.append(comment('adding %s=%s' % (k, v)))
|
||||
elif v1 != v:
|
||||
script_lines.append(comment('updating %s=%s -> %s' % (k, v1, v)))
|
||||
# process special variables
|
||||
if k == 'PWD':
|
||||
script_lines.append('cd %s' % escape(v))
|
||||
continue
|
||||
else:
|
||||
continue
|
||||
if k == 'PATH':
|
||||
value = ' '.join([escape(directory)
|
||||
for directory in v.split(':')])
|
||||
else:
|
||||
value = escape(v)
|
||||
script_lines.append('set -g -x %s %s' % (k, value))
|
||||
|
||||
for var in set(old_env.keys()) - set(new_env.keys()):
|
||||
script_lines.append(comment('removing %s' % var))
|
||||
script_lines.append('set -e %s' % var)
|
||||
|
||||
script = '\n'.join(script_lines)
|
||||
|
||||
alias_lines = []
|
||||
for line in alias_str.splitlines():
|
||||
_, rest = line.split(None, 1)
|
||||
k, v = rest.split("=", 1)
|
||||
alias_lines.append("alias " + escape_identifier(k) + "=" + v)
|
||||
alias = '\n'.join(alias_lines)
|
||||
|
||||
return script + '\n' + alias
|
||||
|
||||
script_file = os.fdopen(3, 'w')
|
||||
|
||||
if not sys.argv[1:]:
|
||||
print('__bass_usage', file=script_file, end='')
|
||||
sys.exit(0)
|
||||
|
||||
try:
|
||||
script = gen_script()
|
||||
except subprocess.CalledProcessError as e:
|
||||
sys.exit(e.returncode)
|
||||
except Exception:
|
||||
print('Bass internal error!', file=sys.stderr)
|
||||
raise # traceback will output to stderr
|
||||
except KeyboardInterrupt:
|
||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||
os.kill(os.getpid(), signal.SIGINT)
|
||||
else:
|
||||
script_file.write(script)
|
||||
53
config/fish/functions/__macos_app_bundleid.fish
Normal file
53
config/fish/functions/__macos_app_bundleid.fish
Normal file
@@ -0,0 +1,53 @@
|
||||
# @halostatue/fish-macos/functions/__macos_app_bundleid.fish:v7.0.1
|
||||
|
||||
function __macos_app_bundleid
|
||||
argparse --name 'app bundleid' x/exact a/all h/help q/quiet s/short -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: app bundleid [options] pattern...
|
||||
|
||||
Shows the bundle identifier for each of the applications found for the
|
||||
pattern (see `app find` for how applications are found).
|
||||
|
||||
Options:
|
||||
-x, --exact Perform exact matches only
|
||||
-a, --all Show all matches
|
||||
-q, --quiet Suppress error output
|
||||
-s, --short Prints out the bundle IDs only
|
||||
-h, --help Show this help
|
||||
|
||||
Examples:
|
||||
> app bundleid 1password
|
||||
/Applications/1Password for Safari.app: com.1password.safari
|
||||
/Applications/1Password.app: com.1password.1password
|
||||
|
||||
> app bundleid -x 1password
|
||||
/Applications/1Password.app: com.1password.1password'
|
||||
return 0
|
||||
end
|
||||
|
||||
if test (count $argv) -eq 0
|
||||
echo >&2 'app bundleid: Not enough arguments.'
|
||||
__macos_app_bundleid --help >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
set --function apps (__macos_app_find $_flag_exact $_flag_all $argv)
|
||||
or return 1
|
||||
|
||||
for app in $apps
|
||||
set --local bundle_id (mdls -name kMDItemCFBundleIdentifier -r $app)
|
||||
|
||||
if test -z $bundle_id
|
||||
set --query _flag_quiet
|
||||
or echo >&2 'Error getting bundle ID for "'$app'"'
|
||||
else
|
||||
if set --query _flag_short
|
||||
echo $bundle_id
|
||||
else
|
||||
echo $app: $bundle_id
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
85
config/fish/functions/__macos_app_find.fish
Normal file
85
config/fish/functions/__macos_app_find.fish
Normal file
@@ -0,0 +1,85 @@
|
||||
# @halostatue/fish-macos/functions/__macos_app_find.fish:v7.0.1
|
||||
|
||||
function __macos_app_find
|
||||
argparse --name 'app find' x/exact a/all q/quiet h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: app find [options] pattern...
|
||||
|
||||
Shows installed apps by the provided pattern or patterns. Searches for
|
||||
apps in /Applications, /Applications/Setapp, /Applications/Utilities,
|
||||
~/Applications, /Appliciations/Xcode.app/Contents/Applications,
|
||||
/Developer/Applications, and /System/Applications.
|
||||
|
||||
Options:
|
||||
-x, --exact Perform exact matches only
|
||||
-a, --all Show all matches
|
||||
-q, --quiet Do not print matches
|
||||
-h, --help Show this help
|
||||
|
||||
Examples:
|
||||
> app find --all 1password
|
||||
/Applications/1Password for Safari.app
|
||||
/Applications/1Password.app
|
||||
|
||||
> app find --exact 1password
|
||||
/Applications/1Password.app'
|
||||
return 0
|
||||
end
|
||||
|
||||
if test (count $argv) -eq 0
|
||||
echo >&2 'app find: Not enough arguments.'
|
||||
__macos_app_find --help >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
set --function a Applications
|
||||
set --function paths \
|
||||
/$a \
|
||||
~/$a \
|
||||
/$a/Setapp \
|
||||
/$a/Utilities \
|
||||
/$a/Xcode.app/Contents/$a \
|
||||
/Developer/Applications \
|
||||
/System/Applications
|
||||
|
||||
set --function found 0
|
||||
|
||||
for pattern in $argv
|
||||
set pattern (string replace '\.app/?$' '' $pattern)
|
||||
set --local apps {$paths}/*.app {$paths}/*.localized/*.app
|
||||
for candidate in $apps
|
||||
set --local found_item 0
|
||||
|
||||
if set --query _flag_exact
|
||||
if string match --ignore-case --entire --quiet /$pattern.app $candidate
|
||||
set found_item 1
|
||||
end
|
||||
else if string match --ignore-case --entire --quiet $pattern $candidate
|
||||
set found_item 1
|
||||
end
|
||||
|
||||
if test $found_item -eq 1
|
||||
set --query _flag_quiet
|
||||
or echo $candidate
|
||||
|
||||
set found (math $found + $found_item)
|
||||
|
||||
set --query _flag_quiet
|
||||
and return 0
|
||||
|
||||
set --query _flag_all
|
||||
or return 0
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
test $found -gt 0
|
||||
and return 0
|
||||
|
||||
set --query _flag_quiet
|
||||
or echo >&2 'No applications found.'
|
||||
return 1
|
||||
end
|
||||
110
config/fish/functions/__macos_app_frontmost.fish
Normal file
110
config/fish/functions/__macos_app_frontmost.fish
Normal file
@@ -0,0 +1,110 @@
|
||||
# @halostatue/fish-macos/functions/__macos_app_frontmost.fish:v7.0.1
|
||||
|
||||
function __macos_app_frontmost::info
|
||||
set --function value (lsappinfo info -only $argv[2] $argv[1] | string split =)[2]
|
||||
or return 1
|
||||
|
||||
string replace --all '"' '' $value
|
||||
return 0
|
||||
end
|
||||
|
||||
function __macos_app_frontmost
|
||||
argparse --name 'app frontmost' \
|
||||
h/help b/bundle-id p/path n/name P/pid a/all \
|
||||
-- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: app frontmost [options]
|
||||
|
||||
Retrieves details about the front-most application.
|
||||
|
||||
Options:
|
||||
-b, --bundle-id Shows the app bundle ID
|
||||
-p, --path Shows the app path
|
||||
-n, --name Shows the app name
|
||||
-P, --pid Shows the PID of the app
|
||||
-a, --all Shows all details
|
||||
-h, --help Show this help
|
||||
|
||||
Example:
|
||||
> app frontmost
|
||||
iTerm2'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function front (lsappinfo front)
|
||||
or return 1
|
||||
|
||||
set --function items 0
|
||||
|
||||
if set --query _flag_all
|
||||
set items 4
|
||||
else
|
||||
set --query _flag_bundle_id _flag_path _flag_name _flag_pid
|
||||
set --local missing $status
|
||||
|
||||
switch $missing
|
||||
case 0
|
||||
set _flag_all 1
|
||||
set items 4
|
||||
case 4
|
||||
set _flag_name 1
|
||||
set items 1
|
||||
case '*'
|
||||
set items (math 4 - $missing)
|
||||
end
|
||||
end
|
||||
|
||||
if set --query _flag_name || set --query _flag_all
|
||||
set --function name (__macos_app_frontmost::info $front name)
|
||||
or return 1
|
||||
end
|
||||
|
||||
if set --query _flag_bundle_id || set --query _flag_all
|
||||
set --function bundle_id (__macos_app_frontmost::info $front bundleID)
|
||||
or return 1
|
||||
end
|
||||
|
||||
if set --query _flag_path || set --query _flag_all
|
||||
set --function bundle_path (__macos_app_frontmost::info $front bundlepath)
|
||||
or return 1
|
||||
end
|
||||
|
||||
if set --query _flag_pid || set --query _flag_all
|
||||
set --function pid (__macos_app_frontmost::info $front pid)
|
||||
or return 1
|
||||
end
|
||||
|
||||
if set --query _flag_all
|
||||
printf "%s: %s %s (%s)\n" $name $bundle_id $bundle_path $pid
|
||||
else
|
||||
if set --query _flag_name
|
||||
printf "%s" $name
|
||||
test $items -gt 1 && printf ": "
|
||||
set items (math $items - 1)
|
||||
end
|
||||
|
||||
if set --query _flag_bundle_id
|
||||
printf "%s" $bundle_id
|
||||
test $items -gt 1 && printf " "
|
||||
set items (math $items - 1)
|
||||
end
|
||||
|
||||
if set --query _flag_path
|
||||
printf "%s" $bundle_path
|
||||
test $items -gt 1 && printf " "
|
||||
set items (math $items - 1)
|
||||
end
|
||||
|
||||
if set --query _flag_pid
|
||||
if test $items -gt 1
|
||||
printf "(%s)" $pid
|
||||
else
|
||||
printf "%s" $pid
|
||||
end
|
||||
end
|
||||
|
||||
printf "\n"
|
||||
end
|
||||
end
|
||||
94
config/fish/functions/__macos_app_icon.fish
Normal file
94
config/fish/functions/__macos_app_icon.fish
Normal file
@@ -0,0 +1,94 @@
|
||||
# @halostatue/fish-macos/functions/__macos_app_icon.fish:v7.0.1
|
||||
|
||||
function __macos_app_icon
|
||||
argparse --name 'app quit' x/exact h/help 'o/output=' 'w/width=' -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: app icon [options] pattern...
|
||||
|
||||
Extracts macOS app icons as PNG (see `app find` for how applications
|
||||
are found).
|
||||
|
||||
Options:
|
||||
-x, --exact Perform exact matches only
|
||||
-oOUTPUT Output to the file or directory specified
|
||||
--output OUTPUT Output to the file or directory specified
|
||||
-wWIDTH Outputs to a maximum of WIDTH pixels
|
||||
--width WIDTH Outputs to a maximum of WIDTH pixels
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
if test (count $argv) -eq 0
|
||||
echo >&2 'app icon: Not enough arguments.'
|
||||
__macos_app_icon --help >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
|
||||
if set --query _flag_exact
|
||||
set --function apps (__macos_app_find --exact $argv)
|
||||
or return 1
|
||||
else
|
||||
set --function apps (__macos_app_find --all $argv)
|
||||
or return 1
|
||||
end
|
||||
|
||||
set --function app_count (count $apps)
|
||||
|
||||
set --function output_path $PWD
|
||||
if not test -z $_flag_output
|
||||
if test -e $_flag_output
|
||||
if test -f $_flag_output
|
||||
if test $app_count -gt 1
|
||||
echo >&2 'app icon: More than one application found, but only one output file specified.'
|
||||
return 1
|
||||
end
|
||||
|
||||
set output_path (dirname $_flag_output)
|
||||
set output_file (basename $_flag_output)
|
||||
else if test -d $_flag_output
|
||||
set output_path $_flag_output
|
||||
else
|
||||
echo >&2 'app icon: Output to a non-file or directory specified.'
|
||||
return 1
|
||||
end
|
||||
else
|
||||
set output_path $_flag_output
|
||||
mkdir -p $output_path
|
||||
end
|
||||
end
|
||||
|
||||
for app in $apps
|
||||
set --local icon $app/Contents/Resources/(
|
||||
defaults read $app/Contents/Info CFBundleIconFile |
|
||||
string replace --regex '\.icns$' ''
|
||||
).icns
|
||||
|
||||
set --local name (basename $app .app)_icon.png
|
||||
set --local tmp $TMPDIR/$name
|
||||
set --local max_width (sips -g pixelWidth $icon | tail -1 | awk '{ print $2; }')
|
||||
|
||||
set --local outfile
|
||||
set --local width
|
||||
|
||||
if test -z $output_file
|
||||
set outfile $output_path/$name
|
||||
else
|
||||
set outfile $output_path/$output_file
|
||||
end
|
||||
|
||||
if test -z $_flag_width
|
||||
set width $max_width
|
||||
else if test $_flag_width -gt $max_width
|
||||
set width $max_width
|
||||
else
|
||||
set width $_flag_width
|
||||
end
|
||||
|
||||
sips -s format png --resampleHeightWidthMax $width $icon --out $outfile >/dev/null 2>&1
|
||||
|
||||
echo Wrote $app icon to $outfile.
|
||||
end
|
||||
end
|
||||
42
config/fish/functions/__macos_app_quit.fish
Normal file
42
config/fish/functions/__macos_app_quit.fish
Normal file
@@ -0,0 +1,42 @@
|
||||
# @halostatue/fish-macos/functions/__macos_app_quit.fish:v7.0.1
|
||||
|
||||
function __macos_app_quit
|
||||
argparse --name 'app quit' x/exact r/restart h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: app quit [options] pattern...
|
||||
|
||||
Quits apps identified by the provided pattern or patterns (see
|
||||
`app find` for how applications are found).
|
||||
|
||||
Options:
|
||||
-x, --exact Quits only applications with exact matches
|
||||
-r, --restart Restarts the application that was quit
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
if test (count $argv) -eq 0
|
||||
echo >&2 'app bundleid: Not enough arguments.'
|
||||
__macos_app_quit --help >&2
|
||||
return 1
|
||||
end
|
||||
|
||||
if set --query _flag_exact
|
||||
set --function apps (__macos_app_find --exact $argv)
|
||||
or return 1
|
||||
else
|
||||
set --function apps (__macos_app_find --all $argv)
|
||||
or return 1
|
||||
end
|
||||
|
||||
for app in $apps
|
||||
printf 'quit app "%s"' $app | osascript >/dev/null
|
||||
|
||||
if set --query _flag_restart
|
||||
sleep 2
|
||||
open -a $app
|
||||
end
|
||||
end
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_cd.fish
Normal file
18
config/fish/functions/__macos_finder_cd.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_cd.fish:v7.0.1
|
||||
|
||||
function __macos_finder_cd
|
||||
argparse --name 'finder cd' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder cd [options] [window#]
|
||||
|
||||
Changes the current path to the path of the Finder window.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
cd (__macos_finder_pwd::get $argv[1])
|
||||
end
|
||||
30
config/fish/functions/__macos_finder_clean.fish
Normal file
30
config/fish/functions/__macos_finder_clean.fish
Normal file
@@ -0,0 +1,30 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_clean.fish:v7.0.1
|
||||
|
||||
function __macos_finder_clean
|
||||
argparse --name 'finder clean' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder clean [options] [path...]
|
||||
|
||||
Removes .DS_Store files from the paths provided, or the current path if
|
||||
one is not provided.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
if set --query argv[1]
|
||||
set --function paths $argv
|
||||
else
|
||||
set --function paths .
|
||||
end
|
||||
|
||||
for path in $paths
|
||||
test -d $path
|
||||
or continue
|
||||
|
||||
find $path -type f -name '*.DS_Store' -ls -delete
|
||||
end
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_column.fish
Normal file
18
config/fish/functions/__macos_finder_column.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_column.fish:v7.0.1
|
||||
|
||||
function __macos_finder_column
|
||||
argparse --name 'finder column' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder column [options] [window#]
|
||||
|
||||
Updates the Finder window to PWD using column view.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
__macos_finder_pwd::update --column $argv
|
||||
end
|
||||
44
config/fish/functions/__macos_finder_desktop_icons.fish
Normal file
44
config/fish/functions/__macos_finder_desktop_icons.fish
Normal file
@@ -0,0 +1,44 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_desktop_icons.fish:v7.0.1
|
||||
|
||||
function __macos_finder_desktop_icons
|
||||
argparse --name 'finder desktop-icons' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder desktop-icons [options] STATE
|
||||
|
||||
Shows or hides the desktop icons. If not specified, shows the current state.
|
||||
|
||||
States:
|
||||
off Hides the desktop icons
|
||||
on Shows the desktop icons
|
||||
[status] Shows desktop icon visibility
|
||||
toggle Toggles desktop icon visibility
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function action (string lower -- $argv[1])
|
||||
set --function key CreateDesktop
|
||||
|
||||
switch $action
|
||||
case off
|
||||
__macos_finder_defaults::set $key false
|
||||
case on
|
||||
__macos_finder_defaults::set $key true
|
||||
case toggle
|
||||
if test (__macos_mac_defaults_query com.apple.Finder $key 1) -eq 1
|
||||
__macos_finder_defaults::set $key false
|
||||
else
|
||||
__macos_finder_defaults::set $key true
|
||||
end
|
||||
case status ''
|
||||
if test (__macos_mac_defaults_query com.apple.Finder $key 1) -eq 1
|
||||
echo 'Desktop icons are hidden.'
|
||||
else
|
||||
echo 'Desktop icons are visible.'
|
||||
end
|
||||
end
|
||||
end
|
||||
45
config/fish/functions/__macos_finder_hidden.fish
Normal file
45
config/fish/functions/__macos_finder_hidden.fish
Normal file
@@ -0,0 +1,45 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_hidden.fish:v7.0.1
|
||||
|
||||
function __macos_finder_hidden
|
||||
argparse --name 'finder hidden' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder hidden [options] STATE
|
||||
|
||||
Shows or hides files that are normally hidden from the Finder. If not
|
||||
specified, shows the current state.
|
||||
|
||||
States:
|
||||
off Hides files that are normally hidden from the Finder
|
||||
on Shows files that are normally hidden from the Finder
|
||||
[status] Shows the status of the hidden files setting
|
||||
toggle Toggles the hidden files setting
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function action (string lower -- $argv[1])
|
||||
set --function key AppleShowAllFiles
|
||||
|
||||
switch $action
|
||||
case off
|
||||
__macos_finder_defaults::set $key false
|
||||
case on
|
||||
__macos_finder_defaults::set $key true
|
||||
case toggle
|
||||
if test (__macos_mac_defaults_query com.apple.Finder $key 0) -eq 1
|
||||
__macos_finder_defaults::set $key false
|
||||
else
|
||||
__macos_finder_defaults::set $key true
|
||||
end
|
||||
case status ''
|
||||
if test (__macos_mac_defaults_query com.apple.Finder $key 0) -eq 1
|
||||
echo 'Hidden files are visible in finder.'
|
||||
else
|
||||
echo 'Hidden files are hidden in finder.'
|
||||
end
|
||||
end
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_icon.fish
Normal file
18
config/fish/functions/__macos_finder_icon.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_icon.fish:v7.0.1
|
||||
|
||||
function __macos_finder_icon
|
||||
argparse --name 'finder icon' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder icon [options] [window#]
|
||||
|
||||
Updates the Finder window to PWD using icon view.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
__macos_finder_pwd::update --icon $argv
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_list.fish
Normal file
18
config/fish/functions/__macos_finder_list.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_list.fish:v7.0.1
|
||||
|
||||
function __macos_finder_list
|
||||
argparse --name 'finder list' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder list [options] [window#]
|
||||
|
||||
Updates the Finder window to PWD using list view.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
__macos_finder_pwd::update --list $argv
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_pushd.fish
Normal file
18
config/fish/functions/__macos_finder_pushd.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_pushd.fish:v7.0.1
|
||||
|
||||
function __macos_finder_pushd
|
||||
argparse --name 'finder pushd' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder pushd [options] [window#]
|
||||
|
||||
Changes the current path to the path of the Finder window with pushd.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
pushd (__macos_finder_pwd::get $argv[1])
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_pwd.fish
Normal file
18
config/fish/functions/__macos_finder_pwd.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_pwd.fish:v7.0.1
|
||||
|
||||
function __macos_finder_pwd
|
||||
argparse --name 'finder pwd' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder pwd [options] [window#]
|
||||
|
||||
Prints the path of the Finder window.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
__macos_finder_pwd::get $argv[1]
|
||||
end
|
||||
60
config/fish/functions/__macos_finder_quarantine.fish
Normal file
60
config/fish/functions/__macos_finder_quarantine.fish
Normal file
@@ -0,0 +1,60 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_quarantine.fish:v7.0.1
|
||||
|
||||
function __macos_finder_quarantine::run
|
||||
set --query argv[1]
|
||||
or return 1
|
||||
|
||||
set --function databases ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*
|
||||
set --function cmd sqlite3 -separator ' | '
|
||||
|
||||
for db in $databases
|
||||
$cmd $db $argv
|
||||
end
|
||||
end
|
||||
|
||||
function __macos_finder_quarantine
|
||||
argparse --name 'finder quarantine' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder [options] [SUBCOMMAND] [FILE...]
|
||||
|
||||
Manage quarantine events.
|
||||
|
||||
Subcommands:
|
||||
[show] Shows quarantine events by agent and URL.
|
||||
clean FILE... Removes quarantine attributes from the specified file(s).
|
||||
At least one file is required.
|
||||
clear Clears all quarantine events.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function verb (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $verb
|
||||
case show ''
|
||||
__macos_finder_quarantine::run "
|
||||
SELECT LSQuarantineAgentName, LSQuarantineDataURLString
|
||||
FROM LSQuarantineEvent
|
||||
WHERE LSQuarantineDataURLString != ''
|
||||
ORDER BY LSQuarantineAgentName, LSQuarantineDataURLString;"
|
||||
case clear
|
||||
__macos_finder_quarantine::run 'DELETE FROM LSQuarantineEvent;'
|
||||
case clean
|
||||
if not set --query argv[1]
|
||||
echo >&2 'finder quarantine clean requires at least one file parameter'
|
||||
return 1
|
||||
end
|
||||
|
||||
for attr in com.apple.{metadata:{kMDItemDownloadedDate,kMDItemWhereFroms},quarantine}
|
||||
xattr -r -d $attr $argv
|
||||
end
|
||||
case '*'
|
||||
echo >&2 "finder quarantine: unknown command '"$verb"'. Use 'show', 'clear', or 'clean'."
|
||||
return 1
|
||||
end
|
||||
end
|
||||
28
config/fish/functions/__macos_finder_selected.fish
Normal file
28
config/fish/functions/__macos_finder_selected.fish
Normal file
@@ -0,0 +1,28 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_selected.fish:v7.0.1
|
||||
|
||||
function __macos_finder_selected
|
||||
argparse --name 'finder selected' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder selected [options] [window#]
|
||||
|
||||
Print the selected files on the command-line.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
echo '
|
||||
tell application "Finder" to set theSelection to selection
|
||||
set output to ""
|
||||
set itemCount to count theSelection
|
||||
repeat with itemIndex from 1 to itemCount
|
||||
if itemIndex is less than itemCount then set theDelimiter to "\n"
|
||||
if itemIndex is itemCount then set theDelimiter to ""
|
||||
set currentItem to (item itemIndex of theSelection as alias)
|
||||
set currentItem to POSIX path of currentItem
|
||||
set output to output & currentItem & theDelimiter
|
||||
end repeat' | osascript
|
||||
end
|
||||
26
config/fish/functions/__macos_finder_track.fish
Normal file
26
config/fish/functions/__macos_finder_track.fish
Normal file
@@ -0,0 +1,26 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_track.fish:v7.0.1
|
||||
|
||||
function __macos_finder_track
|
||||
argparse --name 'finder track' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder track [options]
|
||||
|
||||
Makes the first Finder window track with the shell PWD. This should be used
|
||||
in a single shell instance only, and updates only when the PWD value is
|
||||
updated.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
if not functions --query __macos_finder_tracking
|
||||
function __macos_finder_tracking --on-variable PWD
|
||||
__macos_finder_pwd::update
|
||||
end
|
||||
end
|
||||
|
||||
__macos_finder_pwd::update
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_untrack.fish
Normal file
18
config/fish/functions/__macos_finder_untrack.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_untrack.fish:v7.0.1
|
||||
|
||||
function __macos_finder_untrack
|
||||
argparse --name 'finder untrack' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder untrack [options]
|
||||
|
||||
Unlinks the shell PWD from the first Finder window.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
functions --erase __macos_finder_tracking
|
||||
end
|
||||
18
config/fish/functions/__macos_finder_update.fish
Normal file
18
config/fish/functions/__macos_finder_update.fish
Normal file
@@ -0,0 +1,18 @@
|
||||
# @halostatue/fish-macos/functions/__macos_finder_update.fish:v7.0.1
|
||||
|
||||
function __macos_finder_update
|
||||
argparse --name 'finder update' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: finder update [options] [window#]
|
||||
|
||||
Updates the Finder window to PWD.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
__macos_finder_pwd::update $argv
|
||||
end
|
||||
45
config/fish/functions/__macos_mac_airdrop.fish
Normal file
45
config/fish/functions/__macos_mac_airdrop.fish
Normal file
@@ -0,0 +1,45 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_airdrop.fish:v7.0.1
|
||||
|
||||
function __macos_mac_airdrop
|
||||
argparse --name 'mac airdrop' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac airdrop STATE
|
||||
|
||||
Turns AirDrop on or off. Requires administrative permissions and
|
||||
executes with sudo.
|
||||
|
||||
States:
|
||||
off Disables AirDrop.
|
||||
on Enables AirDrop.
|
||||
[status] Shows the status of AirDrop.
|
||||
toggle Toggles the status of AirDrop.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function subcommand (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $subcommand
|
||||
case on
|
||||
sudo ifconfig awdl0 up
|
||||
case off
|
||||
sudo ifconfig awdl0 down
|
||||
case status ''
|
||||
ifconfig awdl0 | awk '/status:/ { print $2; }'
|
||||
case toggle
|
||||
if test (__macos_mac_airdrop status) == active
|
||||
__macos_mac_airdrop off
|
||||
else
|
||||
__macos_mac_airdrop on
|
||||
end
|
||||
case '*'
|
||||
echo >&2 'mac airdrop: unknown state.'
|
||||
__macos_mac_airdrop --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
75
config/fish/functions/__macos_mac_airport.fish
Normal file
75
config/fish/functions/__macos_mac_airport.fish
Normal file
@@ -0,0 +1,75 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_airport.fish:v7.0.1
|
||||
|
||||
function __macos_mac_airport::ssid
|
||||
__macos_mac_airport::run -I | string replace --filter --regex '\s+SSID: (\S+)' '$1'
|
||||
end
|
||||
|
||||
function __macos_mac_airport::run
|
||||
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport \
|
||||
$argv
|
||||
end
|
||||
|
||||
function __macos_mac_airport
|
||||
argparse --name 'mac airport' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac airport STATE
|
||||
mac airport SUBCOMMAND [SSID]
|
||||
|
||||
Performs various WiFi (AirPort) operations. If no state or subcommand is
|
||||
provided, the scan subcommand will be run by default. Otherwise a state (off,
|
||||
on, toggle) or a subcommand must be provided.
|
||||
|
||||
States:
|
||||
off Disables the WiFi adapter.
|
||||
on Enables the WiFi adapter.
|
||||
toggle Toggles the status of the WiFi adapter.
|
||||
|
||||
Subcommands:
|
||||
password [SSID] Shows the password of the current or specified SSID.
|
||||
scan Scans for WiFi networks..
|
||||
ssid Shows the current WiFi network SSID.
|
||||
status Shows the status of the WiFi adapter.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function cmd (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $cmd
|
||||
case scan ''
|
||||
printf "Scanning...\r"
|
||||
__macos_mac_airport::run -s
|
||||
case network ssid
|
||||
__macos_mac_airport::ssid
|
||||
case off
|
||||
networksetup -setairportpower en0 off
|
||||
case on
|
||||
networksetup -setairportpower en0 on
|
||||
case status
|
||||
networksetup -getairportpower en0 | string replace --regex '^[^:]+: ' '' | string lower
|
||||
case toggle
|
||||
if test (__macos_mac_airport status) == on
|
||||
__macos_mac_airport off
|
||||
else
|
||||
__macos_mac_airport on
|
||||
end
|
||||
case password
|
||||
set --local ssid
|
||||
if set --query argv[1]
|
||||
set ssid $argv[1]
|
||||
else
|
||||
set ssid (__macos_mac_airport::ssid)
|
||||
end
|
||||
|
||||
security find-generic-password -D "AirPort network password" -l $ssid -gw
|
||||
case '*'
|
||||
echo >&2 'mac airport: Unknown command.'
|
||||
__macos_mac_airport --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
38
config/fish/functions/__macos_mac_brightness.fish
Normal file
38
config/fish/functions/__macos_mac_brightness.fish
Normal file
@@ -0,0 +1,38 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_brightness.fish:v7.0.1
|
||||
|
||||
function __macos_mac_brightness
|
||||
argparse --name 'mac brightness' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac brightness [options] DIRECTION
|
||||
|
||||
Adjust the screen brightness level.
|
||||
|
||||
Direction:
|
||||
up Increases the screen brightness level.
|
||||
down Decreases the screen brightness level.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function direction (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $direction
|
||||
case down
|
||||
echo 'tell application "System Events"
|
||||
key code 145
|
||||
end tell' | osascript >/dev/null
|
||||
case up ''
|
||||
echo 'tell application "System Events"
|
||||
key code 144
|
||||
end tell' | osascript >/dev/null
|
||||
case '*'
|
||||
echo >&2 'mac brightness: Unknown direction'
|
||||
__macos_mac_brightness --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
9
config/fish/functions/__macos_mac_defaults_query.fish
Normal file
9
config/fish/functions/__macos_mac_defaults_query.fish
Normal file
@@ -0,0 +1,9 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_defaults_query.fish:v7.0.1
|
||||
|
||||
function __macos_mac_defaults_query
|
||||
if set --function value (defaults read $argv[1] $argv[2] 2>/dev/null)
|
||||
echo $value
|
||||
else
|
||||
echo $argv[3]
|
||||
end
|
||||
end
|
||||
19
config/fish/functions/__macos_mac_flushdns.fish
Normal file
19
config/fish/functions/__macos_mac_flushdns.fish
Normal file
@@ -0,0 +1,19 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_flushdns.fish:v7.0.1
|
||||
|
||||
function __macos_mac_flushdns
|
||||
argparse --name 'mac flushdns' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac flushdns [options]
|
||||
|
||||
Flushes the DNS cache. Requires sudo.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
sudo dscacheutil -flushcache
|
||||
and sudo killall -HUP mDNSResponder
|
||||
end
|
||||
62
config/fish/functions/__macos_mac_font_smoothing.fish
Normal file
62
config/fish/functions/__macos_mac_font_smoothing.fish
Normal file
@@ -0,0 +1,62 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_font_smoothing.fish:v7.0.1
|
||||
|
||||
function __macos_mac_font_smoothing
|
||||
argparse --name 'mac font-smoothing' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac font-smoothing [options] off|on [APP...]
|
||||
|
||||
Enables or disables font smoothing. If no apps are provided, sets the
|
||||
global font smoothing preference. If apps are provided, font smoothing
|
||||
will be set for each app. See `app bundleid` for how apps are resolved.
|
||||
|
||||
States:
|
||||
off Turns off font smoothing
|
||||
on Turns on font smoothing
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function state (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $state
|
||||
case on
|
||||
if test (count $argv) -eq 0
|
||||
defaults delete -g CGFontRenderingFontSmoothingDisabled
|
||||
else
|
||||
for app in (__macos_app_bundleid --exact --short --all $argv)
|
||||
defaults delete $app CGFontRenderingFontSmoothingDisabled
|
||||
|
||||
if test $app = com.microsoft.VSCode
|
||||
defaults delete $app.helper CGFontRenderingFontSmoothingDisabled
|
||||
defaults delete $app.helper.EH CGFontRenderingFontSmoothingDisabled
|
||||
defaults delete $app.helper.NP CGFontRenderingFontSmoothingDisabled
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
case off
|
||||
if test (count $argv) -eq 0
|
||||
defaults write -g CGFontRenderingFontSmoothingDisabled -bool false
|
||||
else
|
||||
for app in (__macos_app_bundleid --exact --short --all $argv)
|
||||
defaults write $app CGFontRenderingFontSmoothingDisabled -bool false
|
||||
|
||||
if test $app = com.microsoft.VSCode
|
||||
defaults write $app.helper CGFontRenderingFontSmoothingDisabled -bool false
|
||||
defaults write $app.helper.EH CGFontRenderingFontSmoothingDisabled -bool false
|
||||
defaults write $app.helper.NP CGFontRenderingFontSmoothingDisabled -bool false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
case '*'
|
||||
echo >&2 'mac font-smoothing: Unknown state.'
|
||||
__macos_mac_font_smoothing --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
20
config/fish/functions/__macos_mac_lsclean.fish
Normal file
20
config/fish/functions/__macos_mac_lsclean.fish
Normal file
@@ -0,0 +1,20 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_lsclean.fish:v7.0.1
|
||||
|
||||
function __macos_mac_lsclean
|
||||
argparse --name 'mac lsclean' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac lsclean [options]
|
||||
|
||||
Cleans the LaunchServices registration list.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister \
|
||||
-kill -r -domain local -domain system -domain user
|
||||
and killall Finder
|
||||
end
|
||||
68
config/fish/functions/__macos_mac_mail.fish
Normal file
68
config/fish/functions/__macos_mac_mail.fish
Normal file
@@ -0,0 +1,68 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_mail.fish:v7.0.1
|
||||
|
||||
# Speed up Mail.app by vacuuming the Envelope Index
|
||||
# - Code from: http://web.archive.org/web/20071008123746/http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
|
||||
# - Originally by "pmbuko" with modifications by Romulo
|
||||
# - Updated by Brett Terpstra 2012
|
||||
# - Updated by Mathias Törnblom 2015 to support V3 in El Capitan and still keep backwards compatibility
|
||||
# - Updated by Andrei Miclaus 2017 to support V4 in Sierra
|
||||
# - Updated by Austin Ziegler 2022 to not actually care what the OS version is (and translated to fish). The only
|
||||
# restriction is that you must have opened Mail.app at least once on any OS upgrade so that if any version changes
|
||||
# have happened, Mail.app has taken care of that for you.
|
||||
function __macos_mac_mail
|
||||
argparse --name 'mac mail' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac mail [options] SUBCOMMAND [arg]
|
||||
|
||||
Performs operations on Mail.app configuration and database.
|
||||
|
||||
Before running vacuum after any OS upgrade, Mail.app must have been opened
|
||||
at least once so that the database and index formats have been updated.
|
||||
|
||||
Subcommands:
|
||||
vacuum Vacuums the envelope index to improve performance.
|
||||
attachments inline Sets Mail.app attachment handling to inline.
|
||||
attachments icon Sets Mail.app attachment handling to icon.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function subcommand (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $subcommand
|
||||
case vacuum
|
||||
set --function mail_version (
|
||||
path filter --type dir ~/Library/Mail/* |
|
||||
path basename |
|
||||
string match --all --entire --regex V\\d
|
||||
)
|
||||
set --function mail_path ~/Library/Mail/$mail_version/MailData/Envelope\ Index
|
||||
|
||||
osascript -e 'tell application "Mail" to quit'
|
||||
|
||||
set --function before (ls -lnah $mail_path | awk '{ print $5; }')
|
||||
/usr/bin/sqlite3 $mail_path vacuum
|
||||
set --function after (ls -lnah $mail_path | awk '{ print $5; }')
|
||||
|
||||
printf "Mail index before: %s\nMail index after: %s\n" $before $after
|
||||
osascript -e 'tell application "Mail" to activate'
|
||||
|
||||
case attachments
|
||||
switch (string lower -- $argv[1])
|
||||
case inline
|
||||
defaults delete com.apple.mail DisableInlineAttachmentViewing
|
||||
case icon
|
||||
defaults write com.apple.mail DisableInlineAttachmentViewing -bool true
|
||||
end
|
||||
|
||||
case '*'
|
||||
echo >&2 'mac mail: Unknown command.'
|
||||
__macos_mac_mail --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
66
config/fish/functions/__macos_mac_proxy_icon.fish
Normal file
66
config/fish/functions/__macos_mac_proxy_icon.fish
Normal file
@@ -0,0 +1,66 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_proxy_icon.fish:v7.0.1
|
||||
|
||||
function __macos_mac_proxy_icon
|
||||
argparse --name 'mac proxy-icon' h/help q/query -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac proxy-icon [options] STATE
|
||||
|
||||
Enables or disables the visibility of the proxy icon without delay. macOS
|
||||
versions older than Monterey always show the proxy icon.
|
||||
|
||||
States:
|
||||
FLOAT Sets the display of the proxy icon to FLOAT fractional seconds.
|
||||
off Sets the display of the proxy icon to default.
|
||||
on Sets the display of the proxy icon to 0 seconds.
|
||||
[status] Shows the duration of the proxy icon display.
|
||||
toggle Toggles the display of the proxy icon.
|
||||
|
||||
Options:
|
||||
-q, --query When getting status, suppresses output.
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function state (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $state
|
||||
case status ''
|
||||
set --function value (__macos_mac_defaults_query -g NSToolbarTitleViewRolloverDelay 0.5)
|
||||
|
||||
if set --query _flag_query
|
||||
test $value -eq 0
|
||||
else if test $value -eq 0
|
||||
printf "immediate (0 seconds)\n"
|
||||
else
|
||||
printf "%0.2f seconds\n" $value
|
||||
end
|
||||
|
||||
case toggle
|
||||
if __macos_mac_proxy_icon --query status
|
||||
__macos_mac_proxy_icon off
|
||||
else
|
||||
__macos_mac_proxy_icon on
|
||||
end
|
||||
|
||||
case on
|
||||
defaults write -g NSToolbarTitleViewRolloverDelay -float 0
|
||||
and killall Finder
|
||||
|
||||
case off
|
||||
defaults delete -g NSToolbarTitleViewRolloverDelay
|
||||
and killall Finder
|
||||
|
||||
case '*'
|
||||
if string match --regex '^\\d+$|^\\d*\.\\d+$' $state
|
||||
defaults write -g NSToolbarTitleViewRolloverDelay -float $state
|
||||
and killall Finder
|
||||
else
|
||||
echo >&2 'mac proxy-icon: Unknown state.'
|
||||
__macos_mac_proxy_icon --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
end
|
||||
22
config/fish/functions/__macos_mac_serialnumber.fish
Normal file
22
config/fish/functions/__macos_mac_serialnumber.fish
Normal file
@@ -0,0 +1,22 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_serialnumber.fish:v7.0.1
|
||||
|
||||
function __macos_mac_serialnumber
|
||||
argparse --name 'mac serialnumber' h/help c/copy -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac serialnumber [options]
|
||||
|
||||
Gets the serial number for the current macOS device.
|
||||
|
||||
Options:
|
||||
-c, --copy Copy to the clipboard
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function serial (ioreg -l | string replace --filter --regex --all '^.*"IOPlatformSerialNumber"\s+=\s+"([^"]+)"' '$1')
|
||||
|
||||
set --query _flag_copy && echo $serial | pbcopy
|
||||
echo $serial
|
||||
end
|
||||
42
config/fish/functions/__macos_mac_touchid.fish
Normal file
42
config/fish/functions/__macos_mac_touchid.fish
Normal file
@@ -0,0 +1,42 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_touchid.fish:v7.0.1
|
||||
|
||||
function __macos_mac_touchid
|
||||
argparse --name 'mac touchid' h/help q/quiet -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac touchid SUBSYSTEM [STATE]
|
||||
|
||||
Enables or disables Touch ID support. Requires administrative permissions
|
||||
and executes with sudo.
|
||||
|
||||
Subsystems:
|
||||
sudo Manages Touch ID support for sudo
|
||||
|
||||
States:
|
||||
off Disables Touch ID.
|
||||
on Enables Touch ID.
|
||||
[status] Shows the status of Touch ID.
|
||||
toggle Toggles the status of Touch ID.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function subsystem (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
if set --query _flag_quiet
|
||||
set --append argv --quiet
|
||||
end
|
||||
|
||||
switch $subsystem
|
||||
case sudo
|
||||
__macos_mac_touchid_sudo $argv
|
||||
case '*'
|
||||
echo >&2 'mac touchid: unknown subsystem.'
|
||||
__macos_mac_touchid --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
195
config/fish/functions/__macos_mac_touchid_sudo.fish
Normal file
195
config/fish/functions/__macos_mac_touchid_sudo.fish
Normal file
@@ -0,0 +1,195 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_touchid_sudo.fish:v7.0.1
|
||||
|
||||
# Massively simplified. This version _only_ works if /etc/pam.d/sudo includes `auth
|
||||
# include sudo_local` and requires manual removal of `pam_reattach` and `pam_tid` from
|
||||
# `/etc/pam.d/sudo` _manually_ if present.
|
||||
|
||||
function __macos_mac_touchid_sudo::check_supported
|
||||
if string match -rq '^\s*auth\s+include\s+sudo_local$' </etc/pam.d/sudo
|
||||
return 0
|
||||
end
|
||||
|
||||
echo "Unsupported sudo configuration, cannot find 'auth include sudo_local'. \
|
||||
If your macOS installation supports 'include', add this at the top:" |
|
||||
fmt -s >&2
|
||||
printf >&2 "\n auth include sudo_local\n\n"
|
||||
printf >&2 "Once this has been added, try again.\n"
|
||||
|
||||
return 1
|
||||
end
|
||||
|
||||
function __macos_mac_touchid_sudo::check_old_install
|
||||
set --function found
|
||||
|
||||
string match -rq '^\s*auth\s+sufficient\s+pam_tid\.so' </etc/pam.d/sudo
|
||||
and set --append found pam_tid
|
||||
|
||||
string match -rq '^\s*auth\s+optional\s+.+pam_reattach\.so' </etc/pam.d/sudo
|
||||
and set --append found pam_reattach
|
||||
|
||||
if set --query found[1]
|
||||
set found (string join ' and ' $found)
|
||||
printf >&2 "Sudo support for "$found" present in /etc/pam.d/sudo.\n\n"
|
||||
echo "This is unsupported by 'mac touchid sudo' and must be manually \
|
||||
removed before continuing." | fmt -s >&2
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
return 1
|
||||
end
|
||||
|
||||
function __macos_mac_touchid_sudo::print_status
|
||||
set --query _flag_quiet
|
||||
or printf "%-15s: %s\n" $argv
|
||||
end
|
||||
|
||||
function __macos_mac_touchid_sudo::remove_one
|
||||
path is --type file --perm read /etc/pam.d/sudo_local
|
||||
and grep -q $argv[1] /etc/pam.d/sudo_local
|
||||
and sudo sed -i '' -e "/$argv[1]/d" /etc/pam.d/sudo_local
|
||||
end
|
||||
|
||||
function __macos_mac_touchid_sudo::remove
|
||||
osascript -e 'tell application "System Preferences" to quit'
|
||||
|
||||
for ext in pam_tid pam_reattach
|
||||
__macos_mac_touchid_sudo::remove_one {$ext} /etc/pam.d/sudo_local
|
||||
and __macos_mac_touchid_sudo::print_status $ext disabled
|
||||
end
|
||||
|
||||
if ! test -s /etc/pam.d/sudo_local
|
||||
# If /etc/pam.d/sudo_local is empty, remove it.
|
||||
sudo rm -f /etc/pam.d/sudo_local
|
||||
end
|
||||
end
|
||||
|
||||
function __macos_mac_touchid_sudo::add
|
||||
set --function targets
|
||||
|
||||
test -f /etc/pam.d/sudo_local
|
||||
or sudo touch /etc/pam.d/sudo_local
|
||||
|
||||
if set --query argv[1]
|
||||
set --function reattach $argv[1]
|
||||
|
||||
if string match -rq '^\s*auth\s+optional\s+'$argv[1] </etc/pam.d/sudo_local
|
||||
if string match -rq '^\s*auth\s+sufficient\s+pam_tid\.so' </etc/pam.d/sudo_local
|
||||
__macos_mac_touchid_sudo::print_status pam_reattach enabled
|
||||
__macos_mac_touchid_sudo::print_status pam_tid enabled
|
||||
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
set --append targets pam_reattach pam_tid
|
||||
else if string match -rq '^\s*auth\s+sufficient\s+pam_tid\.so' </etc/pam.d/sudo_local
|
||||
__macos_mac_touchid_sudo::print_status pam_tid enabled
|
||||
else
|
||||
set --append targets pam_tid
|
||||
end
|
||||
|
||||
osascript -e 'tell application "System Preferences" to quit'
|
||||
|
||||
for target in $targets
|
||||
if grep -q $target /etc/pam.d/sudo_local
|
||||
__macos_mac_touchid_sudo::remove_one $target /etc/pam.d/sudo_local
|
||||
end
|
||||
end
|
||||
|
||||
if set --query reattach
|
||||
printf "%-10s %-14s %s\n" \
|
||||
auth optional $reattach \
|
||||
auth sufficient pam_tid.so |
|
||||
sudo tee -a /etc/pam.d/sudo_local >/dev/null
|
||||
and begin
|
||||
__macos_mac_touchid_sudo::print_status pam_reattach enabled
|
||||
__macos_mac_touchid_sudo::print_status pam_tid enabled
|
||||
end
|
||||
else
|
||||
printf "%-10s %-14s %s\n" auth sufficient pam_tid.so |
|
||||
sudo tee -a /etc/pam.d/sudo_local >/dev/null
|
||||
and __macos_mac_touchid_sudo::print_status pam_tid enabled
|
||||
end
|
||||
end
|
||||
|
||||
function __macos_mac_touchid_sudo
|
||||
argparse --name 'mac touchid sudo' h/help q/quiet -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac touchid sudo [STATE]
|
||||
|
||||
Enables or disables Touch ID support for sudo. Requires administrative
|
||||
permissions to edit /etc/pam.d/sudo_local and executes with sudo.
|
||||
|
||||
If pam_reattach is installed, this will be managed as well. Note that if
|
||||
pam_reattach is installed using sudo, it is imperative that Touch ID
|
||||
support be disabled first or you may be in a situation where you cannot
|
||||
use sudo. Note that MacPorts-installed pam_reattach will never be used.
|
||||
|
||||
States:
|
||||
off Disables Touch ID.
|
||||
on Enables Touch ID.
|
||||
[status] Shows the status of Touch ID.
|
||||
toggle Toggles the status of Touch ID.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
|
||||
__macos_mac_touchid_sudo::check_supported
|
||||
or return
|
||||
|
||||
__macos_mac_touchid_sudo::check_old_install
|
||||
and return
|
||||
|
||||
set --function subcommand (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $subcommand
|
||||
case on
|
||||
set --local reattach /opt/local /opt/homebrew /usr/local /usr
|
||||
set reattach (path filter --type file $reattach/lib/pam/pam_reattach.so)
|
||||
|
||||
if set --query reattach[1]
|
||||
set reattach (string replace --all --regex / \\/ $reattach[1])
|
||||
end
|
||||
|
||||
__macos_mac_touchid_sudo::add $reattach
|
||||
|
||||
case off
|
||||
__macos_mac_touchid_sudo::remove
|
||||
|
||||
case status ''
|
||||
set --local pam_tid disabled
|
||||
set --local pam_reattach disabled
|
||||
|
||||
grep -q pam_tid.so /etc/pam.d/sudo_local
|
||||
and set pam_tid enabled
|
||||
|
||||
grep -q pam_reattach.so /etc/pam.d/sudo_local
|
||||
and set pam_reattach enabled
|
||||
|
||||
if set --query _flag_quiet
|
||||
test $pam_tid = enabled
|
||||
else
|
||||
__macos_mac_touchid_sudo::print_status pam_tid $pam_tid
|
||||
__macos_mac_touchid_sudo::print_status pam_reattach $pam_reattach
|
||||
end
|
||||
|
||||
case toggle
|
||||
if __macos_mac_touchid_sudo status --quiet
|
||||
__macos_mac_touchid_sudo off
|
||||
else
|
||||
__macos_mac_touchid_sudo on
|
||||
end
|
||||
|
||||
case '*'
|
||||
echo >&2 'mac touchid: unknown state.'
|
||||
__macos_mac_touchid_sudo --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
60
config/fish/functions/__macos_mac_transparency.fish
Normal file
60
config/fish/functions/__macos_mac_transparency.fish
Normal file
@@ -0,0 +1,60 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_transparency.fish:v7.0.1
|
||||
|
||||
function __macos_mac_transparency
|
||||
argparse --name 'mac transparency' h/help q/query -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac transparency [options] STATE
|
||||
|
||||
Enables or disables interface transparency by setting the universal
|
||||
access "reduce transparency" setting.
|
||||
|
||||
States:
|
||||
off Disables interface transparency
|
||||
on Enables interface transparency
|
||||
[status] Shows the status of interface transparency
|
||||
toggle Toggles interface transparency
|
||||
|
||||
Options:
|
||||
-q, --query When getting status, suppresses output.
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set function state (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $state
|
||||
case status ''
|
||||
set function value (__macos_mac_defaults_query com.apple.universalaccess reduceTransparency 0)
|
||||
|
||||
if set --query _flag_query
|
||||
test $value -eq 0
|
||||
else
|
||||
if test $value -eq 0
|
||||
echo on
|
||||
else
|
||||
echo off
|
||||
end
|
||||
end
|
||||
|
||||
case on
|
||||
defaults delete com.apple.universalaccess reduceTransparency
|
||||
|
||||
case off
|
||||
defaults write com.apple.universalaccess reduceTransparency -bool true
|
||||
|
||||
case toggle
|
||||
if __macos_mac_transparency status --query
|
||||
__macos_mac_transparency off
|
||||
else
|
||||
__macos_mac_transparency on
|
||||
end
|
||||
|
||||
case '*'
|
||||
echo >&2 'mac transparency: unknown state'
|
||||
__macos_mac_transparency --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
86
config/fish/functions/__macos_mac_version.fish
Normal file
86
config/fish/functions/__macos_mac_version.fish
Normal file
@@ -0,0 +1,86 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_version.fish:v7.0.1
|
||||
|
||||
function __macos_mac_version
|
||||
argparse \
|
||||
--exclusive s,v \
|
||||
--exclusive l,v \
|
||||
--exclusive s,c \
|
||||
--exclusive l,c \
|
||||
--exclusive v,c \
|
||||
h/help s/simple l/lowercase v/version c/comparable -- $argv
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac version [options]
|
||||
|
||||
Shows the current mac version.
|
||||
|
||||
Options:
|
||||
-s, --simple Removes spaces from the version displayed
|
||||
-l, --lowercase Converts the version to all lowercase
|
||||
-c, --comparable Outputs the comparable version value
|
||||
-v, --version Outputs the macOS version (same as sw_vers -productVersion)'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function os_version (sw_vers -productVersion)
|
||||
|
||||
if set --query _flag_version
|
||||
echo $os_version
|
||||
return $status
|
||||
end
|
||||
|
||||
set os_version (__macos_version_to_comparable $os_version)
|
||||
or return 1
|
||||
|
||||
if set --query _flag_comparable
|
||||
echo $os_version
|
||||
return 0
|
||||
end
|
||||
|
||||
switch $os_version
|
||||
case 1005000
|
||||
set os_version Leopard
|
||||
case 1006000
|
||||
set os_version Snow Leopard
|
||||
case 1007000
|
||||
set os_version Lion
|
||||
case 1008000
|
||||
set os_version Mountain Lion
|
||||
case 1009000
|
||||
set os_version Mavericks
|
||||
case 1010000
|
||||
set os_version Yosemite
|
||||
case 1011000
|
||||
set os_version El Capitan
|
||||
case 1012000
|
||||
set os_version Sierra
|
||||
case 1013000
|
||||
set os_version High Sierra
|
||||
case 1014000
|
||||
set os_version Mojave
|
||||
case 1015000
|
||||
set os_version Catalina
|
||||
case 1100000
|
||||
set os_version Big Sur
|
||||
case 1200000
|
||||
set os_version Monterey
|
||||
case 1300000
|
||||
set os_version Ventura
|
||||
case 1400000
|
||||
set os_version Sonoma
|
||||
case 1500000
|
||||
set os_version Sequoia
|
||||
case '*'
|
||||
return 1
|
||||
end
|
||||
|
||||
if set --query _flag_simple
|
||||
set os_version (string replace --all ' ' '' "$os_version")
|
||||
end
|
||||
|
||||
if set --query _flag_lowercase
|
||||
set os_version (string lower -- "$os_version")
|
||||
end
|
||||
|
||||
echo $os_version
|
||||
end
|
||||
45
config/fish/functions/__macos_mac_vol.fish
Normal file
45
config/fish/functions/__macos_mac_vol.fish
Normal file
@@ -0,0 +1,45 @@
|
||||
# @halostatue/fish-macos/functions/__macos_mac_vol.fish:v7.0.1
|
||||
|
||||
function __macos_mac_vol
|
||||
argparse --name 'mac vol' h/help -- $argv
|
||||
or return 1
|
||||
|
||||
if set --query _flag_help
|
||||
echo 'Usage: mac vol [options] LEVEL
|
||||
|
||||
Control the volume level.
|
||||
|
||||
Levels:
|
||||
mute Mutes the volume level.
|
||||
unmute Unmutes the volume level.
|
||||
0 .. 100 Sets the volume level at LEVEL %.
|
||||
[show] Shows the current volume level.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help'
|
||||
return 0
|
||||
end
|
||||
|
||||
set --function action (string lower -- $argv[1])
|
||||
set --erase argv[1]
|
||||
|
||||
switch $action
|
||||
case mute
|
||||
osascript -e 'set volume output muted true'
|
||||
case unmute
|
||||
osascript -e 'set volume output muted false'
|
||||
case (seq 0 100)
|
||||
osascript -e "set volume output volume "$action
|
||||
case show ''
|
||||
if test (osascript -e 'output muted of (get volume settings)') = true
|
||||
echo muted
|
||||
else
|
||||
osascript -e "output volume of (get volume settings)"
|
||||
end
|
||||
|
||||
case '*'
|
||||
echo >&2 'mac vol: Unknown level'
|
||||
__macos_mac_vol --help >&2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
23
config/fish/functions/__ssh_agent_is_started.fish
Normal file
23
config/fish/functions/__ssh_agent_is_started.fish
Normal file
@@ -0,0 +1,23 @@
|
||||
function __ssh_agent_is_started -d "check if ssh agent is already started"
|
||||
if test -n "$SSH_CONNECTION"
|
||||
# This is an SSH session
|
||||
ssh-add -l > /dev/null 2>&1
|
||||
if test $status -eq 0 -o $status -eq 1
|
||||
# An SSH agent was forwarded
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
if begin; test -f "$SSH_ENV"; and test -z "$SSH_AGENT_PID"; end
|
||||
source $SSH_ENV > /dev/null
|
||||
end
|
||||
|
||||
if test -z "$SSH_AGENT_PID"
|
||||
return 1
|
||||
end
|
||||
|
||||
ssh-add -l > /dev/null 2>&1
|
||||
if test $status -eq 2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
5
config/fish/functions/__ssh_agent_start.fish
Normal file
5
config/fish/functions/__ssh_agent_start.fish
Normal file
@@ -0,0 +1,5 @@
|
||||
function __ssh_agent_start -d "start a new ssh agent"
|
||||
ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
|
||||
chmod 600 $SSH_ENV
|
||||
source $SSH_ENV > /dev/null
|
||||
end
|
||||
174
config/fish/functions/__z.fish
Normal file
174
config/fish/functions/__z.fish
Normal file
@@ -0,0 +1,174 @@
|
||||
function __z -d "Jump to a recent directory."
|
||||
function __print_help -d "Print z help."
|
||||
printf "Usage: $Z_CMD [-celrth] string1 string2...\n\n"
|
||||
printf " -c --clean Removes directories that no longer exist from $Z_DATA\n"
|
||||
printf " -d --dir Opens matching directory using system file manager.\n"
|
||||
printf " -e --echo Prints best match, no cd\n"
|
||||
printf " -l --list List matches and scores, no cd\n"
|
||||
printf " -p --purge Delete all entries from $Z_DATA\n"
|
||||
printf " -r --rank Search by rank\n"
|
||||
printf " -t --recent Search by recency\n"
|
||||
printf " -x --delete Removes the current directory from $Z_DATA\n"
|
||||
printf " -h --help Print this help\n\n"
|
||||
end
|
||||
function __z_legacy_escape_regex
|
||||
# taken from escape_string_pcre2 in fish
|
||||
# used to provide compatibility with fish 2
|
||||
for c in (string split -- '' $argv)
|
||||
if contains $c (string split '' '.^$*+()?[{}\\|-]')
|
||||
printf \\
|
||||
end
|
||||
printf '%s' $c
|
||||
end
|
||||
end
|
||||
|
||||
set -l options h/help c/clean e/echo l/list p/purge r/rank t/recent d/directory x/delete
|
||||
|
||||
argparse $options -- $argv
|
||||
|
||||
if set -q _flag_help
|
||||
__print_help
|
||||
return 0
|
||||
else if set -q _flag_clean
|
||||
__z_clean
|
||||
printf "%s cleaned!\n" $Z_DATA
|
||||
return 0
|
||||
else if set -q _flag_purge
|
||||
echo >$Z_DATA
|
||||
printf "%s purged!\n" $Z_DATA
|
||||
return 0
|
||||
else if set -q _flag_delete
|
||||
sed -i -e "\:^$PWD|.*:d" $Z_DATA
|
||||
return 0
|
||||
end
|
||||
|
||||
set -l typ
|
||||
|
||||
if set -q _flag_rank
|
||||
set typ rank
|
||||
else if set -q _flag_recent
|
||||
set typ recent
|
||||
end
|
||||
|
||||
set -l z_script '
|
||||
function frecent(rank, time) {
|
||||
dx = t-time
|
||||
if( dx < 3600 ) return rank*4
|
||||
if( dx < 86400 ) return rank*2
|
||||
if( dx < 604800 ) return rank/2
|
||||
return rank/4
|
||||
}
|
||||
|
||||
function output(matches, best_match, common) {
|
||||
# list or return the desired directory
|
||||
if( list ) {
|
||||
cmd = "sort -nr"
|
||||
for( x in matches ) {
|
||||
if( matches[x] ) {
|
||||
printf "%-10s %s\n", matches[x], x | cmd
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if( common ) best_match = common
|
||||
print best_match
|
||||
}
|
||||
}
|
||||
|
||||
function common(matches) {
|
||||
# find the common root of a list of matches, if it exists
|
||||
for( x in matches ) {
|
||||
if( matches[x] && (!short || length(x) < length(short)) ) {
|
||||
short = x
|
||||
}
|
||||
}
|
||||
if( short == "/" ) return
|
||||
for( x in matches ) if( matches[x] && index(x, short) != 1 ) {
|
||||
return
|
||||
}
|
||||
return short
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
hi_rank = ihi_rank = -9999999999
|
||||
}
|
||||
{
|
||||
if( typ == "rank" ) {
|
||||
rank = $2
|
||||
} else if( typ == "recent" ) {
|
||||
rank = $3 - t
|
||||
} else rank = frecent($2, $3)
|
||||
if( $1 ~ q ) {
|
||||
matches[$1] = rank
|
||||
} else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank
|
||||
if( matches[$1] && matches[$1] > hi_rank ) {
|
||||
best_match = $1
|
||||
hi_rank = matches[$1]
|
||||
} else if( imatches[$1] && imatches[$1] > ihi_rank ) {
|
||||
ibest_match = $1
|
||||
ihi_rank = imatches[$1]
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
# prefer case sensitive
|
||||
if( best_match ) {
|
||||
output(matches, best_match, common(matches))
|
||||
} else if( ibest_match ) {
|
||||
output(imatches, ibest_match, common(imatches))
|
||||
}
|
||||
}
|
||||
'
|
||||
|
||||
set -l qs
|
||||
for arg in $argv
|
||||
set -l escaped $arg
|
||||
if string escape --style=regex '' >/dev/null 2>&1 # use builtin escape if available
|
||||
set escaped (string escape --style=regex -- $escaped)
|
||||
else
|
||||
set escaped (__z_legacy_escape_regex $escaped)
|
||||
end
|
||||
# Need to escape twice, see https://www.math.utah.edu/docs/info/gawk_5.html#SEC32
|
||||
set escaped (string replace --all -- \\ \\\\ $escaped)
|
||||
set qs $qs $escaped
|
||||
end
|
||||
set -l q (string join -- '.*' $qs)
|
||||
|
||||
if set -q _flag_list
|
||||
# Handle list separately as it can print common path information to stderr
|
||||
# which cannot be captured from a subcommand.
|
||||
command awk -v t=(date +%s) -v list="list" -v typ="$typ" -v q="$q" -F "|" $z_script "$Z_DATA"
|
||||
return
|
||||
end
|
||||
|
||||
set target (command awk -v t=(date +%s) -v typ="$typ" -v q="$q" -F "|" $z_script "$Z_DATA")
|
||||
|
||||
if test "$status" -gt 0
|
||||
return
|
||||
end
|
||||
|
||||
if test -z "$target"
|
||||
printf "'%s' did not match any results\n" "$argv"
|
||||
return 1
|
||||
end
|
||||
|
||||
if set -q _flag_echo
|
||||
printf "%s\n" "$target"
|
||||
else if set -q _flag_directory
|
||||
if test -n "$ZO_METHOD"
|
||||
type -q "$ZO_METHOD"; and "$ZO_METHOD" "$target"; and return $status
|
||||
echo "Cannot open with ZO_METHOD set to $ZO_METHOD"; and return 1
|
||||
else if test "$OS" = Windows_NT
|
||||
# Be careful, in msys2, explorer always return 1
|
||||
type -q explorer; and explorer "$target"
|
||||
return 0
|
||||
echo "Cannot open file explorer"
|
||||
return 1
|
||||
else
|
||||
type -q xdg-open; and xdg-open "$target"; and return $status
|
||||
type -q open; and open "$target"; and return $status
|
||||
echo "Not sure how to open file manager"; and return 1
|
||||
end
|
||||
else
|
||||
pushd "$target"
|
||||
end
|
||||
end
|
||||
49
config/fish/functions/__z_add.fish
Normal file
49
config/fish/functions/__z_add.fish
Normal file
@@ -0,0 +1,49 @@
|
||||
function __z_add -d "Add PATH to .z file"
|
||||
test -n "$fish_private_mode"; and return 0
|
||||
|
||||
for i in $Z_EXCLUDE
|
||||
if string match -r $i $PWD >/dev/null
|
||||
return 0 #Path excluded
|
||||
end
|
||||
end
|
||||
|
||||
set -l tmpfile (mktemp $Z_DATA.XXXXXX)
|
||||
|
||||
if test -f $tmpfile
|
||||
set -l path (string replace --all \\ \\\\ $PWD)
|
||||
command awk -v path=$path -v now=(date +%s) -F "|" '
|
||||
BEGIN {
|
||||
rank[path] = 1
|
||||
time[path] = now
|
||||
}
|
||||
$2 >= 1 {
|
||||
if( $1 == path ) {
|
||||
rank[$1] = $2 + 1
|
||||
time[$1] = now
|
||||
}
|
||||
else {
|
||||
rank[$1] = $2
|
||||
time[$1] = $3
|
||||
}
|
||||
count += $2
|
||||
}
|
||||
END {
|
||||
if( count > 1000 ) {
|
||||
for( i in rank ) print i "|" 0.9*rank[i] "|" time[i] # aging
|
||||
}
|
||||
else for( i in rank ) print i "|" rank[i] "|" time[i]
|
||||
}
|
||||
' $Z_DATA 2>/dev/null >$tmpfile
|
||||
|
||||
if test ! -z "$Z_OWNER"
|
||||
chown $Z_OWNER:(id -ng $Z_OWNER) $tmpfile
|
||||
end
|
||||
#
|
||||
# Don't use redirection here as it can lead to a race condition where $Z_DATA is clobbered.
|
||||
# Note: There is a still a possible race condition where an old version of $Z_DATA is
|
||||
# read by one instance of Fish before another instance of Fish writes its copy.
|
||||
#
|
||||
command mv $tmpfile $Z_DATA
|
||||
or command rm $tmpfile
|
||||
end
|
||||
end
|
||||
11
config/fish/functions/__z_clean.fish
Normal file
11
config/fish/functions/__z_clean.fish
Normal file
@@ -0,0 +1,11 @@
|
||||
function __z_clean -d "Clean up .z file to remove paths no longer valid"
|
||||
set -l tmpfile (mktemp $Z_DATA.XXXXXX)
|
||||
|
||||
if test -f $tmpfile
|
||||
while read line
|
||||
set -l path (string split '|' $line)[1]
|
||||
test -d $path; and echo $line
|
||||
end <$Z_DATA >$tmpfile
|
||||
command mv -f $tmpfile $Z_DATA
|
||||
end
|
||||
end
|
||||
13
config/fish/functions/__z_complete.fish
Normal file
13
config/fish/functions/__z_complete.fish
Normal file
@@ -0,0 +1,13 @@
|
||||
function __z_complete -d "add completions"
|
||||
complete -c $Z_CMD -a "(__z -l | string replace -r '^\\S*\\s*' '')" -f -k
|
||||
complete -c $ZO_CMD -a "(__z -l | string replace -r '^\\S*\\s*' '')" -f -k
|
||||
|
||||
complete -c $Z_CMD -s c -l clean -d "Cleans out $Z_DATA"
|
||||
complete -c $Z_CMD -s e -l echo -d "Prints best match, no cd"
|
||||
complete -c $Z_CMD -s l -l list -d "List matches, no cd"
|
||||
complete -c $Z_CMD -s p -l purge -d "Purges $Z_DATA"
|
||||
complete -c $Z_CMD -s r -l rank -d "Searches by rank, cd"
|
||||
complete -c $Z_CMD -s t -l recent -d "Searches by recency, cd"
|
||||
complete -c $Z_CMD -s h -l help -d "Print help"
|
||||
complete -c $Z_CMD -s x -l delete -d "Removes the current directory from $Z_DATA"
|
||||
end
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user