Compare commits

..

17 Commits

Author SHA1 Message Date
MorganGeek
3738f1cb7b skip interactive vim install 2020-07-05 08:52:38 +02:00
MorganGeek
d5a5a180a3 split bootstrap logic 2020-07-05 08:45:22 +02:00
MorganGeek
74319d622c load global git config early 2020-07-03 12:10:57 +02:00
MorganGeek
7fde8a6578 redirect github https urls 2020-07-03 12:09:33 +02:00
MorganGeek
d03e4f65b8 reduce code duplication for detecting macos 2020-07-03 11:38:59 +02:00
MorganGeek
12df752a95 always exclude gitignore 2020-07-03 11:33:04 +02:00
MorganGeek
1b5dbc0aa8 use env variables to find home folder 2020-07-03 11:31:33 +02:00
MorganGeek
967fd46455 apps setup must occur first 2020-07-03 11:30:44 +02:00
MorganGeek
2aed87a6ec GitHub Actions cannot access app store 2020-07-03 11:28:11 +02:00
MorganGeek
8bc12c4a70 force using Code folder inside home dir 2020-06-29 18:45:59 +02:00
MorganGeek
068ed6a9b3 force using Code folder inside home dir 2020-06-29 18:42:57 +02:00
MorganGeek
57cae533b4 force using Code folder inside home dir 2020-06-29 18:38:51 +02:00
MorganGeek
d02cd7d932 force using Code folder inside home dir 2020-06-29 18:36:16 +02:00
MorganGeek
410650677c force using $HOME folder as base dir 2020-06-29 18:26:36 +02:00
MorganGeek
adf6be522b fix git checkout path 2020-06-29 18:07:39 +02:00
MorganGeek
eb2d11966f fix GitHub CI syntax for checkout path 2020-06-29 18:05:51 +02:00
MorganGeek
e299ebef7e add GitHub CI pipeline 2020-06-29 18:00:46 +02:00
89 changed files with 2083 additions and 5179 deletions

View File

@ -1,22 +0,0 @@
---
policies:
- type: commit
spec:
header:
length: 89
imperative: true
case: lower
invalidLastCharacters: .
body:
required: false
dco: true
gpg: false
spellcheck:
locale: US
maximumOfOneCommit: true
conventional:
types:
- type
scopes:
- scope
descriptionLength: 72

21
.github/workflows/test.yaml vendored Normal file
View File

@ -0,0 +1,21 @@
on: [push]
name: CI
jobs:
build_and_test:
runs-on: macos-latest
steps:
- uses: actions/checkout@master
- name: Mimic
shell: bash
run: |
ln -snf /Users/runner/work/dotfiles ~/Code
- name: Run bootstrap
shell: bash
run: |
~/Code/dotfiles/dot_scripts/bootstrap.sh
env:
REPO: ${{github.workspace}}
DOTFILES_REF: ${{github.sha}}
HOMEBREW_BUNDLE_BREW_SKIP: "node"

25
.gitignore vendored
View File

@ -3,28 +3,3 @@ Gemfile.lock
.newjiraissue
private_dot_3llo/config.sh
*secret*
# rainbowstream (twitter client)
completer.hist
# no logs
*.log
# gh / github
private_dot_config/gh/state.yml
# no backups
*.bak
# no secrets
private_dot_config/gh/hosts.yml
# no symbolic links
.pre-commit-config.yaml
# no temp files
dot_scripts/version*
# newsboat (rss reader)
*newsboat/cache.db
*newsboat/history.cmdline
*private_dot_newsboat/queue

61
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,61 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-merge-conflict
- id: pretty-format-json
- id: check-symlinks
- id: detect-aws-credentials
- id: detect-private-key
- id: flake8
- id: requirements-txt-fixer
- id: sort-simple-yaml
- repo: git://github.com/antonbabenko/pre-commit-terraform
rev: v1.27.0 # Get the latest from: https://github.com/antonbabenko/pre-commit-terraform/releases
hooks:
- id: terraform_fmt
- id: terraform_docs
- id: terragrunt_fmt
- id: terraform_tflint
args: ['--deep']
- id: terraform_validate
- repo: https://github.com/jumanjihouse/pre-commit-hooks
sha: 1.11.2
hooks:
- id: shellcheck
- id: shfmt
- id: script-must-have-extension
- id: git-check
# - id: git-dirty
- id: forbid-binary
- id: bundler-audit
- repo: https://github.com/cesar-rodriguez/terrascan
rev: v0.2.0
hooks:
- id: terrascan
pass_filenames: false
args: [-l=infra] #NOTE: that this is the directory you created earlier to host your terraform
verbose: true
- repo: https://github.com/askulkarni2/pre-commit-docker-jenkinslint
rev: master
hooks:
- id: docker-jenkinslint
language: docker_image
entry: --entrypoint /usr/local/bin/run-jflint.sh askulkarni2/jenkinslint
files: Jenkinsfile
#- repo: https://github.com/ansible/ansible-lint.git
# rev: v4.1.0
# hooks:
# - id: ansible-lint
# files: \.(yaml|yml)$
#- repo: https://github.com/pre-commit/mirrors-autopep8
# rev: 'v1.5' # Use the sha / tag you want to point at
# hooks:
# - id: autopep8

View File

@ -1,11 +0,0 @@
---
#- search: /Something [bB]ad/
# replacement: Something Good
#- search: foobar
# insensitive: true
# replacement: FOOBAR
- search: collibra
insensitive: true
- search: ~/Code
- search: TODO
- search: FIXME

View File

@ -1,5 +0,0 @@
---
- name: No FIXME
pattern: FIXME
- name: No TODO
pattern: TODO

View File

@ -1,7 +1,6 @@
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"
tap "homeport/tap"
# Tap for chezmoi
tap "twpayne/taps"
# Tap for real path
@ -22,11 +21,7 @@ tap "skanehira/docui" # provides docui, simple terminal UI for creating/configur
tap "romkatv/powerlevel10k" # provides powerlevel10k
tap "shopify/shopify" # provides toxiproxy
tap "homebrew/cask-fonts" # provides fonts used by vim-devicons https://vimawesome.com/plugin/vim-devicons https://github.com/ryanoasis/nerd-fonts#font-installation
tap "wtfutil/wtfutil" # https://wtfutil.com/getting_started/installation/
cask "cyberduck"
cask "docker"
cask "lens"
cask "obsidian"
cask "java"
cask "iterm2"
cask "zoomus"
@ -62,17 +57,19 @@ cask "dropbox"
cask "rescuetime"
cask "wireshark"
cask "font-hack-nerd-font" # provides fonts used by vim-devicons https://vimawesome.com/plugin/vim-devicons https://github.com/ryanoasis/nerd-fonts#font-installation
cask "yacreader"
# Mac app store
mas 'Keynote', id: 409183694
mas 'iMovie', id: 408981434
mas 'Microsoft Remote Desktop', id: 1295203466
mas 'Pages', id: 409201541
mas 'GarageBand', id: 682658836
mas 'Numbers', id: 409203825
# Github actions cannot install these.
unless ENV.has_key?('CI') then
mas '1Password', id:1333542190
mas 'Keynote', id: 409183694
mas 'iMovie', id: 408981434
mas 'Microsoft Remote Desktop', id: 1295203466
mas 'Pages', id: 409201541
mas 'GarageBand', id: 682658836
mas 'Numbers', id: 409203825
end
brew "homeport/tap/havener"
brew "zsh"
brew "git-ftp"
brew "gnu-sed"
@ -80,12 +77,11 @@ brew "hugo"
brew "inetutils"
brew "ncftp"
brew "plantuml"
brew "python3"
brew "ripgrep"
brew "twpayne/taps/chezmoi"
brew "tmux"
brew "node"
brew "direnv"
brew "fish"
# Fasd (pronounced similar to "fast") is a command-line productivity booster. https://github.com/clvv/fasd
brew "fasd"
@ -113,10 +109,13 @@ brew "htop"
brew "moreutils"
brew "asciidoc"
brew "bash-snippets"
# Mac App Store command line interface
brew "mas"
# Using pyenv to be able to install specific python versions https://stackoverflow.com/questions/49794432/how-to-setup-a-pipenv-python-3-6-project-if-os-
-version-is-3-5
# Github actions cannot install these.
unless ENV.has_key?('CI') then
brew "mas" # Mac App Store command line interface
end
# Using pyenv to be able to install specific python versions https://stackoverflow.com/questions/49794432/how-to-setup-a-pipenv-python-3-6-project-if-os-python-version-is-3-5
brew "pyenv"
# Google CLI https://github.com/jarun/googler
brew "googler"
@ -150,23 +149,13 @@ brew "aspell"
brew "neofetch"
# add nushell https://github.com/nushell/nushell
brew "nushell"
brew "ncspot"
brew "python@3.10"
brew "pipx"
brew "watch"
# tools for K8S
brew "kubectl"
brew "kubectx"
brew "kube-linter"
brew "kubernetes-cli"
brew "kustomize"
brew "popeye" # Kubernetes resources sanity analysis
brew "packer"
brew "go"
brew "golangci-lint"
brew "gopls"
brew "weechat" # need an IRC client
brew "tflint" # terraform linter
brew "ktlint" # kotlin linter
@ -174,8 +163,6 @@ brew "cmake" # compiler, was needed for compiling YouCompleteMe, see https://git
brew "zola" # a simple and fast static site generator
brew "rustup" # Install Rust
brew "jq" # add jq utility for parsing json
brew "jsonlint"
brew "gron"
brew "octant" # k8s cluster viewer
brew "telepresence" # telepresence https://www.telepresence.io/reference/install
brew "ansiweather" # https://github.com/fcambus/ansiweather
@ -191,6 +178,7 @@ brew "tac" # Needed for some terraform modules at work
brew "coreutils"
brew "gh" # GitHub CLI
brew "bash" # time to upgrade bash
brew "popeye" # Kubernetes resources sanity analysis
brew "pre-commit" # https://pre-commit.com/#install
brew "terraform-docs" # https://github.com/segmentio/terraform-docs
brew "shfmt" # format shell
@ -209,21 +197,3 @@ brew "powerlevel10k"
brew "translate-shell" # provides the trans command, more doc via https://www.ostechnix.com/use-google-translate-commandline-linux/
brew "toxiproxy"
brew "bitwarden-cli"
brew "awscli@2"
brew "newsboat"
brew "wtfutil"
brew "tfenv"
brew "tokei"
brew "fd"
brew "git-delta"
brew "sn0int"
brew "prettier"
brew "diffutils"
brew "switchaudio-osx"
brew "findutils"
brew "git-extras"
brew "broot"
brew "jxplorer"
brew "android-file-transfer"
brew "aws-vault"
brew "asciinema"

View File

@ -1,51 +1,38 @@
# Introduction
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
## Prerequisites
### Centos
`yum install git -y`
## Setup
```
git clone https://github.com/MorganGeek/dotfiles.git $HOME/Code/dotfiles
$HOME/Code/dotfiles/dot_scripts/bootstrap.sh
git clone https://github.com/MorganGeek/dotfiles.git ~/Code/dotfiles
~/Code/dotfiles/dot_scripts/bootstrap.sh
```
### Run
run `.scripts/bootstrap.sh`
### Reload
run `zsh .scripts/reload.sh`
### Upgrade
run `zsh .scripts/upgrade.sh`
### Scope
* Use SDKMan to install development tools
* Install Docker Desktop for Mac
* Install asciidoctor-pdf
* Install Oh My Zsh and some cool dependencies
* OSX Defaults
* Install NPM dependencies
* Install pip and pipenv
* Install AWS-CLI
- Use SDKMan to install development tools
- Install Docker Desktop for Mac
- Install asciidoctor-pdf
- Install Oh My Zsh and some cool dependencies
- OSX Defaults
- Install NPM dependencies
- Install pip and pipenv
- Install AWS-CLI
### If Yubico is installed, run this
### If Yubico is installed, run this :
`sudo ansible-playbook ~/.scripts/ansible/macsecure_playbook.yaml`
#### In cases of `\n` errors with zsh
[Source](https://github.com/robbyrussell/oh-my-zsh/issues/6764#issuecomment-384045008)
https://github.com/robbyrussell/oh-my-zsh/issues/6764#issuecomment-384045008
```
cd $ZSH
git config core.autocrlf false

View File

@ -53,7 +53,7 @@ chmod 755 /bin/git-ftp
yum install golang golang-godoc golang-vet golang-src golang-pkg-linux-amd64 -y
echo "export GOPATH=\"$HOME/go\"" >>~/.zshrc
echo "export PATH=\"$GOPATH/bin:$PATH\"" >>~/.zshrc
. "$HOME/.zshrc"
. ~/.zshrc
# Install Hugo
mkdir "$HOME/src"
@ -68,12 +68,15 @@ yum -y install telnet ftp rsh traceroute
# FTP UI
yum -y install filezilla
~/.scripts/sdkmandeps.sh
# Install SDK Man
curl -s "https://get.sdkman.io" | bash
source "/root/.sdkman/bin/sdkman-init.sh"
# Install Plantuml
sdk install java
curl -L http://sourceforge.net/projects/plantuml/files/plantuml.jar/download -o /usr/local/bin/plantuml.jar &&
echo 'java -jar /usr/local/bin/plantuml.jar $@' >/usr/local/bin/plantuml &&
chmod +x /usr/local/bin/plantuml
echo 'java -jar /usr/local/bin/plantuml.jar $@' >/usr/local/bin/plantuml &&
chmod +x /usr/local/bin/plantuml
# Using pyenv to be able to install specific python versions https://stackoverflow.com/questions/49794432/how-to-setup-a-pipenv-python-3-6-project-if-os-python-version-is-3-5
curl https://pyenv.run | bash
@ -167,21 +170,21 @@ sudo curl -o /usr/local/bin/googler https://raw.githubusercontent.com/jarun/goog
# Install BAT (cat with more power)
wget https://github.com/sharkdp/bat/releases/download/v0.11.0/bat-v0.11.0-x86_64-unknown-linux-musl.tar.gz &&
tar -xzvf bat-v0.11.0-x86_64-unknown-linux-musl.tar.gz &&
mv bat-v0.11.0-x86_64-unknown-linux-musl/bat /usr/local/bin/ &&
rm -rf bat-v0.11.0-x86_64-unknown-linux-musl*
tar -xzvf bat-v0.11.0-x86_64-unknown-linux-musl.tar.gz &&
mv bat-v0.11.0-x86_64-unknown-linux-musl/bat /usr/local/bin/ &&
rm -rf bat-v0.11.0-x86_64-unknown-linux-musl*
# Install fselect
cargo install fselect
# surfraw
git clone --depth 1 https://gitlab.com/surfraw/Surfraw.git &&
cd Surfraw &&
./prebuild &&
./configure &&
make && make install &&
cd .. &&
rm -rf Surfraw
cd Surfraw &&
./prebuild &&
./configure &&
make && make install &&
cd .. &&
rm -rf Surfraw
# Dictionary
yum -y install dictd

View File

@ -2,12 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AboutToPasteTabsWithCancel</key>
<true/>
<key>AboutToPasteTabsWithCancel_selection</key>
<integer>2</integer>
<key>AlternateMouseScroll</key>
<true/>
<key>AppleAntiAliasingThreshold</key>
<integer>1</integer>
<key>AppleScrollAnimationEnabled</key>
@ -23,7 +17,7 @@
<key>LoadPrefsFromCustomFolder</key>
<true/>
<key>NSNavLastRootDirectory</key>
<string>/Applications</string>
<string>~</string>
<key>NSNavPanelExpandedSizeForOpenMode</key>
<string>{712, 448}</string>
<key>NSQuotedKeystrokeBinding</key>
@ -58,21 +52,13 @@
<key>NSTableView Supports v2 KeyBingingTable</key>
<true/>
<key>NSWindow Frame NSFontPanel</key>
<string>944 202 445 77 0 0 1920 1057 </string>
<key>NSWindow Frame ProfilesPanel</key>
<string>275 596 735 382 0 0 1680 1027 </string>
<key>NSWindow Frame SUStatusFrame</key>
<string>640 674 400 129 0 0 1680 1027 </string>
<key>NSWindow Frame SUUpdateAlert</key>
<string>650 498 620 392 0 0 1920 1057 </string>
<string>1111 136 445 77 0 0 1680 1027 </string>
<key>NSWindow Frame SessionsPreferences</key>
<string>220 84 606 469 0 0 1680 1027 </string>
<string>-1651 117 606 469 -1920 -30 1920 1057 </string>
<key>NSWindow Frame SharedPreferences</key>
<string>236 550 796 486 0 0 1920 1057 </string>
<string>-1683 427 796 486 -1920 -30 1920 1057 </string>
<key>NSWindow Frame iTerm Window 0</key>
<string>-1482 354 650 452 -1920 -102 1920 1057 </string>
<key>NSWindow Frame iTerm Window 1</key>
<string>2355 366 650 452 1920 0 1920 1057 </string>
<string>-757 48 650 527 -1920 -30 1920 1057 </string>
<key>New Bookmarks</key>
<array>
<dict>
@ -275,8 +261,8 @@
<key>Red Component</key>
<real>0.0055023282766342163</real>
</dict>
<key>Background Image Is Tiled</key>
<false/>
<key>Background Image Location</key>
<string></string>
<key>Badge Color</key>
<dict>
<key>Alpha Component</key>
@ -290,12 +276,10 @@
<key>Red Component</key>
<real>1</real>
</dict>
<key>Blend</key>
<real>0.050000000000000003</real>
<key>Blinking Cursor</key>
<false/>
<key>Blur</key>
<true/>
<false/>
<key>Bold Color</key>
<dict>
<key>Blue Component</key>
@ -315,8 +299,6 @@
<integer>80</integer>
<key>Command</key>
<string></string>
<key>Cursor Boost</key>
<real>0.0</real>
<key>Cursor Color</key>
<dict>
<key>Blue Component</key>
@ -685,7 +667,7 @@
<real>0.0</real>
</dict>
<key>Minimum Contrast</key>
<real>0.72345525568181823</real>
<real>0.0</real>
<key>Mouse Reporting</key>
<true/>
<key>Name</key>
@ -695,7 +677,7 @@
<key>Non-ASCII Anti Aliased</key>
<true/>
<key>Normal Font</key>
<string>HackNerdFontCompleteM-Regular 14</string>
<string>MesloLGMForPowerline-Regular 14</string>
<key>Option Key Sends</key>
<integer>0</integer>
<key>Prompt Before Closing 2</key>
@ -743,7 +725,7 @@
<key>Terminal Type</key>
<string>xterm-256color</string>
<key>Transparency</key>
<real>0.081466132614213205</real>
<real>0.0</real>
<key>Unlimited Scrollback</key>
<true/>
<key>Use Bold Font</key>
@ -754,10 +736,6 @@
<true/>
<key>Use Non-ASCII Font</key>
<false/>
<key>Use Tab Color</key>
<false/>
<key>Use Underline Color</key>
<false/>
<key>Vertical Spacing</key>
<real>1</real>
<key>Visual Bell</key>
@ -1402,8 +1380,6 @@
</array>
<key>NoSyncHaveRequestedFullDiskAccess</key>
<true/>
<key>NoSyncHaveUsedCopyMode</key>
<true/>
<key>NoSyncHaveWarnedAboutPasteConfirmationChange</key>
<true/>
<key>NoSyncInstallationId</key>
@ -1416,10 +1392,6 @@
<false/>
<key>NoSyncTimeOfFirstLaunchOfVersionWithTip</key>
<real>569923461.412552</real>
<key>PMPrintingExpandedStateForPrint2</key>
<false/>
<key>PasteTabToStringTabStopSize</key>
<integer>4</integer>
<key>PointerActions</key>
<dict>
<key>Button,1,1,,</key>
@ -1455,8 +1427,6 @@
</dict>
<key>PrefsCustomFolder</key>
<string>/Users/morganwattiez</string>
<key>Print In Black And White</key>
<true/>
<key>SUEnableAutomaticChecks</key>
<true/>
<key>SUFeedAlternateAppNameKey</key>
@ -1466,11 +1436,9 @@
<key>SUHasLaunchedBefore</key>
<true/>
<key>SULastCheckTime</key>
<date>2020-07-19T09:05:45Z</date>
<date>2019-02-26T13:53:46Z</date>
<key>SUSendProfileInfo</key>
<false/>
<key>ShowFullScreenTabBar</key>
<false/>
<key>TabStyleWithAutomaticOption</key>
<integer>4</integer>
<key>WordCharacters</key>

View File

@ -33,7 +33,6 @@
"Guid" : "15B87686-16CF-448A-9B73-5E38F56A2179",
"Rows" : 25,
"Default Bookmark" : "No",
"Blend" : 0.050000000000000003,
"Cursor Guide Color" : {
"Red Component" : 0.70213186740875244,
"Color Space" : "sRGB",
@ -285,7 +284,8 @@
},
"Window Type" : 0,
"Cursor Boost" : 0,
"Blur" : true,
"Background Image Location" : "",
"Blur" : false,
"Badge Color" : {
"Red Component" : 1,
"Color Space" : "sRGB",
@ -307,7 +307,6 @@
"Blue Component" : 0.63137254901960782,
"Green Component" : 0.63137254901960782
},
"Background Image Is Tiled" : false,
"Name" : "MorganGeek",
"Cursor Text Color" : {
"Red Component" : 0.027450980392156862,
@ -323,7 +322,7 @@
"Blue Component" : 0.58823529411764708,
"Green Component" : 0.58039215686274515
},
"Transparency" : 0.081466132614213205,
"Transparency" : 0,
"Ansi 1 Color" : {
"Red Component" : 0.86274509803921573,
"Color Space" : "sRGB",

View File

@ -1,23 +0,0 @@
#!/usr/bin/env bash
alias jirasearch='issues'
alias cicdlist="jira issue jql \"project = 'CICD' AND resolution = Unresolved\""
alias backlogs="jira issue jql \"status = New AND project IN (CICD) AND Created > -2w ORDER BY Priority DESC\""
alias bakclogs='backlogs'
alias support="jira issue jql \"project in (CICD) AND (Created > -2w AND resolution = Unresolved AND (type = 'Engineering Incident' AND status not in ('Waiting for external information') OR type IN ('Engineering Request', 'Task', 'User Story') AND status in ('New', 'To be picked next')) OR resolution != Unresolved AND status = 'In Progress') ORDER BY key DESC\""
alias guardian="support"
alias lastissues='jira issue jql "project IN (CICD) AND Created > -2w ORDER BY Created DESC, Priority DESC"'
alias workingon="jira issue jql \"assignee = currentUser() AND resolution = Unresolved AND status not in ('In Review', 'Done', 'In Testing', 'Waiting For Build') OR QA = currentUser() AND status = 'In Testing' ORDER BY updated DESC, priority DESC\""
alias toreview='jira issue jql "project in (CICD) AND Updated > -2w AND issue.property[development].openprs > 0 ORDER BY Created DESC, Priority ASC"'
alias newissues="jira issue jql \"project IN (CICD) AND Created > -2w AND resolution = Unresolved AND status not in ('In Progress') ORDER BY Created DESC, Priority DESC\""
alias n='newissues'
alias backlog=cicdlist
alias bakclog='backlog'
alias b='backlog'
alias mybacklog="jira issue ls && asana && confluencetasks && trello_web"
alias mb='mybacklog'
alias myissues='mb'
alias me='mb'
alias j='jira issue open'
alias trello='3llo'
alias work='moro'

View File

@ -1,51 +0,0 @@
#!/usr/bin/env bash
alias biggerthan10='biggerthan 10M'
alias c='cat'
alias h='cd $HOME'
alias cp='cp -i' # confirmation before overwrite #
alias del='rm -rf'
alias mv='mv -i' # confirmation before overwrite
alias mkcd='take'
alias rm='gomi'
alias df='df -H'
alias diff='colordiff --side-by-side --ignore-space-change --width=200 --suppress-common-lines --recursive'
alias du='ncdu --color dark -rr -x --exclude .git --exclude node_modules'
alias ctrl-c='pbcopy'
alias s=ls
alias sl=ll
alias ls='lsd'
alias lsg='ll | grip' # show me files matching "ls grep"
alias ltr='ls -latr'
alias lh='ls -alt | head' # see the last modified files
alias tree='ls --almost-all --tree -I .git'
alias x='extract'
# Searching
alias searchbook="libgen-cli search --output $HOME/Downloads/Books"
# Projects shortcuts
alias code='cd $HOME/Code'
alias blog='z morgangeek-blog'
# Dotfiles
alias cm='chezmoi'
alias dots='cd $HOME/Code/dotfiles'
alias dotfiles='dots'
alias gochezmoi='cd $HOME/.local/share/chezmoi'
# Viewing files
alias cat='bat --style=plain --color "always"'
alias preview="fzf --preview 'bat --color \"always\" --style=plain {}' --cycle "
alias markdown2='pandoc README.md | lynx -stdin -dump'
alias markdown='glow'
alias v=vi
alias ve='vim $HOME/.vimrc' # vimrc editing
alias ze='vim $HOME/.zshrc' # zsh profile editing
alias zf='vim $HOME/.zsh_functions' # edit zsh_functions
alias za='vim $HOME/.zsh_aliases' # edit zsh_aliases
# Quick editing
alias checkthis='arrow "type Ctrl+Z When done"; \cat > /tmp/file; arrow "Ok now we check your text..."; checkenlist /tmp/file'
# Linting
alias checkreadme='checkenlist README*'

View File

@ -1,16 +0,0 @@
#!/usr/bin/env bash
alias commit='gc'
alias gpa='git add -p .'
alias gcls='git clone --depth 1 --recurse-submodules'
alias gpar='gitpushallremote'
alias gpcr='gitpushcurrentremote'
alias lg='lazygit'
alias neworigin='setorigin'
alias origin='setorigin'
alias goto='git go'
alias master='goto master'
alias develop='goto develop'
alias gg='git config -l | grip' # search git config for ...
alias ucommit='PRE_COMMIT_ALLOW_NO_CONFIG=1 git commit --no-verify'
alias gitperso='git config user.name "$GIT_PERSONAL_USER" && git config user.email "$GIT_PERSONAL_EMAIL" && success "using profile $(git whoami)"'
alias gitpro='git config user.name "$GIT_PRO_USER" && git config user.email "$GIT_PRO_EMAIL" && success "using profile $(git whoami)"'

View File

@ -1,32 +0,0 @@
#!/usr/bin/env bash
# Show/hide hidden files in Finder
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
# Hide/show all desktop icons (useful when presenting)
alias hidedesktop="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
alias showdesktop="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
# Flush Directory Service cache
alias flush="dscacheutil -flushcache && killall -HUP mDNSResponder"
alias afk="/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend" # Lock the screen (when going AFK)
alias lastlogin="log show --style syslog --last 1d | awk '/Enter/ && /unlockUIBecomesActive/ {print \$1 \" \" \$2}'"
alias loginhistory='lastlogin'
# Empty the Trash on all mounted volumes and the main HDD.
# Also, clear Apples System Logs to improve shell startup speed.
# Finally, clear download history from quarantine. https://mths.be/bum
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv $HOME/.Trash; sudo rm -rfv /private/var/log/asl/*.asl; sqlite3 $HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'"
# via https://github.com/richinfante/dotfiles/blob/0e1df2d833257e3a3ca2e4fcc8f2f128d52b5d29/dotfiles/.profile_setup/30-aliases.sh
alias finder="open ."
alias cls="clear; printf '\e[3J'"
# Sound management
alias mute_headset='mute_device "Plantronics BT600"'
alias mute_speakers='mute_device "Haut-parleurs MacBook Pro"'
alias switch_headset='mute_speakers && switch_device "Plantronics BT600"'
alias switch_speakers='mute_headset && switch_device "Haut-parleurs MacBook Pro"'
# Meeting management
alias zoom="switch_headset && open -na 'zoom.us'"
alias nozoom="pkill 'zoom.us' && success 'zoom has been stopped'"
alias zoom30='zoomtimeboxed 30'
alias zoom60='zoomtimeboxed 60'
alias unmute='osascript -e "set volume without output muted"'

View File

@ -1,43 +0,0 @@
#!/usr/bin/env bash
# Misc
alias adhoc="ansible --one-line 127.0.0.1 -m"
alias ans='adhoc'
alias bash="/usr/local/bin/bash"
#alias date="gdate"
alias away='moro break 10 && coffee'
alias afk='away'
# Protect the / directory - via https://github.com/JanEbbing/mytoolbox/blob/5440831fbd0d1575e595d931d4d35be187cf736e/.bash_aliases
alias chown='gchown --preserve-root'
alias chmod='gchmod --preserve-root'
alias chgrp='gchgrp --preserve-root'
alias current_year='`echo date +"%Y"`'
alias ftk='file_to_kindle'
alias send_to_kindle='file_to_kindle'
alias stk='send_to_kindle'
alias tokindle='file_to_kindle'
alias kindle='to_kindle'
alias headers='curl -I --compress' # Find out if remote server supports gzip / mod_deflate or not #
alias https='http --default-scheme=https' # useful alias stealed from a colleague. http is provided by httpie
alias path='echo -e ${PATH//:/\\n}' # Explode and display current PATH
alias p='ps -ef | grip ' # Show matching processes. Usage : p <process name>
alias root='sudo -i'
alias ':q'='exit'
alias current_hour='date +"%H:%M"'
alias current_time='current_hour'
# FIXME : register the alias only if browser is Chrome based (Google Chrome/Brave/etc)
alias meditate='browse chrome-extension://onjcfgnjjbnflacfbnjaapcbiecckilk/popup.html#fullscreen'
alias runhooks='pre-commit run -a'
# https://unix.stackexchange.com/a/205854/220566
alias trim='awk "{\$1=\$1};1"'
alias trem="awk '{\$1=\$1};1'"
# via https://github.com/richinfante/dotfiles/blob/0e1df2d833257e3a3ca2e4fcc8f2f128d52b5d29/dotfiles/.profile_setup/30-aliases.sh
alias lowercase='tr "[[:upper:]]" "[[:lower:]]"'
alias uppercase='tr "[[:lower:]]" "[[:upper:]]"'
alias to_lower='lowercase'
alias to_upper='uppercase'
alias tryhook='pre-commit try-repo .'
alias whatyear='current_year'
alias whathour='current_time'
alias whattime='whathour'

View File

@ -1,10 +0,0 @@
#!/usr/bin/env bash
alias music='baton'
alias mytracks='music me saved tracks'
alias saved='mytracks'
alias liked='saved'
alias next='music next'
alias prev='music prev'
alias previous='prev'
alias like='music save'
alias curr='music status'

View File

@ -1,8 +0,0 @@
#!/usr/bin/env bash
alias ip='echo $(curl ident.me -4 2>/dev/null)'
alias ipinfo='curl "ipinfo.io/"$(ip)'
alias getips='\egrep "\b(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(1[0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9]{1,2})\b"'
alias ping='prettyping -c 5 --nolegend' # Stop after sending count ECHO_REQUEST packets
alias fastping='ping -c 100 -i.2' # don't wait interval 1 second, go fast
alias speed-test="docker run --rm -it jariasl/speed-test" # via https://github.com/chrismetcalf/homedir/blob/fc7a9814a3513410b4bf4ec39e9e5bc6e62898e3/.zsh/rc/alias

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
alias hack='hacker'
alias crypto='curl rate.sx'
alias weather='weather "?lang=fr&"'

View File

@ -1,7 +0,0 @@
#!/usr/bin/env bash
alias addfeed='rssadd'
alias addrss='rssadd'
alias rss='newsboat'
alias feed='rss'
alias feeds='rss'

View File

@ -1,24 +0,0 @@
#!/usr/bin/env bash
alias ddg='ddgr'
alias goo='googler'
alias se='sr -elvi'
alias eg='env | grip' # search env variables for pattern
alias engines='sr -elvi'
alias grep='rg'
alias grip='grep -i'
alias usernames="python3 $HOME/Code/sherlock/sherlock.py --rank --print-found"
alias ygg="torrengo -s ygg"
alias ag='alias | grip' # search for patten among aliases
alias hg='history | grip' # search for pattern among history
alias hist='history'
alias codestats='tokei'
alias dups='file_dups'
alias pairs='file_getpairs'
alias filter_pairs="tr '[:upper:]' '[:lower:]' | \grep -o -E '\w{3,} \w{3,}' | \grep --invert-match --word-regexp --fixed-strings --file=\"\$HOME/stopwords.txt\" | \sed 's/s$//g' | \sed 's/ing$//g' | sort | uniq -c | sort --numeric-sort --reverse"
alias sort_count="sort | uniq -c | sort --numeric-sort --reverse"
alias words='file_getwords'
alias fd="\fd"
alias wiki='wikit'
alias dico='dict'
alias topshellloc='| tr "|" "\n" | grep -v "function" | \grep -Eo "(.*)" | trim | sort | uniq -c | sort -nr'

View File

@ -1,12 +0,0 @@
#!/usr/bin/env bash
alias mgmt='ssh $(whoami)@$PROXY_HOST -i $HOME/.ssh/id_ed25519'
alias m='mgmt'
alias tunnel='ssh -D 8000 -N $(whoami)@$PROXY_HOST -i $HOME/.ssh/id_ed25519'
alias gpg2="gpg"
alias sshpub='cat $HOME/.ssh/id_ed25519.pub'
alias ssla="openssl x509 -alias -noout -in" # Usage : ssla <cert>
alias encrypt='ansible-vault encrypt **/vault.yml --vault-password-file=$VAULT_PASSWORD_FILE'
alias decrypt='ansible-vault decrypt **/vault.yml --vault-password-file=$VAULT_PASSWORD_FILE'
alias bitwarden-cli='bw'
alias newpass='bw generate --special --uppercase --lowercase --number --length 30'

View File

@ -1,50 +0,0 @@
#!/usr/bin/env bash
# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
alias terraform_landscape='landscape'
alias tf='terraform'
alias tfa='terraform apply'
alias tfc='terraform console'
alias tfd='terraform destroy'
alias tff='terraform fmt'
alias tfg='terraform graph'
alias tfim='terraform import'
alias tfin='terraform init'
alias tfo='terraform output'
alias tfp='terraform plan'
alias tfpr='terraform providers'
alias tfr='terraform refresh'
alias tfsh='terraform show'
alias tft='terraform taint'
alias tfut='terraform untaint'
alias tfv='terraform validate'
alias tfw='terraform workspace'
alias tfs='terraform state'
alias tffu='terraform force-unlock'
alias tfwst='terraform workspace select'
alias tfwsw='terraform workspace show'
alias tfssw='terraform state show'
alias tfwde='terraform workspace delete'
alias tfwls='terraform workspace list'
alias tfsls='terraform state list'
alias tfwnw='terraform workspace new'
alias tfsmv='terraform state mv'
alias tfspl='terraform state pull'
alias tfsph='terraform state push'
alias tfsrm='terraform state rm'
alias tfay='terraform apply -auto-approve'
alias tfdy='terraform destroy -auto-approve'
alias tfinu='terraform init -upgrade'
alias tfpde='terraform plan --destroy'

View File

@ -1,49 +0,0 @@
#!/usr/bin/env bash
# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
alias tg='terragrunt'
alias tga='terragrunt apply'
alias tgc='terragrunt console'
alias tgd='terragrunt destroy'
alias tgf='terragrunt fmt'
alias tgg='terragrunt graph'
alias tgim='terragrunt import'
alias tgin='terragrunt init'
alias tgo='terragrunt output'
alias tgp='terragrunt plan'
alias tgpr='terragrunt providers'
alias tgr='terragrunt refresh'
alias tgsh='terragrunt show'
alias tgt='terragrunt taint'
alias tgut='terragrunt untaint'
alias tgv='terragrunt validate'
alias tgw='terragrunt workspace'
alias tgs='terragrunt state'
alias tgfu='terragrunt force-unlock'
alias tgwst='terragrunt workspace select'
alias tgwsw='terragrunt workspace show'
alias tgssw='terragrunt state show'
alias tgwde='terragrunt workspace delete'
alias tgwls='terragrunt workspace list'
alias tgsls='terragrunt state list'
alias tgwnw='terragrunt workspace new'
alias tgsmv='terragrunt state mv'
alias tgspl='terragrunt state pull'
alias tgsph='terragrunt state push'
alias tgsrm='terragrunt state rm'
alias tgay='terragrunt apply -auto-approve'
alias tgdy='terragrunt destroy -auto-approve'
alias tginu='terragrunt init -upgrade'
alias tgpde='terragrunt plan --destroy'

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
alias twitter='\t'
alias tsearch='twitter search all'
alias tweets='tsearch --long -a -d'
alias tsearchfav='twitter search favorites'
alias tsearchtimeline='twitter search timeline'
alias tstream='rainbowstream'
alias mystream='tstream'

View File

@ -1,13 +0,0 @@
personal_repl-1.1 en 0
behing behind
bg background
branchs branches
definenation definition
dev development
env environment
evals evaluates
festing Testing
prtscn print screen
stackoverflow Stack Overflow
symblinks symbolic links
unix Unix

View File

@ -1,323 +0,0 @@
personal_ws-1.1 en 322
ABAP
AIX
APIs
AST
ASTs
ActionScript
Acyclic
Ansible
Applitools
Axios
BDD
BINDIR
Backend
Belarussian
Bitbucket
Bourne
Brewfile
Builtins
CDN
CIs
CLI
CUI
CVE
CentOS
Chai
Changelog
CircleCI
CloudDocs
CodeClimate
Codefresh
Coreutils
Cygwin
DOM
DSL
DevOps
Diffutils
Dockerfile
ESLint
FaaS
Fanboyism
Favicon
Feng
Fortran
FreeBSD
GKE
GPL
GatsbyJS
Gemfile
GitLab
Gocui
HCL
HashiCorp
Hirokuni
HomeBrew
Huawei
IRIX
IoT
JS
JWT
Jinja
KMS
Keybind
Keybinds
Kubernetes
LinkedIn
MPL
MacOS
Mackup
Maintainer's
Metavariable
MicroK
Microservice
Microservices
Middleware
Minikube
Minimalistic
NetBSD
Netlify
OCaml
OSS
OSX
OWASP
OpenBSD
PRs
PagerDuty
PluginInstall
Postgres
PowerShell
PrismJS
Prolog
PyPI
README
RGB
ROI
RSS
RabbitMQ
Redux
Repl
Repo
Roadmap
SAST
SDKMan
SLA
SRP
Semgrep
Serbo
Solaris
SonarQube
Spotify
Survivorship
TCP
TLS
TODO
Terraform's
Terrascan
TravisCI
UI
UTF
UX
VirtualBox
Vundle
WSL
WinZip
YAGNI
YAML
ansible
ansible's
ansiweatherrc
antipatterns
apache
args
async
autocompiled
autoescaping
autofix
autoload
autosuggestions
awsls
azurerm
bach
backend
backends
bashtop
benchmarking
blackbox
bundler
bzip
cd
centos
chaifeng
checkci
chmod
chsh
cmd
codebase
codebases
compat
compinit
conf
config
configs
copyhooks
csv
customizable
darwin
dest
dev
dir
dockerized
dotfiles
dryrun
duplications
encodings
env
esac
eslint
favicon
filesystem
frontend
fsSL
gcc
gh
gitconfig
githook
gpg
gradle
groupinstall
gulpfile
gz
gzip
hardcoded
hcl
headspace
homebrew
hostname
hostnames
htop
iTerm
idempotency
impactful
init
integrations
ipsum
js
json
kotlin
libxcrypt
linter
linters
linux
llo
ln
localhost
lorem
macOS
macos
matcher
md
metacharacters
metavariable
metavariables
microservices
middleware
middlewares
minified
minifies
minify
misconfiguration
mkdir
mockall
mockfalse
mocktrue
moro
mutexes
namespace
namespaces
neofetch
newsboat
nitty
nms
npm
parallelization
parallelize
parallelizing
parseable
pipenv
powerlevel
pre
presentational
programmatically
py
pyenv
pypi
qall
rebase
reconnection
regexes
repo
repos
ripgrep
robbyrussell
rustc
rustfmt
rustup
rvm
sSL
sSfL
scrollbar
sdk
sed
selfupdate
semver
serverless
sherlock
snf
src
stderr
stdout
stylesheet
subcommands
subdirectories
subdirectory
submodule
submodules
subshell
sudo
surfraw
svn
templateDir
templatedir
templating
terraform
terrascan
textarea
toml
txt
uname
uncomment
uncommenting
unhandled
unsave
untrapped
url
usr
utils
vcs
vimrc
vlc
walkthroughs
webpage
wget
whitepaper
whitespace
whoami
wikit
wtf
yacc
yaml
yamllint
yml
zsh
zshrc

View File

@ -1 +0,0 @@
personal_repl-1.1 fr 0

View File

@ -1,6 +0,0 @@
personal_ws-1.1 fr 5
Make
bash
bin
pre-commit
usr

View File

@ -1,4 +1,2 @@
export PATH="$HOME/.cargo/bin:$PATH"
source /Users/morganwattiez/.config/broot/launcher/bash/br

View File

@ -1,120 +1,61 @@
---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.1.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-json
- id: check-merge-conflict
- id: check-symlinks
- id: check-yaml
- id: check-xml
- id: detect-aws-credentials
- id: detect-private-key
- id: end-of-file-fixer
- id: mixed-line-ending
- id: pretty-format-json
- id: requirements-txt-fixer
- id: sort-simple-yaml
- id: trailing-whitespace
- repo: https://gitlab.com/pycqa/flake8.git
rev: master
hooks:
- id: flake8
- repo: git://github.com/antonbabenko/pre-commit-terraform
rev: v1.31.0 # Get the latest from: https://github.com/antonbabenko/pre-commit-terraform/releases
hooks:
- id: terraform_fmt
- id: terragrunt_fmt
- id: terraform_docs
- id: terraform_docs_without_aggregate_type_defaults
- id: terraform_tflint
args: [--deep]
- id: terraform_validate
- id: terraform_tfsec
#- repo: https://github.com/ansible/ansible-lint.git
# rev: v4.1.0
# hooks:
#- id: ansible-lint
# files: \.(yaml|yml)$
- repo: git@github.com:jorisroovers/gitlint.git
rev: v0.13.1
hooks:
- id: gitlint
- repo: https://github.com/jumanjihouse/pre-commit-hooks
rev: 1.11.2
hooks:
- id: shellcheck
- id: shfmt
- id: script-must-have-extension
- id: git-check
- id: forbid-binary
- id: bundler-audit
- id: markdownlint
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.0.11
hooks:
- id: yamlfmt
- repo: https://github.com/cesar-rodriguez/terrascan
rev: v0.2.1
hooks:
- id: terrascan
pass_filenames: false
args: [-l=infra] #NOTE: that this is the directory you created earlier to host your terraform
verbose: true
- repo: https://github.com/Lucas-C/pre-commit-hooks-nodejs
rev: v1.1.1
hooks:
- id: htmlhint
args: [--config, .htmlhintrc]
- id: htmllint
- id: markdown-toc
args: [--indent, ' ', -i]
- id: dockerfile_lint
args: [--json, --verbose, --dockerfile]
- repo: https://github.com/lovesegfault/beautysh
rev: 6.0.1
hooks:
- id: beautysh
- repo: https://github.com/mattlqx/pre-commit-search-and-replace
rev: v1.0.3
hooks:
- id: search-and-replace
- repo: https://github.com/codingjoe/relint
rev: 1.2.0
hooks:
- id: relint
- repo: git@github.com:Vimjas/vint.git
rev: master
hooks:
- id: vint
# install with `pre-commit install -t commit-msg`
- repo: https://github.com/talos-systems/conform
rev: master
hooks:
- id: conform
stages:
- commit-msg
- repo: local
hooks:
- id: check-committer
name: Check Committer Identity
entry: pre-commit-verify-committer
language: system
always_run: true
files: ''
- repo: https://github.com/askulkarni2/pre-commit-docker-jenkinslint
rev: 88dd7702e44bbc4dc742b37897e1ded7fe99dfba
hooks:
- id: docker-jenkinslint
language: docker_image
entry: --entrypoint /usr/local/bin/run-jflint.sh askulkarni2/jenkinslint
files: Jenkinsfile
- repo: git@github.com:amperser/proselint.git
rev: 0.10.2
hooks:
- id: proselint
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-merge-conflict
- id: pretty-format-json
- id: check-symlinks
- id: detect-aws-credentials
- id: detect-private-key
- id: flake8
- id: requirements-txt-fixer
- id: sort-simple-yaml
- repo: git://github.com/antonbabenko/pre-commit-terraform
rev: v1.27.0 # Get the latest from: https://github.com/antonbabenko/pre-commit-terraform/releases
hooks:
- id: terraform_fmt
- id: terraform_docs
- id: terragrunt_fmt
- id: terraform_tflint
args: ['--deep']
- id: terraform_validate
- repo: https://github.com/jumanjihouse/pre-commit-hooks
sha: 1.11.2
hooks:
- id: shellcheck
- id: shfmt
- id: script-must-have-extension
- id: git-check
# - id: git-dirty
- id: forbid-binary
- id: bundler-audit
- repo: https://github.com/cesar-rodriguez/terrascan
rev: v0.2.0
hooks:
- id: terrascan
pass_filenames: false
args: [-l=infra] #NOTE: that this is the directory you created earlier to host your terraform
verbose: true
- repo: https://github.com/askulkarni2/pre-commit-docker-jenkinslint
rev: master
hooks:
- id: docker-jenkinslint
language: docker_image
entry: --entrypoint /usr/local/bin/run-jflint.sh askulkarni2/jenkinslint
files: Jenkinsfile
#- repo: https://github.com/ansible/ansible-lint.git
# rev: v4.1.0
# hooks:
# - id: ansible-lint
# files: \.(yaml|yml)$
#- repo: https://github.com/pre-commit/mirrors-autopep8
# rev: 'v1.5' # Use the sha / tag you want to point at
# hooks:
# - id: autopep8

View File

@ -1,19 +0,0 @@
---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: local
hooks:
- id: check-committer
name: Check Committer Identity
entry: pre-commit-verify-committer
language: system
always_run: true
files: ''
- repo: https://github.com/askulkarni2/pre-commit-docker-jenkinslint
rev: 88dd7702e44bbc4dc742b37897e1ded7fe99dfba
hooks:
- id: docker-jenkinslint
language: docker_image
entry: --entrypoint /usr/local/bin/run-jflint.sh askulkarni2/jenkinslint
files: Jenkinsfile

View File

@ -5,35 +5,9 @@
[alias]
tags = log --no-walk --tags --pretty=\"%h %d %s\" --decorate=full
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
st = status
# View abbreviated SHA, description, and history graph of the latest 20 commits.
l = log --pretty=oneline -n 20 --graph --abbrev-commit
# View the current working tree status using the short format.
s = status -s
# Show the diff between the latest commit and the current state.
d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat"
# `git di $number` shows the diff between the state `$number` revisions ago and the current state.
di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d"
# Switch to a branch, creating it if necessary.
go = "!f() { git checkout -b \"$1\" 2> /dev/null || git checkout \"$1\"; }; f"
# Show verbose output about tags, branches or remotes
tags = tag -l
branches = branch --all
remotes = remote --verbose
# List contributors with number of commits.
contributors = shortlog --summary --numbered
contrib = ! git log --pretty=format:'%aN' | sort | uniq -c | sort -nr
whois = ! sh -c 'git log -i --pretty=\"format:%an <%ae>\" --author=\"\" | sort -u' -
# Show the user email for the current repository.
whoami = config user.email
st = status
contrib = ! git log --pretty=format:'%aN' | sort | uniq -c | sort -nr
whois = ! sh -c 'git log -i --pretty=\"format:%an <%ae>\" --author=\"\" | sort -u' -
di = diff -w --color-words=.
ac = ! git add . && git commit -v
unstage = reset HEAD
@ -45,65 +19,19 @@
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
type = cat-file -t
dump = cat-file -p
times = "!git log --author=\"$(git config user.name)\" \
times = "!git log --author=\"$(git config user.name)\" \
--date=iso \
--format=\"%ad\" \
--date=\"format:%H\" \
| awk '{n=$1+0;if(H[n]++>max)max=H[n]}END{for(i=0;i<24;i++){printf\"%02d -%5d \",i,H[i];for(n=0;n<H[i]/max*50;n++){printf \"*\"}print\"\"}}'"
# Find commits by source code
fc = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short -S$1; }; f"
# Find commits by commit message
fm = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"
# Credit an author on the latest commit.
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f"
# List aliases.
aliases = config --get-regexp alias
# Amend the currently staged files to the latest commit.
amend = commit --amend --reuse-message=HEAD
| awk '{n=$1+0;if(H[n]++>max)max=H[n]}END{for(i=0;i<24;i++){printf\"%02d -%5d \",i,H[i];for(n=0;n<H[i]/max*50;n++){printf \"*\"}print\"\"}}'"
[help]
autocorrect = -1 # not more git psuh
[init]
templateDir = /Users/morganwattiez/.git-template
templateDir = ~/.git-template
[core]
pager = delta --line-numbers --diff-highlight
# Treat spaces before tabs and all kinds of trailing whitespace as an error.
# [default] trailing-space: looks for spaces at the end of a line
# [default] space-before-tab: looks for spaces before tabs at the beginning of a line
whitespace = space-before-tab,-indent-with-non-tab,trailing-space
pager = diff-so-fancy | less --tabs=4 -RFX
excludesfile = ~/.gitignore
[diff]
noprefix = true
[apply]
# Detect whitespace errors when applying a patch.
whitespace = fix
[branch]
# Show most recently changed branches first.
sort = -committerdate
tool = colordiff
[difftool "colordiff"]
cmd = colordiff -ydw \"$LOCAL\" \"$REMOTE\"
noprefix = true
[url "git@github.com:"]
insteadOf = https://github.com/
[difftool]
prompt = false
[delta]
plus-color = "#012800"
minus-color = "#340001"
theme = Monokai Extended
[interactive]
diffFilter = delta --color-only

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +1,38 @@
---
- hosts: localhost
connection: local
become_method: sudo
become: yes
- hosts: localhost
connection: local
become_method: sudo
become: yes
tasks:
- name: Check yubikey binaries are installed
stat:
path: '{{ item }}'
with_items:
- /usr/local/bin/ykpamcfg
- /Applications/YubiKey Manager.app/Contents/MacOS/ykman
tasks:
- name: Check yubikey binaries are installed
stat:
path: "{{ item }}"
with_items:
- /usr/local/bin/ykpamcfg
- "/Applications/YubiKey\ Manager.app/Contents/MacOS/ykman"
- name: Check Yubico is recognized
shell: "'/Applications/YubiKey Manager.app/Contents/MacOS/ykman' list | awk '{print $6}'"
register: yubicoChallenge
failed_when: yubicoChallenge.rc != 0 or yubicoChallenge.stdout == ''
- name: Check Yubico is recognized
shell: "'/Applications/YubiKey Manager.app/Contents/MacOS/ykman' list | awk '{print $6}'"
register: yubicoChallenge
failed_when: "yubicoChallenge.rc != 0 or yubicoChallenge.stdout == ''"
- name: Get current user
become: false
local_action: command whoami
register: username_on_host
- name: Get current user
become: false
local_action: command whoami
register: username_on_host
- name: Check yubico challenge exists
stat:
path: /Users/{{ username_on_host.stdout }}/.yubico/challenge-{{ yubicoChallenge.stdout }}
- name: Check yubico challenge exists
stat:
path: "/Users/{{ username_on_host.stdout }}/.yubico/challenge-{{ yubicoChallenge.stdout }}"
- name: Ensure yubikey is needed for authentication at login screen
lineinfile:
path: '{{ item }}'
regexp: ^auth.*pam_yubico.so.*
line: auth required /usr/local/lib/security/pam_yubico.so mode=challenge-response
insertbefore: ^account required pam_opendirectory.so
state: absent
with_items:
- /etc/pam.d/screensaver
- /etc/pam.d/authorization
- name: Ensure yubikey is needed for authentication at login screen
lineinfile:
path: "{{ item }}"
regexp: '^auth.*pam_yubico.so.*'
line: "auth required /usr/local/lib/security/pam_yubico.so mode=challenge-response"
insertbefore: "^account required pam_opendirectory.so"
state: absent
with_items:
- /etc/pam.d/screensaver
- /etc/pam.d/authorization

View File

@ -1,46 +1,46 @@
---
- hosts: localhost
connection: local
become_method: sudo
become: yes
- hosts: localhost
connection: local
become_method: sudo
become: yes
tasks:
- name: Check yubikey binaries are installed
stat:
path: '{{ item }}'
with_items:
- /usr/local/bin/ykpamcfg
- /Applications/YubiKey Manager.app/Contents/MacOS/ykman
tasks:
- name: Check yubikey binaries are installed
stat:
path: "{{ item }}"
with_items:
- /usr/local/bin/ykpamcfg
- "/Applications/YubiKey\ Manager.app/Contents/MacOS/ykman"
- name: Check Yubico is recognized
shell: "'/Applications/YubiKey Manager.app/Contents/MacOS/ykman' list | awk '{print $6}'"
register: yubicoChallenge
failed_when: yubicoChallenge.rc != 0 or yubicoChallenge.stdout == ''
- name: Check Yubico is recognized
shell: "'/Applications/YubiKey Manager.app/Contents/MacOS/ykman' list | awk '{print $6}'"
register: yubicoChallenge
failed_when: "yubicoChallenge.rc != 0 or yubicoChallenge.stdout == ''"
- name: Get current user
become: false
local_action: command whoami
register: username_on_host
- name: Get current user
become: false
local_action: command whoami
register: username_on_host
- name: Check yubico challenge exists
stat:
path: /Users/{{ username_on_host.stdout }}/.yubico/challenge-{{ yubicoChallenge.stdout }}
- name: Check yubico challenge exists
stat:
path: "/Users/{{ username_on_host.stdout }}/.yubico/challenge-{{ yubicoChallenge.stdout }}"
- name: Ensure yubikey is needed for authentication at login screen
lineinfile:
path: '{{ item }}'
regexp: ^auth.*pam_yubico.so.*
line: auth required /usr/local/lib/security/pam_yubico.so mode=challenge-response
insertbefore: ^account required pam_opendirectory.so
with_items:
- /etc/pam.d/screensaver
- /etc/pam.d/authorization
- name: Ensure yubikey is needed for authentication at login screen
lineinfile:
path: "{{ item }}"
regexp: '^auth.*pam_yubico.so.*'
line: "auth required /usr/local/lib/security/pam_yubico.so mode=challenge-response"
insertbefore: "^account required pam_opendirectory.so"
with_items:
- /etc/pam.d/screensaver
- /etc/pam.d/authorization
- name: Ensure touch id is enough to authenticate with sudo
lineinfile:
path: '{{ item }}'
regexp: ^auth.*sufficient.*pam_tid.so.*
line: auth sufficient pam_tid.so
insertafter: ^#.*
with_items:
- /etc/pam.d/sudo
- name: Ensure touch id is enough to authenticate with sudo
lineinfile:
path: "{{ item }}"
regexp: '^auth.*sufficient.*pam_tid.so.*'
line: "auth sufficient pam_tid.so"
insertafter: "^#.*"
with_items:
- /etc/pam.d/sudo

View File

@ -1,52 +1,285 @@
#!/usr/bin/env bash
# Make sure Code directory exists
echo "Hello $(whoami)! Let's get you set up."
# Make sure Code directory exists
echo "create vim directory is missing"
mkdir -vp "$HOME/.vim"
echo "mkdir -p $HOME/Code"
mkdir -p "$HOME/Code"
ln -snf "$HOME/Code/dotfiles/dot_scripts" "$HOME/.scripts"
chmod +x "$HOME/.scripts/*.sh"
mkdir -p ~/Code
ln -snf ~/Code/dotfiles/dot_scripts ~/.scripts
ln -snf ~/Code/dotfiles/dot_gitconfig ~/.gitconfig
chmod +x ~/.scripts/*.sh
"$HOME/.scripts/install_linux_packages.sh"
"$HOME/.scripts/install_homebrew.sh"
if [[ $(uname) == "Linux" ]]; then
IS_LINUX=true
else
IS_LINUX=false
fi
# Path to ruby
export PATH="/usr/local/opt/ruby/bin:$PATH"
if [[ $(uname) == "Darwin" ]]; then
IS_MAC=true
else
IS_MAC=false
fi
# Install missing package (Linux)
function installLinuxPackages() {
if [ "$IS_LINUX" = true ]; then
echo "(Linux) Installing Development Tools"
yum install sudo -y
sudo yum groupinstall 'Development Tools' -y
sudo yum install git which zip unzip ruby curl file docker gcc make libxcrypt-compat vim-enhanced -y
fi
}
# Install HomeBrew
function installBrew() {
if [ "$IS_MAC" = true ]; then
echo "(Mac OS X) installing homebrew"
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Prevent `Error: Your Homebrew is outdated. Please run `brew update`.`
echo "Updating Homebrew"
brew update
# Path to ruby
export PATH="/usr/local/opt/ruby/bin:$PATH"
fi
}
# Create symbolic links
"$HOME/.scripts/symbolic_links.sh"
function createSymbolicLinks() {
echo "Creating symbolic links"
ln -snf ~/Code/dotfiles/dot_profile ~/.profile
ln -snf ~/.local/share/chezmoi/ ~/dotfiles
ln -snf ~/Code/dotfiles/Gemfile ~/Gemfile
ln -snf ~/Code/dotfiles/README.md ~/README.md
ln -snf ~/Code/dotfiles/dot_bash_profile ~/.bash_profile
ln -snf ~/Code/dotfiles/dot_macos ~/.macos
ln -snf ~/Code/dotfiles/dot_scripts/checkci.sh /usr/local/bin/checkci
ln -snf ~/Code/dotfiles/dot_vimrc ~/.vimrc
ln -snf ~/Code/dotfiles/dot_vim/ale_linters ~/.vim/ale_linters # custom linters
ln -snf ~/Code/dotfiles/dot_zsh_aliases ~/.zsh_aliases
ln -snf ~/Code/dotfiles/dot_zsh_functions ~/.zsh_functions
ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc
ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh
ln -snf ~/Code/dotfiles/private_dot_ssh/config ~/.ssh/config
ln -snf ~/Code/dotfiles/requirements.txt ~/requirements.txt
ln -snf ~/Code/dotfiles/dot_surfraw.conf ~/.surfraw.conf
ln -snf ~/Code/dotfiles/private_dot_3llo/config.sh ~/.3llo_config
ln -snf ~/Code/dotfiles/dot_ansiweatherrc ~/.ansiweatherrc
ln -snf ~/Code/dotfiles/dot_p10k.zsh ~/.p10k.zsh
ln -snf ~/Code/dotfiles/dot_git-template ~/.git-template
}
# Install user applications
"$HOME/.scripts/install_macpackages.sh"
"$HOME/.scripts/install_linux_user_apps.sh"
# Install dependencies (apps, fonts, ...) with Brew
function installMacSoftware() {
if [ "$IS_MAC" = true ]; then
echo "(Mac OS X) Installing Docker"
~/.scripts/install_docker_for_mac.sh
echo "(Mac OS X) Brew installing stuff (apps, fonts, ...)"
ln -snf ~/Code/dotfiles/Brewfile ~/Brewfile
brew bundle
# Configure Mac specific symbolic links
echo "(Mac OS X) Adding symbolic links"
mkdir -pv "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/.config/Code/User/settings.json" "$HOME/Library/Application Support/Code/User/settings.json"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/Library/Application Support/Code/User/snippets" "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/.mackup.cfg" "$HOME/.mackup.cfg"
fi
}
# Install dependencies (apps, fonts, ...) for CentOS
function installLinuxSoftware() {
if [ "$IS_LINUX" = true ]; then
echo "(CentOS) Installing stuff (apps, ...)"
chmod +x ~/Code/dotfiles/centos.sh
~/Code/dotfiles/centos.sh
fi
}
# Switch to ZSH
echo "switching to ZSH"
command -v zsh >>/etc/shells
chsh -s "$(command -v zsh)"
function switchToZsh() {
sudo -v
echo "switching to ZSH"
command -v zsh >>/etc/shells
chsh -s "$(command -v zsh)"
}
"$HOME/.scripts/sdkmandeps.sh"
"$HOME/.scripts/rubydeps.sh"
"$HOME/.scripts/bundlerdeps.sh"
"$HOME/.scripts/ohmyzshdeps.sh"
"$HOME/.scripts/vimdeps.sh"
"$HOME/.scripts/load_macos_defaults.sh"
"$HOME/.scripts/configure_etc_hosts.sh"
"$HOME/.scripts/pythondeps.sh"
"$HOME/.scripts/install_baton.sh"
"$HOME/.scripts/rustdeps.sh"
"$HOME/.scripts/npmdeps.sh"
# Use SDKMan to install development tools
function installSDKMan() {
echo "Installing SDKMan as development tools manager"
curl -s "https://get.sdkman.io" | bash
terraform-docs completion zsh >/usr/local/share/zsh/site-functions/_terraform-docs
autoload -U compinit && compinit
echo "SDKMan installing development tools"
sdk install java
sdk install gradle
sdk install java 8.0.222-zulu
sdk install kotlin
echo "SDKMan updating"
sdk selfupdate
}
function installRubyOnLinux() {
if [ "$IS_LINUX" = true ]; then
echo '(Linux) Installing ruby'
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm reload
rvm requirements run
rvm install 2.3.7
fi
}
"$HOME/.scripts/godeps.sh"
"$HOME/.scripts/install_weavescope.sh"
"$HOME/.scripts/install_bashtop.sh"
"$HOME/.scripts/install_awsls.sh"
"$HOME/.scripts/install_bach.sh" # Bash testing framework
"$HOME/.scripts/install_broot.sh"
"$HOME/.scripts/configure_git_hooks.sh"
"$HOME/.scripts/upgrade.sh"
"$HOME/.scripts/reload.sh"
# Install bundler for managing ruby dependencies and Gemfile
function installBundler() {
echo "Installing bundler for managing ruby dependencies and Gemfile"
sudo gem install bundler
bundle install
}
# Install Oh My Zsh and some cool dependencies
function installOhMyZsh() {
echo "Installing Oh My Zsh + customizing themes and plugins"
echo 'source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme' ~/.zshrc >>!
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
git clone https://github.com/AlexisBRENON/oh-my-zsh-reminder "$ZSH_CUSTOM/plugins/reminder"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc
ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh
}
function installVimPlugins() {
echo "Installing Vundle + VIM Plugins"
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim +'PluginInstall --sync' +qa >/dev/null
#https://github.com/ycm-core/YouCompleteMe/blob/master/README.md#installation
cd "$HOME/.vim/bundle/YouCompleteMe" || exit
./install.py --all
cd "$HOME" || exit
git clone https://github.com/dbeniamine/cheat.sh-vim.git ~/.vim/cheat.sh-vim
}
# Install no-more-secrets
function installNoMoreSecrets() {
echo "Installing no-more-secrets (for fun)"
git clone https://github.com/bartobri/no-more-secrets.git ~/Code/no-more-secrets
cd "$HOME/Code/no-more-secrets" || exit
make nms sneakers
sudo make install
cd "$HOME" || exit
}
# OSX Defaults
function overrideMacOsDefaults() {
if [ "$IS_MAC" = true ]; then
echo "(Mac OS X) Loading preferences"
sudo sh .macos
fi
}
# Customize /etc/hosts
function overrideEtcHosts() {
echo "Overriding /etc/hosts"
curl https://someonewhocares.org/hosts/hosts -o /etc/hosts
}
function installSoftware() {
# Install pip and pipenv
echo "Installing pip and pipenv"
sudo easy_install pip
sudo pip install --upgrade pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
if [ "$IS_MAC" = true ]; then
echo "(Mac OS X) Updating PATH for loading pip user installed packages"
ln -snf /usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin/pip pip3
export PATH="$PATH:/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/bin/:/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin"
fi
echo "Upgrading pip"
sudo pip install --upgrade pip
echo "Pip installing stuff"
pip install -r requirements.txt
# was used for some slack cli in python... https://pypi.org/project/slack-cli/
# pip3 install pipenv
# pyenv install 3.6.0
# Install baton (CLI to manage Spotify playback) https://github.com/joshuathompson/baton
case "$(uname -s)" in
Darwin)
echo '(Mac OS X) Installing baton (spotify CLI)'
curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-darwin-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton
;;
Linux)
echo '(Linux) Installing baton (spotify CLI)'
curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-linux-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton
;;
*)
echo 'Non supported OS : Installation aborted for baton (spotify CLI)'
exit
;;
esac
# Use rustup to install the Rust compiler (rustc) and the Rust package manager (cargo).
echo "Installing Rust compiler and package manager"
rustup-init -y
rustup component add rustfmt
# Install pa11y tool for local webpage accessibility analysis
echo "Installing pa11y tool for local webpage accessibility analysis"
npm install -g pa11y
git clone https://github.com/sherlock-project/sherlock.git ~/Code/sherlock
cd sherlock || exit
python3 -m pip install -r requirements.txt
git config --global init.templateDir ~/.git-template
pre-commit init-templatedir ~/.git-template
terraform-docs completion zsh >/usr/local/share/zsh/site-functions/_terraform-docs
autoload -U compinit && compinit
go get -u -v github.com/jessfraz/dockfmt
go get -u -v github.com/dmlittle/scenery
go get -u -v github.com/camptocamp/terraboard
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
}
# Upgrade
function upgradeSoftware() {
echo "Upgrading apps"
~/.scripts/upgrade.sh
}
# Reload
function reloadConfig() {
echo "Reloading config"
~/.scripts/reload.sh
}
function doIt() {
installLinuxPackages;
installBrew;
createSymbolicLinks;
installMacSoftware;
installLinuxSoftware;
switchToZsh;
installSDKMan;
installRubyOnLinux;
installBundler;
installOhMyZsh;
installVimPlugins;
installNoMoreSecrets;
overrideMacOsDefaults;
overrideEtcHosts;
installSoftware;
upgradeSoftware;
reloadConfig;
}
doIt;

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
# Install bundler for managing ruby dependencies and Gemfile
echo "Installing bundler for managing ruby dependencies and Gemfile"
sudo gem install bundler
bundle install

View File

@ -1,33 +1,9 @@
#!/usr/bin/env bash
###
### checkci — checks a Jenkinsfile syntax against a real Jenkins instance
###
### Note: this script gets:
### the (jenkins) username from git config
### the (jenkins) password/secret from Environment variable $JENKINS_SECRET
### the (jenkins) URL from Environment variable $JENKINS_URL
###
### Usage:
### checkci.sh [jenkinsfile]
###
### Options:
### [input] path to Jenkinsfile (optional).
### -h Show this message.
help() {
gsed -rn 's/^### ?//;T;p' "$0"
}
if [[ $# == 0 ]] || [[ "$1" == "-h" ]]; then
help
exit 1
fi
function _checkci() {
local username
username="$(git config --global -l G "user.email" | cut -d'@' -f1 | cut -d'=' -f2)"
local jenkinsfile="${1:-Jenkinsfile}"
curl --user "$username:$JENKINS_SECRET" -X POST -F "jenkinsfile=<$jenkinsfile" "$JENKINS_URL/pipeline-model-converter/validate"
local username
username="$(git config --global -l | grep "user.email" | cut -d'@' -f1 | cut -d'=' -f2)"
local jenkinsfile="${1:-Jenkinsfile}"
curl --user "$username:$JENKINS_SECRET" -X POST -F "jenkinsfile=<$jenkinsfile" "$JENKINS_URL/pipeline-model-converter/validate"
}
_checkci "$*"
exit 0

0
dot_scripts/cleanup.sh Executable file → Normal file
View File

0
dot_scripts/configure.sh Executable file → Normal file
View File

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
# Customize /etc/hosts
echo "Overriding /etc/hosts"
curl https://someonewhocares.org/hosts/hosts -o /etc/hosts

View File

@ -1,6 +0,0 @@
#!/usr/bin/env bash
# Copy pre-commit hooks
cd "$HOME/Code/dotfiles" || exit
git config --global init.templateDir ~/.git-template
pre-commit init-templatedir ~/.git-template
copyhooks

View File

@ -1,166 +0,0 @@
#!/usr/bin/env python3
"""
Origin : https://github.com/qznc/dot/blob/master/bin/git-overview
Gather a general overview from a git repository.
It shall identify the major contributors within a project.
It shall identify interesting parts in the code.
"""
from subprocess import check_output
from datetime import datetime
from os.path import splitext
_CMD_AUTHOR_HISTORY = 'git log --date=iso --format="format:%an;%ad;%G?;%H"'
_CMD_FILELIST = "git ls-files"
_CMD_COMMIT_FILES_CHANGES = "git diff-tree --no-commit-id --name-only -r "
from collections import namedtuple
FileInfo = namedtuple("FileInfo", "path,authors,commits,firstc,lastc")
def read_log_data():
total_commits = 0
authors = dict()
files = dict()
raw = check_output(_CMD_AUTHOR_HISTORY, shell=True, universal_newlines=True)
for line in raw.split("\n"):
total_commits += 1
name, dt, signed, hash = line.split(";")
if not name in authors:
authors[name] = (datetime.now(), datetime(1900, 1, 1), 0)
first, last, count = authors[name]
when = datetime.strptime(dt[:-6], "%Y-%m-%d %H:%M:%S")
if when < first:
first = when
if when > last:
last = when
authors[name] = (first, last, count + 1)
craw = check_output(
_CMD_COMMIT_FILES_CHANGES + hash, shell=True, universal_newlines=True
)
for file in craw.split("\n"):
if file == "":
continue
if file in files:
fi = files[file]
else:
files[file] = fi = dict(
path=file,
authors=set(),
commits=0,
firstc=datetime.now(),
lastc=datetime(1900, 1, 1),
)
fi["authors"].add(name)
fi["commits"] += 1
if when < fi["firstc"]:
fi["firstc"] = when
if when > fi["lastc"]:
fi["lastc"] = when
return authors, files, total_commits
def readable_duration(dur):
"""Given a timedelta object, returns a human-readable string"""
if dur.days > 0:
if dur.days > 365 * 2:
return "%d years" % (dur.days / 365)
elif dur.days > 30 * 5:
return "%d months" % (dur.days / 30)
else:
return "%d days" % (dur.days)
else:
if dur.seconds > 60 * 60 * 2:
return "%d hours" % (dur.seconds / 60 / 60)
elif dur.seconds > 60 * 5:
return "%d minutes" % (dur.seconds / 60)
else:
return "%d seconds" % (dur.seconds)
def partition_by_extension(fileinfo):
pd = dict()
meta = dict()
total_filecount = 0
total_extfilecount = 0
for path, fi in fileinfo.items():
total_filecount += 1
root, ext = splitext(path)
if not ext:
continue
total_extfilecount += 1
if not ext in pd:
pd[ext] = dict()
meta[ext] = dict(filecount=0)
pd[ext][path] = fi
meta[ext]["filecount"] += 1
return pd, meta, total_filecount, total_extfilecount
def print_top_committers(authorinfo, total_commits):
authors = sorted(authorinfo.items(), key=lambda x: x[1][2], reverse=True)
total_authors = len(authors)
committed = 0
print("Top Committers (of %d authors):" % (total_authors))
for author, info in authors:
first, last, count = info
readable_last = last.strftime("%Y-%m-%d")
if count == 1:
print("%-20s 1 commit on %s" % (author, readable_last))
else:
duration = readable_duration(last - first)
print(
"%-20s %4d commits during %s until %s"
% (author, count, duration, readable_last)
)
committed += count
if committed > total_commits * 0.8:
break
print(
" together these authors have 80+%% of the commits (%d/%d)"
% (committed, total_commits)
)
def print_important_files(fileinfo):
files = list(fileinfo.values())
files.sort(key=lambda x: x["commits"])
print("Files with most commits:")
for x in files[-5:]:
readable_last = x["lastc"].strftime("%Y-%m-%d")
duration = readable_duration(x["lastc"] - x["firstc"])
print(
"%4d commits: %-20s during %s until %s"
% (x["commits"], x["path"], duration, readable_last)
)
print()
files.sort(key=lambda x: len(x["authors"]))
print("Files with most authors:")
for x in files[-5:]:
print("%2d authors: %-20s" % (len(x["authors"]), x["path"]))
def print_extension_info(fileinfo):
pfileinfo, extinfo, total_filecount, total_extfilecount = partition_by_extension(
fileinfo
)
pf = [(e, i) for e, i in pfileinfo.items()]
pf.sort(key=lambda x: extinfo[x[0]]["filecount"], reverse=True)
print("By file extension:")
fc = 0
for ext, info in pf:
c = extinfo[ext]["filecount"]
print("%5s: %d files" % (ext, extinfo[ext]["filecount"]))
fc += c
if fc > total_filecount * 0.8:
break
print(" together these make up 80+%% of the files (%d/%d)" % (fc, total_filecount))
authorinfo, fileinfo, total_commits = read_log_data()
print_top_committers(authorinfo, total_commits)
print()
print_important_files(fileinfo)
print()
print_extension_info(fileinfo)

View File

@ -1,10 +0,0 @@
#!/usr/bin/env bash
go get -u -v github.com/jessfraz/dockfmt
go get -u -v github.com/dmlittle/scenery
go get -u -v github.com/camptocamp/terraboard
go get -u -v github.com/juliensalinas/torrengo
go get -u -v github.com/asciimoo/wuzz # Interactive CLI tool for HTTP inspection
go get -u -v github.com/keilerkonzept/terraform-module-versions # detect new terraform modules versions
go get -u -v github.com/talos-systems/conform
go get -u -v github.com/ciehanski/libgen-cli
go get -u -v github.com/ajbosco/reads/cmd/reads

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
# Install awsls
BINDIR="/usr/local/bin" curl -sSfL https://raw.githubusercontent.com/jckuester/awsls/master/install.sh | sh -s v0.1.2

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
echo "Installing Bach (Bash Testing Framework)"
sudo curl -L https://raw.githubusercontent.com/bach-sh/bach/master/bach.sh -o /usr/local/bin/bach
chmod +x "$_"

View File

@ -1,6 +0,0 @@
#!/usr/bin/env bash
# Install bashtop (until brew manages it)
git clone https://github.com/aristocratos/bashtop.git ~/Code/bashtop
cd ~/Code/bashtop || exit
sudo make install
cd "$HOME" || exit

View File

@ -1,17 +0,0 @@
#!/usr/bin/env bash
# Install baton (CLI to manage Spotify playback) https://github.com/joshuathompson/baton
case "$(uname -s)" in
Darwin)
echo '(Mac OS X) Installing baton (Spotify CLI)'
curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-darwin-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton
;;
Linux)
echo '(Linux) Installing baton (Spotify CLI)'
curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-linux-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton
;;
*)
echo 'Non supported OS : Installation aborted for baton (Spotify CLI)'
exit
;;
esac

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
echo "Installing Broot"
ln -snf "$HOME/Code/dotfiles/private_dot_config/broot/conf.toml" "$HOME/.config/broot/conf.toml"
broot --install

View File

@ -1,13 +1,13 @@
#!/usr/bin/env bash
docker_app=$(find /Applications/ \
-name "Docker.app" -maxdepth 1 -mindepth 1 -type d)
-name "Docker.app" -maxdepth 1 -mindepth 1 -type d)
if [ -z "$docker_app" ]; then
echo 'Install Docker Desktop for Mac OS X'
curl -o ~/Downloads/Docker.dmg -sL https://download.docker.com/mac/stable/Docker.dmg
hdiutil verify ~/Downloads/Docker.dmg
hdiutil attach ~/Downloads/Docker.dmg -nobrowse
cp -R /Volumes/Docker/Docker.app /Applications/
hdiutil detach /Volumes/Docker
rm ~/Downloads/Docker.dmg
sudo /Applications/Docker.app/Contents/MacOS/Docker --quit-after-install --unattended
echo 'Install Docker Desktop for Mac OS X'
curl -o ~/Downloads/Docker.dmg -sL https://download.docker.com/mac/stable/Docker.dmg
hdiutil verify ~/Downloads/Docker.dmg
hdiutil attach ~/Downloads/Docker.dmg -nobrowse
cp -R /Volumes/Docker/Docker.app /Applications/
hdiutil detach /Volumes/Docker
rm ~/Downloads/Docker.dmg
sudo /Applications/Docker.app/Contents/MacOS/Docker --quit-after-install --unattended
fi

View File

@ -1,12 +0,0 @@
#!/usr/bin/env bash
# Install HomeBrew
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) installing homebrew"
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Prevent `Error: Your Homebrew is outdated. Please run `brew update`.`
echo "Updating Homebrew"
brew update
;;
esac

View File

@ -1,11 +0,0 @@
#!/usr/bin/env bash
# Install missing package (Linux)
case "$(uname -s)" in
Linux)
echo "(Linux) Installing Development Tools"
yum install sudo -y
sudo yum groupinstall 'Development Tools' -y
sudo yum install git which zip unzip ruby curl file docker gcc make libxcrypt-compat vim-enhanced -y
;;
esac

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# Install dependencies (apps, fonts, ...) for CentOS
case "$(uname -s)" in
Linux)
echo "(CentOS) Installing stuff (apps, ...)"
chmod +x ~/Code/dotfiles/centos.sh
~/Code/dotfiles/centos.sh
;;
esac

View File

@ -1,10 +0,0 @@
#!/usr/bin/env bash
# Install dependencies (apps, fonts, ...) with Brew
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Brew installing stuff (apps, fonts, ...)"
ln -snf ~/Code/dotfiles/Brewfile ~/Brewfile
brew bundle
;;
esac

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
# Weave Scope is a visualization and monitoring tool for Docker and Kubernetes.
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
#scope launch

3
dot_scripts/installed.sh Executable file → Normal file
View File

@ -1,3 +1,2 @@
#!/usr/bin/env bash
source $HOME/Code/dotfiles/dot_zsh_aliases
npmlist
npm list -g --depth 0

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# OSX Defaults
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Loading preferences"
sudo sh "$HOME/.macos"
ln -snf "$HOME/Code/dotfiles/com.googlecode.iterm2.plist" "$HOME/com.googlecode.iterm2.plist"
;;
esac

View File

@ -1,24 +0,0 @@
From: "#FROM_NAME" <#FROM_MAIL>
To: "#TO_NAME" <#TO_MAIL>
Subject: Convert
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MULTIPART-MIXED-BOUNDARY"
--MULTIPART-MIXED-BOUNDARY
Content-Type: multipart/alternative; boundary="MULTIPART-ALTERNATE-BOUNDARY"
--MULTIPART-ALTERNATE-BOUNDARY
Content-Type: text/plain; charset="UTF-8"
Hello #TO_NAME
--MULTIPART-ALTERNATE-BOUNDARY
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hello #TO_NAME</div>
--MULTIPART-ALTERNATE-BOUNDARY--
--MULTIPART-MIXED-BOUNDARY
Content-Type: application/octet-stream; name="#ATTACHMENT_NAME"
Content-Disposition: attachment; filename="#ATTACHMENT_NAME"
Content-Transfer-Encoding: base64

View File

@ -1,15 +0,0 @@
#!/usr/bin/env bash
# Install pa11y tool for local webpage accessibility analysis
echo "Installing pa11y tool for local webpage accessibility analysis"
npm install -g pa11y
echo "Installing moro, a productivity CLI tool"
npm install -g moro
echo "Install wiki CLI tool"
npm install -g wikit
echo "Install Write-good CLI spell checker"
npm install -g write-good
echo "Install Alex a text linter"
npm install -g alex
cd "$HOME" || exit

View File

@ -1,10 +0,0 @@
#!/usr/bin/env bash
# Install Oh My Zsh and some cool dependencies
echo "Installing Oh My Zsh + customizing themes and plugins"
echo 'source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme' ~/.zshrc >>!
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
git clone https://github.com/AlexisBRENON/oh-my-zsh-reminder "$ZSH_CUSTOM/plugins/reminder"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc
ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh

View File

@ -1,31 +0,0 @@
#!/bin/bash
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
# shellcheck disable=SC1090
source "$HOME/.zsh_functions"
source "$HOME/.scripts/secrets.sh"
REMOTE=$(git config --get remote.origin.url)
USERNAME=$(git config --get user.name)
EMAIL=$(git config --get user.email)
checkEmailUsername() {
if [[ "$EMAIL" != "$1" ]]; then
warning "Invalid email: $EMAIL for remote $REMOTE"
arrow "fix this by running :\ngit config user.email $1"
exit 1
fi
if [[ "$USERNAME" != "$2" ]]; then
warning "Invalid username: $USERNAME for remote $REMOTE"
arrow "fix this by running :\ngit config user.name \"$2\""
exit 1
fi
}
if [[ $REMOTE == *"$COMPANY_NAME"* ]] && [[ "$REMOTE" != *"dotfiles"* ]]; then
checkEmailUsername "$GIT_PRO_EMAIL" "$GIT_PRO_USER"
else
checkEmailUsername "$GIT_PERSONAL_EMAIL" "$GIT_PERSONAL_USER"
fi

View File

@ -1,31 +0,0 @@
#!/usr/bin/env bash
# Install pip and pipenv
echo "Installing pip and pipenv"
sudo easy_install pip
sudo pip install --upgrade pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Updating PATH for loading pip user installed packages"
ln -snf /usr/local/lib/python3.9/site-packages/pip /usr/local/bin/pip21
ln -snf /usr/local/lib/python3.9/site-packages/pip /usr/local/bin/pip3
export PATH="$PATH:/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/bin/:/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/opt/python/bin/"
;;
esac
if ! test -f "/usr/bin/python2" || ! command -v python2 &>/dev/null; then
sudo ln -snf /usr/bin/python /usr/bin/python2
fi
echo "Upgrading pip"
sudo pip install --upgrade pip
echo "Pip installing stuff"
pip install -r requirements.txt
# was used for some slack CLI in python... https://pypi.org/project/slack-cli/
# pip3 install pipenv
# pyenv install 3.6.0
git clone https://github.com/sherlock-project/sherlock.git ~/Code/sherlock
cd sherlock || exit
python3 -m pip install -r requirements.txt

View File

@ -1,29 +1,23 @@
#!/usr/bin/env zsh
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"
# shellcheck disable
# Reload
echo "Reloading config"
chmod +x ~/.scripts/*.sh
source ~/.zshrc
sdk use java 8.0.222-zulu
# Homebrew reloading stuff
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Homebrew reloading stuff"
brew bundle
;;
Darwin)
echo "(Mac OS X) Homebrew reloading stuff"
brew bundle
;;
esac
# OSX Defaults
case "$(uname -s)" in
Darwin)
sudo sh .macos
;;
Darwin)
sudo sh .macos
;;
esac
pip freeze >/Users/morganwattiez/Code/dotfiles/requirements.txt
bundle check

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
echo 'Installing ruby'
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm reload
rvm requirements run
rvm install 2.3.7

View File

@ -1,11 +0,0 @@
#!/usr/bin/env bash
# Use rustup to install the Rust compiler (rustc) and the Rust package manager (cargo).
echo "Installing Rust compiler and package manager"
rustup-init -y
rustup component add rustfmt
git clone git@github.com:njaremko/podcast.git "$HOME/Code/podcast"
cd "$HOME/Code/podcast" || exit
cargo install --path=.
mkdir "$ZSH_CUSTOM/plugins/podcast" && podcast completion zsh >"$ZSH_CUSTOM/plugins/podcast/_podcast"
cd "$HOME" || exit

View File

@ -1,20 +0,0 @@
#!/usr/bin/env bash
# Use SDKMan to install development tools
echo "Installing SDKMan as development tools manager"
curl -s "https://get.sdkman.io" | bash
# Install missing package (Linux)
case "$(uname -s)" in
Linux)
source "/root/.sdkman/bin/sdkman-init.sh"
;;
esac
echo "SDKMan installing development tools"
sdk install java
sdk install gradle
sdk install java 8.0.222-zulu
sdk install kotlin
echo "SDKMan updating"
sdk selfupdate

View File

@ -1,33 +0,0 @@
#!/usr/bin/env bash
source "$HOME/.scripts/secrets.sh"
function file_to_mail() {
local source_file="$1"
local attachment_name=$(basename "$1")
local target_file="$source_file-encoded"
base64 "$source_file" >"$target_file"
local target_file_content
target_file_content=$(\cat "$target_file")
local mail_template="$HOME/Code/dotfiles/dot_scripts/mail.tpl"
local mail_from="$PRINCIPAL_ACCOUNT_EMAIL"
local mail_to=${2:-"$mail_from"}
local name_from="$PRINCIPAL_ACCOUNT_FULLNAME"
local name_to="$name_from"
\cat "$mail_template" |
sed "s/#FROM_NAME/$name_from/g" |
sed "s/#FROM_MAIL/$mail_from/g" |
sed "s/#TO_NAME/$name_to/g" |
sed "s/#TO_MAIL/$mail_to/g" |
sed "s/#ATTACHMENT_NAME/$attachment_name/g" >/tmp/mailwithattachement.txt
# sed "s/#ATTACHMENT_CONTENT/$target_file_content/g" >/tmp/mailwithattachement.txt
# sed "s/#ATTACHMENT_CONTENT/$target_file_content/g" >/tmp/mailwithattachement.txt
echo "\n$target_file_content\n" >>/tmp/mailwithattachement.txt
echo "\n--MULTIPART-MIXED-BOUNDARY--" >>/tmp/mailwithattachement.txt
curl -v --ssl-reqd --url 'smtps://smtp.gmail.com:465' --user "$GMAIL_APP_USER:$GMAIL_APP_PASSWORD" --mail-from "$mail_from" --mail-rcpt "$mail_to" --upload-file /tmp/mailwithattachement.txt
}

View File

@ -1,50 +0,0 @@
#!/usr/bin/env bash
function suggest_readable_parameters() {
while read -r command_name; do
arrow "searching for usage of $command_name"
if [[ $(top_commands_full "\b$command_name\b" 50 &>/dev/null | wc -l | trim) -gt 30 ]]; then
# arrow "$command_name appears frequently in your history"
# FIXME : skip false positives like file -> "$file"
# FIXME : skip false positives like parameter found "-" in sort --key 4 --numeric-sort --reverse
# TODO : bring support for shell functions aliased to anything providing a real manual
# e.g : checkov should be taken into account but github should not
# TODO : bring support for backslashed functions (e.g : \egrep)
# FIXME : alex --quiet is not detected
# TODO : support research of command usage when parameters of command appear after command arguments, like : path_swilgt=$(find /usr/local/Cellar/logtalk -name "*swilgt.sh"dev/null)
# TODO : support sub commands like in git ls-tree where ls-tree is a subcommand with its own manual : git ls-tree -r --long; or npm install -g <package> where -g is a valid option for npm install
if [[ $(LC_ALL=C type "$command_name") != *"alias for"* && $(LC_ALL=C type "$command_name") != *"is a shell function"* ]] && [[ $($command_name --help &>/dev/null) -eq 0 || $(info $command_name &>/dev/null) -eq 0 ]]; then
while read -r command_usage; do
arrow "searching for parameters in: $command_usage "
echo "$command_usage" | \grep -Eo "\b$command_name\b (\-[a-zA-Z0-9]*)" H -1 | tr -d '-' | awk -v COUNT=1 'NF=COUNT' 1>/dev/null
if [ $? -eq 0 ]; then
while read -r command_parameters; do
success "($command_name) -> found parameters : $command_parameters"
while read -r parameter_name; do
echo "($command_name $command_parameters) -> check more readable alternative to $parameter_name"
$command_name --help 2>/dev/null | \egrep -wo "(\-$parameter_name), --.*" 1>/dev/null # | \grep "\-$parameter_name"
local provides_help=$?
info $command_name 2>/dev/null | \egrep -wo "(\-$parameter_name), --.*" 1>/dev/null # | \grep "\-$parameter_name"
local provides_manual=$?
if [ "$provides_help" -eq 0 ]; then
success "($command_name -$parameter_name) -> found better alternative to $parameter_name in $command_usage:"
$command_name --help | \egrep -wo "(\-$parameter_name), --.*"
fi
if [ "$provides_manual" -eq 0 ]; then
success "($command_name -$parameter_name) -> found better alternative to $parameter_name in $command_usage:"
info $command_name 2>/dev/null | \egrep -wo "(\-$parameter_name), --.*"
fi
done < <(echo "$command_parameters" H -1 | tr -d '-' | fold -w 1)
done < <(echo "$command_usage" | \grep -Po "(?<=\b$command_name\b )(\-[a-zA-Z0-9]*)" | sort -u)
fi
done < <(grep -H -n "\b$command_name\b" "$@")
else
#error "$command_name is not a valid command or does not provide a manual"
true
fi
fi
done < <(top_commands "" 1000 | awk '{print $4}' G "^[\\\\]?[a-z]+$" | sort -u)
}

View File

@ -1,59 +0,0 @@
#!/usr/bin/env bash
echo "Creating symbolic links"
ln -snf "$HOME/Code/dotfiles/dot_profile" "$HOME/.profile"
ln -snf "$HOME/.local/share/chezmoi/" "$HOME/dotfiles"
ln -snf "$HOME/Code/dotfiles/Gemfile" "$HOME/Gemfile"
ln -snf "$HOME/Code/dotfiles/README.md" "$HOME/README.md"
ln -snf "$HOME/Code/dotfiles/dot_bash_profile" "$HOME/.bash_profile"
ln -snf "$HOME/Code/dotfiles/dot_gitconfig" "$HOME/.gitconfig"
ln -snf "$HOME/Code/dotfiles/dot_macos" "$HOME/.macos"
ln -snf "$HOME/Code/dotfiles/dot_scripts" "$HOME/.scripts"
ln -snf "$HOME/Code/dotfiles/dot_scripts/checkci.sh" /usr/local/bin/checkci
ln -snf "$HOME/Code/dotfiles/dot_scripts/git-overview.py" /usr/local/bin/git-overview # via https://github.com/qznc/dot/blob/master/bin/git-overview
ln -snf "$HOME/Code/dotfiles/dot_scripts/pre-commit-verify-committer.sh" /usr/local/bin/pre-commit-verify-committer
ln -snf "$HOME/Code/dotfiles/dot_vimrc" "$HOME/.vimrc"
# custom linters
ln -snf "$HOME/Code/dotfiles/dot_vim/ale_linters" "$HOME/.vim/ale_linters"
ln -snf "$HOME/Code/dotfiles/dot_aliases" "$HOME/.aliases"
ln -snf "$HOME/Code/dotfiles/dot_zsh_aliases" "$HOME/.zsh_aliases"
ln -snf "$HOME/Code/dotfiles/dot_zsh_functions" "$HOME/.zsh_functions"
ln -snf "$HOME/Code/dotfiles/dot_zshrc" "$HOME/.zshrc"
ln -snf "$HOME/Code/dotfiles/dot_zshrc.pre-oh-my-zsh" "$HOME/.zshrc.pre-oh-my-zsh"
ln -snf "$HOME/Code/dotfiles/private_dot_ssh/config" "$HOME/.ssh/config"
ln -snf "$HOME/Code/dotfiles/requirements.txt" "$HOME/requirements.txt"
ln -snf "$HOME/Code/dotfiles/dot_surfraw.conf" "$HOME/.surfraw.conf"
ln -snf "$HOME/Code/dotfiles/private_dot_3llo/config.sh" "$HOME/.3llo_config"
ln -snf "$HOME/Code/dotfiles/dot_ansiweatherrc" "$HOME/.ansiweatherrc"
ln -snf "$HOME/Code/dotfiles/dot_p10k.zsh" "$HOME/.p10k.zsh"
ln -snf "$HOME/Code/dotfiles/dot_git-template" "$HOME/.git-template"
ln -snf "$HOME/Code/dotfiles/private_dot_newsboat" "$HOME/.newsboat"
ln -snf "$HOME/Code/dotfiles/private_dot_config/Code" "$HOME/.config/Code"
ln -snf "$HOME/Code/dotfiles/private_dot_config/neofetch" "$HOME/.config/neofetch"
ln -snf "$HOME/Code/dotfiles/private_dot_config/gh" "$HOME/.config/gh"
ln -snf "$HOME/Code/dotfiles/private_dot_config/htop" "$HOME/.config/htop"
ln -snf "$HOME/Code/dotfiles/private_dot_config/bashtop" "$HOME/.config/bashtop"
ln -snf "$HOME/Code/dotfiles/private_dot_config/wtf" "$HOME/.config/wtf"
ln -snf "$HOME/Code/dotfiles/private_dot_config/yamllint" "$HOME/.config/yamllint"
ln -snf "$HOME/Code/dotfiles/dot_git-template/.pre-commit-config.yaml" "$HOME/dotfiles/.pre-commit-config.yaml"
# Aspell symbolic links
ln -snf "$HOME/Code/dotfiles/dot_aspell.en.prepl" "$HOME/.aspell.en.prepl"
ln -snf "$HOME/Code/dotfiles/dot_aspell.en.pws" "$HOME/.aspell.en.pws"
ln -snf "$HOME/Code/dotfiles/dot_aspell.fr.prepl" "$HOME/.aspell.fr.prepl"
ln -snf "$HOME/Code/dotfiles/dot_aspell.fr.pws" "$HOME/.aspell.fr.pws"
# Vim spellcheck will be based on aspell :-)
ln -snf "$HOME/Code/dotfiles/dot_aspell.en.pws" "$HOME/.vim/spell/en.utf-8.add"
# Other symbolic links + Install Docker Desktop for Mac
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Adding symbolic links"
ln -snf "$HOME/.config/Code/User/settings.json" "$HOME/Library/Application Support/Code/User/settings.json"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/Library/Application Support/Code/User/snippets" "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/.mackup.cfg" "$HOME/.mackup.cfg"
echo "(Mac OS X) Installing Docker"
~/.scripts/install_docker_for_mac.sh
;;
esac

View File

@ -3,29 +3,24 @@ export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"
sdk selfupdate
# Upgrade
echo "Upgrading apps"
# Upgrading HomeBrew stuff
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Homebrew upgrading stuff"
brew update
#brew upgrade
brew outdated | xargs brew upgrade
;;
echo "(Mac OS X) Homebrew upgrading stuff"
brew update
#brew upgrade
brew outdated | xargs brew upgrade
;;
esac
bundle update --all
#gem update --system
#gem update asciidoctor-pdf t
zsh ~/.oh-my-zsh/tools/upgrade.sh || upgrade_oh_my_zsh
zsh ~/.oh-my-zsh/tools/upgrade.sh
sudo pip install --upgrade pip 2>/dev/null
sudo pip3 install --upgrade pip 2>/dev/null
pip list --outdated --format=freeze G -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
pip freeze >~/requirements.txt
# Update VIM plugins installed via Vundle https://github.com/VundleVim/Vundle.vim
vim +PluginUpdate +qall >/dev/null
rustup update
npm update -g moro
pre-commit autoupdate
rustup-update

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail
vim --version H -1
vim --version | head -1
rustc --version
npm --version
bats --version
@ -19,12 +19,12 @@ python3 --version
docker --version
openssl version
git --version
atlas-version G Version H -n 1
atlas-version | grep Version | head -n 1
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"
sdk --version
tac --version H -n 1
tac --version | head -n 1
k9s version
tfsec --version
aws-iam-authenticator version

View File

@ -1,11 +0,0 @@
#!/usr/bin/env bash
echo "Installing Vundle + VIM Plugins"
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim +PluginInstall +qall >/dev/null
#https://github.com/ycm-core/YouCompleteMe/blob/master/README.md#installation
cd "$HOME/.vim/bundle/YouCompleteMe" || exit
./install.py --all
mkdir -p "$HOME/.vim/spell"
cd "$HOME" || exit
git clone https://github.com/dbeniamine/cheat.sh-vim.git ~/.vim/cheat.sh-vim

View File

@ -45,12 +45,6 @@ Plugin 'tpope/vim-fugitive'
Plugin 'scrooloose/nerdtree'
" A plugin of NERDTree showing git status
Plugin 'Xuyuanp/nerdtree-git-plugin'
" Vim plugin for intensely nerdy commenting powers
" In order to use it for instance, for commenting a block of text... do as :
" - Select several lines (using <V>)
" - Press <SPACE> then <cs>
Plugin 'preservim/nerdcommenter'
" A Vim plugin which shows a git diff in the gutter (sign column) and stages/undoes hunks and partial hunks.
Plugin 'airblade/vim-gitgutter'
" Jenkinsfile DSL Vim Syntax
@ -63,14 +57,6 @@ Plugin 'mbbill/undotree'
Plugin 'farmergreg/vim-lastplace'
" Add icons to your plugins
Plugin 'ryanoasis/vim-devicons'
" Prettier to auto format some files
Plugin 'mitermayer/vim-prettier'
" Enable OpenAI based text completion
Plugin 'jessfraz/openai.vim'
" TabNine for code completion
Plugin 'zxqfl/tabnine-vim'
" read man pages from vim, e.g : SuperMan ls. inspired by https://catonmat.net/read-man-pages-with-vim
Plugin 'jez/vim-superman'
" All of your Plugins must be added before the following line
call vundle#end()
@ -111,28 +97,12 @@ let g:ale_use_global_executables = 1
let g:ale_fix_on_save = 1
let g:ale_completion_enabled = 1
let g:ale_open_list = 1
"\ 'yaml': ['prettier'],
"let g:ale_fixers = {
"\ '*': ['remove_trailing_lines', 'trim_whitespace'],
"\ 'python': ['black'],
"\ 'rust': ['rustfmt'],
"\ 'Jenkinsfile': ['checkci'],
"\ 'sh' : ['shfmt'],
"\ 'zsh' : ['shfmt'],
"\}
let g:ale_linters = {'zsh': ['shellcheck'], 'text': ['writegood', 'proselint', 'alex']}
" when running at every change you may want to disable quickfix
let g:prettier#quickfix_enabled = 0
let g:prettier#quickfix_auto_focus = 1
let g:prettier#config#print_width = '30'
let g:prettier#exec_cmd_path = "/usr/local/bin/prettier"
let g:prettier#autoformat = 0
let g:prettier#autoformat_require_pragma = 0
"autocmd TextChanged,InsertLeave *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'python': ['black'],
\ 'rust': ['rustfmt'],
\ 'Jenkinsfile': ['checkci'],
\}
" Enable syntax highlighting
syntax on
@ -180,16 +150,12 @@ set tabstop=4
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
" Enable spell checking
set spell
" Default colors for highlighting search result
hi Search ctermfg=White
hi Search ctermbg=DarkMagenta
" test cheat.sh integration with VIM
" In any source file, type a query "e.g : how to append ... in python" then
" exit insert mode, and press <SPACE> then <KK>
let mapleader=" "
" map a specific key or shortcut to open NERDTree
@ -207,9 +173,6 @@ let g:syntastic_javascript_checkers = [ 'jshint' ]
let g:syntastic_ocaml_checkers = ['merlin']
let g:syntastic_python_checkers = ['pylint']
let g:syntastic_shell_checkers = ['shellcheck']
let g:syntastic_yaml_checkers = ['yamllint']
let g:syntastic_vim_checkers = ['vint']
let g:syntastic_zsh_checkers = ['shellcheck']
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
@ -220,4 +183,3 @@ let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
au BufNewFile,BufRead Jenkinsfile setf groovy
au BufRead,BufNewFile *.sh setfiletype sh

View File

@ -1,30 +1,56 @@
# Example aliases
# alias zshconfig="mate $HOME/.zshrc"
# alias ohmyzsh="mate $HOME/.oh-my-zsh"
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
#
chmod +x $HOME/.aliases/*
# Git
source "$HOME/.aliases/git.sh"
# Docker
# Git, dotfiles, ripgrep, Node.JS
alias gcls='git clone --depth 1 --recurse-submodules'
alias cm='chezmoi'
alias grep='rg'
alias npmlist='npm list -g --depth 0'
alias lg='lazygit'
alias lzd='lazydocker'
alias neworigin='setorigin'
alias origin='setorigin'
alias gpar='gitpushallremote'
# PM : Jira & trello & asana & moro
source "$HOME/.aliases/backlog.sh"
# Jira
alias jirasearch='issues'
alias cicdlist="jira issue jql \"project = 'CICD' AND resolution = Unresolved\""
alias backlogs="jira issue jql \"status = New AND project IN (CICD) AND Created > -2w ORDER BY Priority DESC\""
alias bakclogs='backlogs'
alias support="jira issue jql \"project in (CICD) AND (Created > -2w AND resolution = Unresolved AND (type = 'Engineering Incident' AND status not in ('Waiting for external information') OR type IN ('Engineering Request', 'Task', 'User Story') AND status in ('New', 'To be picked next')) OR resolution != Unresolved AND status = 'In Progress') ORDER BY key DESC\""
alias guardian="support"
alias lastissues='jira issue jql "project IN (CICD) AND Created > -2w ORDER BY Created DESC, Priority DESC"'
alias workingon="jira issue jql \"assignee = currentUser() AND resolution = Unresolved AND status not in ('In Review', 'Done', 'In Testing', 'Waiting For Build') OR QA = currentUser() AND status = 'In Testing' ORDER BY updated DESC, priority DESC\""
alias toreview='jira issue jql "project in (CICD) AND Updated > -2w AND issue.property[development].openprs > 0 ORDER BY Created DESC, Priority ASC"'
alias newissues="jira issue jql \"project IN (CICD) AND Created > -2w AND resolution = Unresolved AND status not in ('In Progress') ORDER BY Created DESC, Priority DESC\""
alias n='newissues'
alias backlog=cicdlist
alias bakclog='backlog'
alias b='backlog'
alias mybacklog="jira issue ls && asana"
alias mb='mybacklog'
alias myissues='mb'
alias me='mb'
alias j='jira issue open'
# News
source "$HOME/.aliases/news.sh"
alias hack='hacker'
alias crypto='curl rate.sx'
# Twitter
source "$HOME/.aliases/twitter.sh"
# RSS
source "$HOME/.aliases/rss.sh"
alias twitter='\t'
alias tsearch='twitter search all'
alias tweets='tsearch --long -a -d'
alias tsearchfav='twitter search favorites'
alias tsearchtimeline='twitter search timeline'
# Search
source "$HOME/.aliases/search.sh"
alias ddg='ddgr'
alias goo='googler'
alias se='sr -elvi'
alias engines='sr -elvi'
# Events
alias agenda='calendar'
@ -32,74 +58,105 @@ alias mails="gmail && gmail2"
alias mailperso="gmail2"
alias mailpro="gmail"
# Viewing files
alias cat='bat --style=plain --color "always"'
alias preview="fzf --preview 'bat --color \"always\" --style=plain {}' --cycle "
alias markdown2='pandoc README.md | lynx -stdin -dump'
alias markdown='glow'
# To do / Done
#alias done='task_done'
# Management / Security / SSH / SSL
source "$HOME/.aliases/secure.sh"
alias mgmt='ssh $(whoami)@$PROXY_HOST -i ~/.ssh/id_ed25519'
alias m='mgmt'
alias tunnel='ssh -D 8000 -N $(whoami)@$PROXY_HOST -i ~/.ssh/id_ed25519'
alias sshpub='cat ~/.ssh/id_ed25519.pub'
alias ssla="openssl x509 -alias -noout -in" # Usage : ssla <cert>
alias encrypt='ansible-vault encrypt **/vault.yml --vault-password-file=$VAULT_PASSWORD_FILE'
alias decrypt='ansible-vault decrypt **/vault.yml --vault-password-file=$VAULT_PASSWORD_FILE'
alias newpass='bw generate --special --uppercase --lowercase --number --length 30'
# Network
source "$HOME/.aliases/network.sh"
# Downloads
alias get="curl -O -L" # Download file and save it with filename of remote file
# Files & folder tricks
source "$HOME/.aliases/files.sh"
# System Utils
alias systeminfo='neofetch'
alias monitoring='glances'
alias reload="exec ${SHELL} -l" # Reload the shell (i.e. invoke as a login shell)
alias sc="source $HOME/.zshrc"
# Infrastructure
alias awsls='awsls -profile default -region eu-west-1 --attributes tags aws_instance'
# Package management tricks
alias npmlist='npm list -g --depth 0'
alias pip='pip3'
# RTFM
alias learnmore="apropos . | sort --random-sort | awk 'NR == 1 {print$1}' | cut -d'(' -f 1 | xargs man"
alias help='tldr'
alias latency='curl cheat.sh/latency'
alias ip='echo $(curl ident.me -4 2>/dev/null)'
alias ipinfo='curl "ipinfo.io/"$(ip)'
alias getips='\egrep "\b(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(1[0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9]{1,2})\b"'
# Misc
source "$HOME/.aliases/misc.sh"
alias h='cd $HOME'
alias bash="/usr/local/bin/bash"
alias diff='colordiff --side-by-side --ignore-space-change --width=200 --suppress-common-lines --recursive'
alias cp='cp -i' # confirmation before overwrite #
alias mv='mv -i' # confirmation before overwrite
alias rm='gomi'
alias df='df -H'
alias du='ncdu --color dark -rr -x --exclude .git --exclude node_modules'
#alias du='du -ch'
alias weather='weather "?lang=fr&"'
alias headers='curl -I --compress' # Find out if remote server supports gzip / mod_deflate or not #
alias hist='history'
# Linters
alias checken="aspell check -d en"
alias checkfr="aspell check -d fr"
alias fixallscripts="shfmt -w -l -i 2 -ci **/*.sh"
# Development
alias gw='./gradlew'
# NSFW
alias irc='weechat'
# Terraform
source "$HOME/.aliases/terraform.sh"
source "$HOME/.aliases/terragrunt.sh"
# Fun
alias path='echo -e ${PATH//:/\\n}' # Explode and display current PATH
alias ping='prettyping -c 5 --nolegend' # Stop after sending count ECHO_REQUEST packets
alias https='http --default-scheme=https' # useful alias stealed from a colleague. http is provided by httpie
alias p='ps -ef | grep -i ' # Show matching processes. Usage : p <process name>
alias root='sudo -i'
alias s=ls
alias sl=ll
alias v=vi
alias ls='lsd'
alias tree='ls --almost-all --tree'
alias pip='pip3'
alias c='cat'
alias x='extract'
alias current_year='`echo date +"%Y"`'
alias learnmore="apropos . | sort --random-sort | awk 'NR == 1 {print$1}' | cut -d'(' -f 1 | xargs man"
alias biggerthan10='biggerthan 10M'
alias latency='curl cheat.sh/latency'
alias moon='curl "wttr.in/Moon?lang=fr"'
alias lune='moon'
alias help='tldr'
alias systeminfo='neofetch'
alias monitoring='glances'
alias ':q'='exit'
alias irc='weechat'
alias trello='3llo'
alias unix='curl -L http://git.io/unix'
alias coffee="curl -L http://git.io/coffee"
alias hotcoffee="curl -sL git.io/hotcoffee | sh"
alias usernames="python3 $HOME/Code/sherlock/sherlock.py --rank --print-found"
alias checken="aspell check -d en"
alias checkfr="aspell check -d fr"
alias gw='./gradlew'
alias terraform_landscape='landscape'
alias tf='terraform'
# Music
source "$HOME/.aliases/music.sh"
alias music='baton'
alias mytracks='music me saved tracks'
alias saved='mytracks'
alias liked='saved'
alias next='music next'
alias prev='music prev'
alias previous='prev'
alias like='music save'
alias curr='music status'
# K8S
alias k9s='COLORTERM=256bit k9s --all-namespaces'
alias 9=k9s
alias K=k9s
# Macos specifics
case "$(uname -s)" in
Darwin)
source "$HOME/.aliases/macos.sh"
;;
esac
# Show/hide hidden files in Finder
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
# Hide/show all desktop icons (useful when presenting)
alias hidedesktop="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
alias showdesktop="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
# Flush Directory Service cache
alias flush="dscacheutil -flushcache && killall -HUP mDNSResponder"
# This is the end ;( ... for now ;D

View File

@ -1,274 +1,105 @@
# Text formatting utilities
bold=$(tput bold)
underline=$(tput sgr 0 1)
reset=$(tput sgr0)
purple=$(tput setaf 171)
red=$(tput setaf 1)
green=$(tput setaf 76)
tan=$(tput setaf 3)
blue=$(tput setaf 38)
header() {
printf "\n${bold}${purple}========== %s ==========${reset}\n" "$@"
}
arrow() {
printf " ➜ %s\n" "$@"
}
success() {
printf "${green} ✔ %s${reset}\n" "$@"
}
error() {
printf "${red} ✖ %s${reset}\n" "$@"
}
warning() {
printf "${tan} ➜ %s${reset}\n" "$@"
}
underline() {
printf "${underline}${bold}%s${reset}\n" "$@"
}
bold() {
printf "${bold}%s${reset}\n" "$@"
}
note() {
printf "${underline}${bold}${blue}Note:${reset} ${blue}%s${reset}\n" "$@"
}
function substring() {
local _length=${#1}
local _start=${2}
local _end=${3}
echo ${1:_start:_length-_end}
}
# Browser interaction utilities
function browse() {
open -na "$DEFAULT_BROWSER" --args "$1"
}
function incognito() {
open -na "$DEFAULT_BROWSER" --args --incognito "$1"
}
function google() {
browse "https://www.google.com/search?q=$*"
open -na "Google Chrome" --args "https://www.google.com/search?q=$*"
}
function stackoverflow() {
browse "https://www.google.com/search?q=site:stackoverflow.com $*"
open -na "Google Chrome" --args "https://www.google.com/search?q=site:stackoverflow.com $*"
}
function github() {
browse "https://github.com/search?q=$*"
open -na "Google Chrome" --args "https://github.com/search?q=$*"
}
function hacker() {
browse "https://hn.algolia.com/?sort=byDate&query=$*"
open -na "Google Chrome" --args "https://hn.algolia.com/?sort=byDate&query=$*"
}
function gmail() {
browse "https://mail.google.com/mail/u/0"
open -na "Google Chrome" --args "https://mail.google.com/mail/u/0"
}
function gmail2() {
browse "https://mail.google.com/mail/u/1"
open -na "Google Chrome" --args "https://mail.google.com/mail/u/1"
}
function cicdboard() {
browse "$JIRA_URL/secure/RapidBoard.jspa?rapidView=457&view=planning.nodetail"
open -na "Google Chrome" --args "$JIRA_URL/secure/RapidBoard.jspa?rapidView=457&view=planning.nodetail"
}
function cicddashboard() {
browse "$JIRA_URL/secure/Dashboard.jspa?selectPageId=13131"
open -na "Google Chrome" --args "$JIRA_URL/secure/Dashboard.jspa?selectPageId=13131"
}
function calendar() {
browse "https://calendar.google.com/calendar/r?tab=mc"
}
function asana() {
browse "https://app.asana.com"
}
function confluencetasks() {
browse "$CONFLUENCE_URL/plugins/inlinetasks/mytasks.action"
}
function trello_web() {
browse "$TRELLO_BOARD_URL"
}
function bookmarks() {
browse "https://github.com/MorganGeek/bookmarks/blob/master/README.md"
}
function spotify() {
browse "https://open.spotify.com/search/$*"
}
function lob() {
browse "https://lobste.rs"
}
function archive() {
browse "https://web.archive.org/web/*/$*"
}
function iknowwhatyoudownload() {
browse "https://iknowwhatyoudownload.com/en/peer/?ip=$*"
}
function vimium() {
browse "chrome-extension://dbepggeogbaibhgnhhndojpepiihcmeb/pages/options.html#"
}
function toby() {
browse "chrome-extension://gfdcgfhkelkdmglklfbndgopaihmoeci/toby.html"
}
# Jira utilities
function issues() {
jira issue jql "status = Open AND text ~ \"$*\" ORDER BY Created DESC"
}
function istherenewissues() {
LASTISSUE=$(newissues | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g' | awk 'FNR==2{print $2}')
if [[ -f "$HOME/.newjiraissue" ]]; then
previous_jira_issue=$(\cat "$HOME/.newjiraissue" | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g') # the sed part is for removing output colors
if [ "$LASTISSUE" != "$previous_jira_issue" ]; then
newissues
else
success "no new issue"
fi
fi
echo "$LASTISSUE" >"$HOME/.newjiraissue"
function calendar() {
open -na "Google Chrome" --args "https://calendar.google.com/calendar/r?tab=mc"
}
function asana() {
open -na "Google Chrome" --args "https://app.asana.com"
}
function bookmarks() {
open -na "Google Chrome" --args "https://github.com/MorganGeek/bookmarks/blob/master/README.md"
}
function spotify() {
open -na "Google Chrome" --args "https://open.spotify.com/search/$*"
}
function lob() {
open -na "Google Chrome" --args "https://lobste.rs"
}
# Prolog / Logtalk
function logtalk() {
path_swilgt=$(find /usr/local/Cellar/logtalk -name "*swilgt.sh" 2>/dev/null)
sh "$path_swilgt"
}
function archive() {
open -na "Google Chrome" --args "https://web.archive.org/web/*/$*"
}
function git_listobjectsbysize() {
tempFile=$(mktemp)
IFS=$'\n'
for commitSHA1 in $(git rev-list --all); do
git ls-tree -r --long "$commitSHA1" >>"$tempFile"
done
# History / Aliases helpers
# sort files by SHA1, de-dupe list and finally re-sort by filesize
sort --key 3 "$tempFile" | \
uniq | \
sort --key 4 --numeric-sort --reverse
# remove temp file
rm -f "$tempFile"
}
function top_commands() {
local filter="$1"
local max_results=${2:-'50'}
history | \cat | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a; }' G --invert-match "./" | column -c3 -s " " -t G "$filter" | sort --numeric-sort --reverse | nl H "-n$max_results"
history | cat | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a; }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n50
}
function top_commands_full() {
local filter="$1"
local max_results=${2:-'50'}
history | \cat | awk '{$1=$1};1' | sed 's/^[0-9\* TAB]*//g' | awk '{CMD[$0]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "%\t" a; }' G "$filter" | sort --numeric-sort --reverse | nl H "-n$max_results"
history | cat | sed 's/^[0-9 TAB]*//g' | awk '{CMD[$0]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "%\t" a; }' | sort -nr | nl | head -n50
}
# Where is a function defined?
function whichfunc() {
whence -v $1
type -a $1
}
source "$HOME/Code/dotfiles/dot_scripts/suggest_readable_parameters.sh"
# TODO : suggest spelling fixes
function suggest_code_refactoring() {
#inspired by : \grep 'awk '\''{$1=$1};1'\' $HOME/Code/dotfiles/dot_zsh*
header "code refactoring suggestions"
while read -r line; do
local short_name=$(echo "$line" | sed -E "s/='.*//g")
local alias_value=$(echo "$line" | sed -E 's/[a-zA-Z_-]+=//g')
local alias_value_truncated=${alias_value:1:$((${#alias_value} - 2))}
\fgrep -d skip $alias_value_truncated "$@" 2>/tmp/error.log | \grep --invert-match "alias $short_name=" 1>/dev/null
if [ $? -eq 0 ]; then
success "found $short_name --> $alias_value_truncated"
\fgrep -d skip "$alias_value_truncated" "$@" --color -n -H --line-buffered | \grep --invert-match "alias $short_name="
function istherenewissues() {
LASTISSUE=$(newissues | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g' | awk 'FNR==2{print $2}')
if [[ -f "$HOME/.newjiraissue" ]]
then
previous_jira_issue=$(cat "$HOME/.newjiraissue" | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g') # the sed part is for removing output colors
if [ "$LASTISSUE" != "$previous_jira_issue" ]; then
newissues
else
local error_message=$(\cat /tmp/error.log)
if [ -n "$error_message" ]; then
error "issue occured when looking for $alias_value_truncated : $error_message"
fi
fi
done < <(alias | awk -v COUNT=1 'NF>COUNT') # list of all aliases, excluding the less interesting ones (where we use one word for another)
}
function suggest_aliases() {
local search_input_size=${1:-'50'}
header "alias recommendations"
while read -r line; do
local matching_aliases=$(ag --multiline "$line")
if [ ! -z "$matching_aliases" ]; then
success "there is an alias for $line :"
while read -r alias_line; do
arrow "$alias_line"
done < <(echo "$matching_aliases")
echo
else
warning "no alias for $line"
fi
done < <(top_commands_full "" "$search_input_size" | awk '{ $1=""; $2=""; $3=""; print}' | awk 'NF' | awk '{$1=$1};1' | awk -v COUNT=1 'NF>COUNT' H "-$search_input_size")
}
# Download management
function file_to_kindle() {
local source_file="$1"
if [[ "$source_file" =~ .*.epub$ ]]; then
if epub2mobi "$source_file" 2>/dev/null; then
source_file=$(echo $source_file | sed 's/.epub$/.mobi/')
echo "no new issue"
fi
fi
file_to_mail "$source_file" "$KINDLE_ACCOUNT_EMAIL"
echo "$LASTISSUE" > "$HOME/.newjiraissue"
}
function getabook() {
local searchterm="$1"
if searchbook "$searchterm"; then
echo "new downloaded file"
grepsearchterm=$(echo "$searchterm" | sed 's/ /.*/g')
if find ~/Downloads/Books -mmin -2 | grip "$grepsearchterm.*(epub|mobi|pdf)$"; then
local matching_file=$(find ~/Downloads/Books -mmin -2 | grip "$grepsearchterm.*(epub|mobi|pdf)$" | head -1)
local downloaded_file=$(basename "$matching_file")
cd "$HOME/Downloads/Books" &>/dev/null || exit
success "file downloaded in your Books folder : $downloaded_file"
if file_to_kindle "$downloaded_file" 2>/dev/null; then
success "file sent to your kindle, please review your emails to approve the transfer"
mailperso
else
error "could not send your file $downloaded_file to your email address, please check your folder"
open ~/Downloads/Books
fi
else
error "could not find a matching file in your download folder"
fi
else
error ":'( the automatic download failed for $1, does this book exists ? check yourself or retry"
browse "https://libgen.lc/search.php?req=$1"
fi
}
# Mail management
source $HOME/Code/dotfiles/dot_scripts/sendmail.sh
# Sound management
# Inspired by https://apple.stackexchange.com/a/213048/231885 for switching devices
# and https://coderwall.com/p/22p0ja/set-get-osx-volume-mute-from-the-command-line for volume management
function mute_device() {
local current_device=$(SwitchAudioSource -c)
local target_device="$1"
if SwitchAudioSource -a G "$target_device" 1>/dev/null; then
SwitchAudioSource -s "$1" 1>/dev/null
osascript -e 'set volume output muted true'
success "device $target_device muted"
SwitchAudioSource -s "$current_device" 1>/dev/null
if [ "$current_device" != "$target_device" ]; then
arrow "switching back to $current_device"
fi
arrow "currently using $current_device"
else
error "sound device not found : $target_device (maybe it's disconnected ?)"
fi
}
function switch_device() {
local target_device="$1"
if SwitchAudioSource -a G "$target_device" 1>/dev/null; then
if SwitchAudioSource -s "$1" 1>/dev/null; then
success "switched to $target_device"
unmute
else
error "failed to switch to $target_device"
fi
else
error "sound device not found : $target_device (maybe it's disconnected ?)"
fi
}
# Web Crawling
function aboutpage() {
year=$(echo "$*" | egrep --extended-regexp --only-matching '\b[[:digit:]]{4}\b' H -n1)
if [ -z "$year" ]; then
year=$(curl --silent --show-error --location "$*" | tr '<' '\r' | \egrep --ignore-case "date|datetime" -A 1 | \grep --extended-regexp --only-matching '\b[[:digit:]]{4}\b' H -n1)
year=$(echo "$*" | egrep -Eo '\b[[:digit:]]{4}\b' | head -n1)
if [ -z "$year" ]
then
year=$(curl -sSL "$*" | tr '<' '\r' | \egrep -i "date|datetime" -A 1 | \grep -Eo '\b[[:digit:]]{4}\b' | head -n1)
fi
author=$(curl --silent --show-error --location "$*" | tr '<' '\r' | \egrep --ignore-case "author" -A 1 | \grep --extended-regexp --only-matching '([A-Z][A-Za-z]+\s([A-Za-z ]+)*)' H -n1)
title=$(curl --silent -SL "$*" | tr '<' '<\n' | \grep title -A 1 H -n1 | sed -E 's/.*<title>(.*)<\/title>.*/\1/' | sed "s/ [^[:alnum:]]*$author//")
author=$(curl -sSL "$*" | tr '<' '\r' | \egrep -i "author" -A 1 | \grep -Eo '([A-Z][A-Za-z]+\s([A-Za-z ]+)*)' | head -n1)
title=$(curl -sSL "$*" | tr '<' '<\n' | \grep title -A 1 | head -n1 | sed -E 's/.*<title>(.*)<\/title>.*/\1/' | sed "s/ [^[:alnum:]]*$author//")
yearint=$(($year + 0))
currentyear=$(echo $(date +"%Y"))
if [ ! -z "$author" ]; then
currentyear=$(echo `date +"%Y"`)
if [ ! -z "$author" ]
then
echo "by $author"
fi
if [ ! -z "$title" ]; then
if [ ! -z "$title" ]
then
echo "-> $title"
fi
if [[ $yearint -ge 1970 && $yearint -le $currentyear ]]; then
if [[ $yearint -ge 1970 && $yearint -le $currentyear ]]
then
echo "$yearint"
fi
if [ ! -z "$title" ] && [ ! -z "$author" ] && [[ $yearint -ge 1970 && $yearint -le $currentyear ]]; then
@ -283,12 +114,11 @@ function col() {
}
# Skip first x words in line
# via https://blog.developer.atlassian.com/ten-tips-for-wonderful-bash-productivity/
function skip() {
function skip {
n=$(($1 + 1))
cut -d' ' -f$n-
}
# Code search / stats helpers
cmd_loc="find . -type f \( \
-name '*.py' \
-o -name '*.rb' \
@ -298,170 +128,87 @@ cmd_loc="find . -type f \( \
-o -name '*.c' -o -name '*.h' \
-o -name '*.js' \
-o -name '*.tsx' \
-o -name '*.sh' \
-o -name '*.md' \
-o -name '*.xml' \
-o -name '*.yaml' -o -name '*.yml' \
-o -name '*.groovy' \
-o -name '*.gradle' \
-o -name '*.properties' \
\) -exec \cat \{\} \; | LANG=C LC_CTYPE=C sed -e 's/^[ \t]*//;s/[ \t]*$//'"
\) -exec \cat \{\} \; | LANG=C LC_CTYPE=C sed -e 's/^[ \t]*//;s/[ \t]*$//'"
# Unique lines of code
# Via https://text.causal.agency/004-uloc.txt
function uloc() {
eval "$cmd_loc | LANG=C LC_CTYPE=C sort --unique | wc -l"
function uloc {
eval "$cmd_loc | LANG=C LC_CTYPE=C sort -u | wc -l"
}
# Top lines of code
function toploc() {
eval "$cmd_loc | LANG=C LC_CTYPE=C cut -c 1-100 | LANG=C LC_CTYPE=C sort | uniq -c | LANG=C LC_CTYPE=C sort --numeric-sort --reverse H -50"
}
function historyloc() {
top_commands_full "" 5000 topshellloc
}
function how_in() {
where="$1"
shift
IFS=+ curl "cht.sh/${where}/$*"
}
# File name references in file
function filerefs() {
FILENAME=${1:-README*)}
\grep --extended-regexp --only-matching "\b([a-zA-Z.-]+)\.([a-z]{2,4}\b)" $FILENAME \
| sort --unique \
| egrep --invert-match --ignore-case "\.com|\.git|\.io|\net|\.org|\.se|\.me|\.fr|contributing\.md"
}
function invalid_file_refs() {
FILENAME=${1:-"README.*"}
while read -r file_ref; do
arrow "processing $file_ref ..."
find . -name "$file_ref" 1>/dev/null
local exit_status=$?
if [ $exit_status -eq 1 ]; then
warning "$file_ref does not exist in the project"
else
success "$file_ref was found in the project"
fi
arrow "checking if $file_ref is present in the source code..."
source_refs=$(\grep "$file_ref" * -r -l G --invert-match "$FILENAME" | wc -l 2>/dev/null | trim)
if [ "$source_refs" -eq 0 ]; then
error "$file_ref was not found in source code"
else
arrow "searching for $file_ref references in soure code..."
while read -r source_ref; do
success "$file_ref was found in $source_ref"
done < <(\grep "$file_ref" * -r -l)
fi
done < <(filerefs "$FILENAME")
function toploc {
eval "$cmd_loc | LANG=C LC_CTYPE=C cut -c 1-100 | LANG=C LC_CTYPE=C sort | uniq -c | LANG=C LC_CTYPE=C sort -nr"
}
# Text search
# run write-good, proselint, and aspell in non interactive mode, to list all mispelled words found
function checkenlist() {
aspell -d en list < "$1" | sort --unique --ignore-case
write-good --no-passive "$1"
proselint "$1"
alex -q --stdin < "$1"
}
function checkenremote() {
local target_url="$1"
if [[ ! "$target_url" =~ "githubusercontent.com" && ! "$target_url" =~ "README" && ! "$target_url" =~ "readme" ]]; then
arrow "no readme found"
local guess_readme_url=$(http "$target_url" | \grep -ioP 'href="\K.*REAdme.(md|rst)(?=")' | head -1)
arrow "does https://github.com${guess_readme_url} exist "
arrow "guess url : $guess_readme_url"
if http --check-status "https://github.com${guess_readme_url}" &>/dev/null; then
target_url="https://github.com${guess_readme_url}"
arrow "target url changed to ${target_url}"
else
arrow "https://github.com${guess_readme_url} do not exist"
fi
fi
target_url=$(echo "$target_url" | sed 's/github.com/raw.githubusercontent.com/g' | sed 's;blob/;;')
arrow "checking $target_url"
curl --location --insecure --silent "$target_url" > /tmp/file && checkenlist /tmp/file #&& write-good --no-passive /tmp/file && proselint /tmp/file && \cat /tmp/file > alex -q --stdin
}
# Time management
function zoomtimeboxed() {
declare -i total_minutes=$1
declare -i total_seconds=$total_minutes*60
echo $total_seconds;
arrow "will start zoom and leave it after $total_minutes minutes ($total_seconds seconds)"
zoom; (sleep "$total_seconds" && nozoom) &
}
# File stats helpers
# Find files bigger than X size and sort them by size
function biggerthan() {
find . -size "+$*" -type f -print0 | xargs -0 ls -Ssh | sort --zero-terminated
find . -size "+$*" -type f -print0 | xargs -0 ls -Ssh | sort -z
}
# To automatically ls when changing directory
function cd() {
builtin cd "$@" && ll -atr
builtin cd "$@" && ls -latr
}
function mouse() {
case "$(uname -s)" in
Darwin)
sh ~/.scripts/mouse_bluetooth.sh
;;
Darwin)
sh ~/.scripts/mouse_bluetooth.sh
;;
esac
}
# Conversion
function epub2pdf() {
local output_file_name=$(echo $1 | sed 's/.epub$/.pdf/')
ebook-convert "$1" "$output_file_name"
}
function epub2mobi() {
local output_file_name=$(echo $1 | sed 's/.epub$/.mobi/')
ebook-convert "$1" "$output_file_name"
}
# Information gathering
function meteo() {
curl "fr.wttr.in/$*"
}
function how_in() {
where="$1"; shift
IFS=+ curl "cht.sh/${where}/$*"
}
function rate() {
curl "http://rate.sx/$*"
}
# Uploaders
function transfer() {
transfer() {
# check arguments
if [ $# -eq 0 ]; then
warning "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
if [ $# -eq 0 ];
then
echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
return 1
fi
# get temporarily filename, output is written to this file show progress can be showed
tmpfile=$(mktemp -t transferXXX)
tmpfile=$( mktemp -t transferXXX )
# upload stdin or file
file=$1
if tty -s; then
if tty -s;
then
basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
if [ ! -e $file ]; then
error "File $file doesn't exists."
if [ ! -e $file ];
then
echo "File $file doesn't exists."
return 1
fi
if [ -d $file ]; then
if [ -d $file ];
then
# zip directory and transfer
zipfile=$(mktemp -t transferXXX.zip)
cd $(dirname $file) && zip -r -q - $(basename $file) >>$zipfile
curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >>$tmpfile
zipfile=$( mktemp -t transferXXX.zip )
cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile
curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile
rm -f $zipfile
else
# transfer file
curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >>$tmpfile
curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile
fi
else
# transfer pipe
curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >>$tmpfile
curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile
fi
# cat output link
cat $tmpfile
@ -469,18 +216,31 @@ function transfer() {
# cleanup
rm -f $tmpfile
}
# Where is a function defined?
function whichfunc() {
whence -v $1
type -a $1
}
function checkov() { docker run -i --rm -v "$(pwd):/tf" bridgecrew/checkov -d /tf "$@"; }
function vimat() {
# git shortcuts
function gcrb {
branch=$1
git checkout -b $branch origin/$branch
}
function terraform-compliance { docker run --rm -v "$(pwd):/target" -i -t eerkunt/terraform-compliance "$@"; }
function checkov { docker run -i --rm -v "$(pwd):/tf" bridgecrew/checkov -d /tf "$@" ; }
function vimat {
vim +/$1 $2
}
function httperr() {
curl --silent "https://http.cat/$1" | imgcat
function copyhooks {
cp -f ~/.git-template/.pre-commit-config.yaml ./
pre-commit install --install-hooks --overwrite
pre-commit run -a
}
# Config / Infra as code
function terraform-compliance() { docker run --rm -v "$(pwd):/target" -i -t eerkunt/terraform-compliance "$@"; }
function terragrunt_color() {
function httperr {
curl -s "https://http.cat/$1" | imgcat
}
function terragrunt_color {
BOLD=$(tput bold)
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
@ -505,269 +265,59 @@ function terragrunt_color() {
-e "s/\( *.*: *\)\(\".*\"\)\( => \)\(\".*\"\)/${YELLOW}\1${RED}\2${BLACK}\3${GREEN}\4${RESET}/" \
-e "s/\( *.*: *\".*\"\)/${GREEN}\1${RESET}/"
}
function jenkins-cli() {
local script_location=$(find $HOME/code/jenkins-cloudbees-core -name "jenkins-cli.sh")
eval "$script_location $*"
}
# Security / Secrets helpers
function passwords() {
bw list items --search "$1" | jq -c '.[] | .name + " " + .login.username + ":" + .login.password + " " + .login.uris[0].uri'
}
function password() {
bw get password "$1"
}
function vaultgetsecret() {
local secret=$(grep -A 500 "ANSIBLE_VAULT" "$1" | awk '{$1=$1;print}' | \grep --extended-regexp --only-matching "^[0-9a-z^ ]+$")
local secret_string=$(echo "\$ANSIBLE_VAULT;1.1;AES256\n$secret")
echo "$secret_string" | awk '{$1=$1;print}' | ansible-vault decrypt --vault-password-file=$VAULT_PASSWORD_FILE
}
### Git helpers
function backupgithub() {
cd "$REPO_PATH"
curl --silent --location "https://api.github.com/users/$1/repos" | jq -r '.[] | .ssh_url' | xargs -n1 git clone --mirror --no-hardlinks
}
function gitydiff() {
local path_to_file="$1"
gsh "HEAD:$path_to_file" | colordiff -y - "$path_to_file"
}
function gcrb() {
branch=$1
gcb $branch origin/$branch
}
function installhooks() {
pre-commit install --install-hooks --overwrite --allow-missing-config
}
function copyhooks() {
FILENAME=${1:-"$HOME/.git-template/.pre-commit-config.yaml"}
cp -f "$FILENAME" ./.pre-commit-config.yaml
installhooks
runhooks
}
function git_listobjectsbysize() {
tempFile=$(mktemp)
IFS=$'\n'
for commitSHA1 in $(git rev-list --all); do
git ls-tree -r --long "$commitSHA1" >>"$tempFile"
done
# sort files by SHA1, de-dupe list and finally re-sort by filesize
sort --key 3 "$tempFile" |
uniq |
sort --key 4 --numeric-sort --reverse
# remove temp file
rm -f "$tempFile"
}
function setorigin() {
gra origin "$1" 2>/dev/null
grset origin "$1"
success "updated origin to $1"
arrow "copying pre-commit hooks ..."
if [[ "$1" =~ "$COMPANY_NAME" ]]; then
copyhooks
gitpro
else
copyhooks "$HOME/.git-template/.pre-commit-minimal-config.yaml"
gitperso
fi
}
function gitpushcurrentremote() {
gitpushallremote "$(git_current_branch)"
}
function gitpushallremote() {
local param_branch="$1"
grv
grv G push | awk '{print $1}' | while read -r remote; do
if [ -z "$param_branch" ]; then
arrow "pushing all branches to $remote"
gp --all "$remote"
else
arrow "pushing $param_branch to $remote"
gp "$remote" "$param_branch"
fi
done
}
function clone() {
local folder=$(basename $1 | sed 's/\.git.*//g')
arrow "git project identified as $folder"
arrow "cloning repository ..."
if gcls "$1"; then
success "repository cloned"
if [[ -n "$folder" ]]; then
cd "$folder" || exit
arrow "copying pre-commit hooks ..."
if [[ "$1:u" =~ "$COMPANY_NAME:u" ]]; then
copyhooks
gitpro
else
copyhooks "$HOME/.git-template/.pre-commit-minimal-config.yaml"
gitperso
fi
else
error "unable to change current directory to : $folder"
fi
else
error "unable to clone repository from url : $1"
fi
}
function fork() {
code || exit
local folder=$(basename $1 | sed 's/\.git.*//g')
gh repo fork "$1" --clone && cd "$folder"
if [[ "$1:u" =~ "$COMPANY_NAME:u" ]]; then
gitpro
else
gitperso
fi
checkreadme
# TODO : check all the codebase for spelling mistakes in info/debug/error messages etc.
}
function git-project() {
function git-project {
if [ -d "$REPO_PATH" ]; then
REPO_PATH="$(pwd)"
fi
local preview='lsd --color always --icon always --group-dirs first {}'
local dir=$(find "$REPO_PATH" -maxdepth 3 -type d -name ".git" | sed 's#.git$##' | fzf --select-1 --query="$*" --preview "$preview")
local dir=$(find $REPO_PATH -maxdepth 3 -type d -name ".git" | sed 's#.git$##' | fzf --select-1 --query="$*" --preview "$preview")
if [[ -n "$dir" ]]; then
cd "$dir" || exit
cd "$dir"
fi
}
function gitignorefor() {
local language=${1:-''}
if [ ! -d "$HOME/Code/gitignore" ]; then
arrow "cloning https://github.com/github/gitignore into $REPO_PATH/gitignore"
git clone "https://github.com/github/gitignore $_"
fi
local gitignore_file=$(fd "$language" "$REPO_PATH/gitignore" H -n1)
if [ ! -z "$gitignore_file" ]; then
success "matched gitignore file : $gitignore_file"
if [ ! -f "$(pwd)/.gitignore" ]; then
arrow "you don't have a $(pwd)/.gitignore file, but that's not an issue :-) ..."
fi
arrow "copying the file content to your $(pwd)/.gitignore file"
adhoc blockinfile -a "block='{{ lookup('file', '$gitignore_file') }}' dest='$(pwd)/.gitignore' create=yes"
else
error "no gitignore file found for $language"
fi
function jenkins-cli {
local script_location=$(find $HOME/code/jenkins-cloudbees-core -name "jenkins-cli.sh")
eval "$script_location $*"
}
# Miscellaneous helpers
function colorpic() {
function passwords {
bw list items --search "$1" | jq -c '.[] | .name + " " + .login.username + ":" + .login.password + " " + .login.uris[0].uri'
}
function password {
bw get password "$1"
}
function vaultgetsecret {
local secret=$(grep -A 500 "ANSIBLE_VAULT" "$1" | awk '{$1=$1;print}' | \grep -Eo "^[0-9a-z^ ]+$")
local secret_string=$(echo "\$ANSIBLE_VAULT;1.1;AES256\n$secret")
echo "$secret_string" | awk '{$1=$1;print}' | ansible-vault decrypt --vault-password-file=$VAULT_PASSWORD_FILE
}
function setorigin {
gra origin "$1" 2>/dev/null
grset origin "$1"
copyhooks
}
function gitpushallremote {
grv
grv | grep push | awk '{print $1}' | while read -r remote
do
echo "$remote"
git push --all "$remote"
done
}
function clone {
local folder=$(echo $1 | cut -d'/' -f2 | cut -d'.' -f1)
gcls "$1"
cd "$folder"
copyhooks
}
function colorpic {
local picture_url="$1"
arrow "Colorizing $picture_url"
echo "Colorizing $picture_url"
local result_url=$(\curl -F "image=@$picture_url" -H "api-key:$COLORPIC_APIKEY" https://api.deepai.org/api/colorizer -s | jq '.output_url' | strings)
success "Generated $result_url"
arrow "Display in progress..."
eval "\curl --silent $result_url | imgcat"
echo "Generated $result_url"
echo "Display in progress..."
eval "\curl -s $result_url | imgcat"
}
function bookmarkadd() {
adhoc lineinfile -a "path=$HOME/Code/bookmarks/README.md insertafter='"$1"' line='* "$2"'"
}
function rssadd() {
adhoc lineinfile -a "path=~/.newsboat/urls line='"$1"'"
newsboat
}
# Via https://stackoverflow.com/a/58598185/2309958
# capture the output of a command so it can be retrieved with ret
function cap () { tee /tmp/capture.out}
# return the output of the most recent command that was captured by cap
function ret () { \cat /tmp/capture.out }
# Package / Dependencies management helpers
function adhocbis() {
local ansible_output=$(adhoc "$*")
echo $ansible_output | sed 's/127.0.0.1.*SUCCESS/WOKE/g'
}
function brewadd() {
function brewadd {
brew install "$1"
adhoc lineinfile -a "path=~/Brewfile line='brew \"$1\"'"
}
function pipadd() {
pip install "$1"
pip freeze >"$HOME/requirements.txt"
}
function goadd() {
adhoc lineinfile -a "path=~/.scripts/godeps.sh line='go get -u -v $1'"
go get -u -v "$1"
}
# Make a directory and cd to it
function take() {
md -p "$@" && cd "${@:$#}"
}
# Date / Time management helpers
function endofday() {
local planned_end=$(moro status 2>&1 | \grep --extended-regexp --only-matching "Working until ([0-9:]+) will make.*" | uniq | \grep --extended-regexp --only-matching "([0-9]+:[0-9]+)")
local max_hour="$planned_end"
local min_hour=$(current_time)
if [ -z "$planned_end" ]; then
local clockout=$(moro report 2>&1 | \grep --extended-regexp --only-matching "Clock out.*([0-9:]+)" | \grep --extended-regexp --only-matching "([0-9]+:[0-9]+)")
max_hour="$clockout"
fi
if is_earlier "$min_hour" "$max_hour"; then
arrow "you should keep working, it's only $min_hour while you should work until $max_hour"
moro status
else
warning "you should stop working now because it's later than $max_hour"
moro report
fi
}
function convtimetodate() {
date -j -f '%H:%M' "$1" +'%Y/%m/%d %H:%M'
}
function convtimetotimestamp() {
date -j -f '%H:%M' "$1" +'%s'
}
function is_earlier() {
local first=$(convtimetotimestamp "$1")
local second=$(convtimetotimestamp "$2")
if [ "$second" -gt "$first" ]; then
true
else
false
fi
}
function dl_stopwords() {
curl --location --insecure --silent https://raw.githubusercontent.com/MorganGeek/bookmarks/master/stopwords.txt -o "$HOME/stopwords.txt"
}
function file_getwords() {
dl_stopwords
\cat "$1" | tr '[:upper:]' '[:lower:]' | \grep --extended-regexp --only-matching '\w{3,}' | \grep --invert-match --word-regexp --fixed-strings --file="$HOME/stopwords.txt" | \sed 's/s$//g' | \sed 's/ing$//g' | sort_count
}
function file_getpairs() {
dl_stopwords
\cat "$1" | filter_pairs
}
function file_dups() {
\cat "$1" | sort_count
}
function foreach_run() {
find . -name "$1" -exec "$2" {} \;
}
# input should be something like : 1-10 to generate one number between 1 and 10
function chance() {
[[ $(shuf -i "$1" -n 1) == 1 ]]
}
function runiflucky() {
if chance "1-10"; then
if alias "$1" 2>/dev/null || (compgen -A function G "$1" 1>/dev/null && compgen -A function "$1" 1>/dev/null); then
eval "$1"
fi
fi
}
function aws-login() {
profile_list=$(aws-vault list --profiles | fzf --ansi)
login_url=$(export AWS_SESSION_TOKEN_TTL=3h && aws-vault login $profile_list -s)
echo "$login_url $1"
browse "$login_url $1" 1>/dev/null 2>&1 &
}
function aws-exec() {
profile_list=$(aws-vault list --profiles | fzf --ansi)
aws-vault exec $profile_list
ansible 127.0.0.1 -m lineinfile -a "path=~/Brewfile line='brew \"$1\"'"
}

View File

@ -16,7 +16,6 @@ fi
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
#
ZSH_THEME="powerlevel10k/powerlevel10k"
ZSH_COLORIZE_STYLE="monokai"
@ -31,6 +30,7 @@ POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs command_execution_tim
POWERLEVEL9K_SHOW_CHANGESET=true
POWERLEVEL9K_CHANGESET_HASH_LENGTH=8
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=''
POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR=''
@ -38,11 +38,13 @@ POWERLEVEL9K_TIME_FOREGROUND='245'
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND='245'
POWERLEVEL9K_STATUS_OK_FOREGROUND='green'
POWERLEVEL9k_STATUS_ERROR_FOREGROUND='red'
POWERLEVEL9k_STATUS_ERROR_FOREGROUND='red'
POWERLEVEL9K_TIME_BACKGROUND='clear'
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND='clear'
POWERLEVEL9K_STATUS_OK_BACKGROUND='clear'
POWERLEVEL9K_STATUS_ERROR_BACKGROUND='clear'
POWERLEVEL9K_STATUS_ERROR_BACKGROUND='clear'
POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND='clear'
# Set list of themes to pick from when loading at random
@ -97,7 +99,7 @@ POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND='clear'
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(reminder common-aliases extract git sdk zsh-syntax-highlighting zsh-autosuggestions ansible brew colorize docker pipenv pip python terraform aws helm kubectl fzf alias-finder)
plugins=(reminder common-aliases extract git sdk zsh-syntax-highlighting zsh-autosuggestions ansible brew colorize docker pipenv pip python terraform aws helm kubectl)
source $ZSH/oh-my-zsh.sh
# User configuration
@ -126,26 +128,9 @@ export BW_SESSION=""
export JENKINS_URL=""
export JENKINS_SECRET=""
export JIRA_URL=""
export CONFLUENCE_URL=""
export PROXY_HOST=""
export COLORPIC_APIKEY=""
export VAULT_PASSWORD_FILE=""
export DEFAULT_BROWSER=${DEFAULT_BROWSER:-'Google Chrome'}
export TRELLO_BOARD_URL=""
export COMPANY_NAME=""
export GIT_PERSONAL_EMAIL=""
export GIT_PERSONAL_USER=""
export GIT_PRO_EMAIL=""
export GIT_PRO_USER=""
export GMAIL_APP_USER=""
export GMAIL_APP_PASSWORD=""
export KINDLE_ACCOUNT_EMAIL="" # e.g : john.doe@kindle.com
export PRINCIPAL_ACCOUNT_EMAIL="" # e.g : john.doe@gmail.com
export PRINCIPAL_ACCOUNT_FULLNAME="" # e.g : John Doe
export BB_TOKEN="" # Bitbucket server PAT (personal access token)
export GITHUB_TOKEN="" # GitHub PAT (personal access token)
source "$HOME/Code/dotfiles/dot_aliases/misc.sh"
if test -f "$HOME/.scripts/secrets.sh"; then
chmod +x "$HOME/.scripts/secrets.sh"
@ -163,8 +148,8 @@ eval "$(fasd --init auto)"
#cm apply
# randomly check if we have new jira issues
runiflucky "istherenewissues"
# check if we have new jira issues
istherenewissues
case "$(uname -s)" in
Darwin)
@ -177,10 +162,11 @@ esac
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"
#sdk use java 8.0.202-zulu
case "$(uname -s)" in
Darwin)
ln -snf /usr/local/lib/python3.9/site-packages/pip /usr/local/bin/pip21
ln -snf /usr/local/lib/python3.9/site-packages/pip /usr/local/bin/pip3
ln -snf /usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin/pip /usr/local/bin/pip3
export PATH="$PATH:/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/bin/:/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin"
;;
esac
@ -192,5 +178,3 @@ export PATH="/usr/local/opt/grep/libexec/gnubin:$GOPATH/bin:$RUSTPATH:$PATH"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
source /Users/morganwattiez/.config/broot/launcher/bash/br

View File

@ -1,4 +1,4 @@
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/morganwattiez/.sdkman"
[[ -s "/Users/morganwattiez/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/morganwattiez/.sdkman/bin/sdkman-init.sh"
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"

View File

@ -1,50 +0,0 @@
#? Config file for bashtop v. 0.9.19
#* Color theme, looks for a .theme file in "$HOME/.config/bashtop/themes" and "$HOME/.config/bashtop/user_themes", "Default" for builtin default theme
color_theme="Default"
#* Update time in milliseconds, increases automatically if set below internal loops processing time, recommended 2000 ms or above for better sample times for graphs
update_ms="2500"
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu responsive"
#* "cpu lazy" updates sorting over time, "cpu responsive" updates sorting directly
proc_sorting="cpu lazy"
#* Reverse sorting order, "true" or "false"
proc_reversed="false"
#* Show processes as a tree
proc_tree="false"
#* Check cpu temperature, only works if "sensors", "vcgencmd" or "osx-cpu-temp" commands is available
check_temp="false"
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable
draw_clock="%X"
#* Update main ui when menus are showing, set this to false if the menus is flickering too much for comfort
background_update="true"
#* Custom cpu model name, empty string to disable
custom_cpu_name=""
#* Enable error logging to "$HOME/.config/bashtop/error.log", "true" or "false"
error_logging="true"
#* Show color gradient in process list, "true" or "false"
proc_gradient="true"
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power
proc_per_core="false"
#* Optional filter for shown disks, should be names of mountpoints, "root" replaces "/", separate multiple values with space
disks_filter=""
#* Enable check for new version from github.com/aristocratos/bashtop at start
update_check="true"
#* Enable graphs with double the horizontal resolution, increases cpu usage
hires_graphs="false"
#* Enable the use of psutil python3 module for data collection, default on OSX
use_psutil="true"

View File

@ -1,238 +0,0 @@
###############################################################
# This configuration file lets you
# - define new commands
# - change the shortcut or triggering keys of built-in verbs
# - change the colors
# - set default values for flags
# - set special behaviors on specific paths
#
# Configuration documentation is available at
# https://dystroy.org/broot
###############################################################
###############################################################
# Default flags
# You can set up flags you want broot to start with by
# default, for example `default_flags="ihp"` if you usually want
# to see hidden and gitignored files and the permissions (then
# if you don't want the hidden files you can launch `br -H`)
# A popular flag is the `g` one which displays git related info.
#
default_flags = ""
###############################################################
# Special paths
# If some paths must be handled specially, uncomment (and change
# this section as per the examples
#
# [special-paths]
# "/media/slow-backup-disk" = "no-enter"
# "/home/dys/useless" = "hide"
# "/home/dys/my-link-I-want-to-explore" = "enter"
###############################################################
# Date/Time format
# If you want to change the format for date/time, uncomment the
# following line and change it according to
# https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html
#
# date_time_format = "%Y/%m/%d %R"
###############################################################
# Column order
# cols_order, if specified, must be a permutation of "gbpdscn"
# where every char denotes a column:
# g : Git file info
# b : branch (shows the depth and parent in the tree)
# p : permissions (mode, user, group)
# d : last modification date
# s : size (with size bar when sorting)
# c : count, number of files in directories
# n : file name
#
# cols_order = "gbdscn"
###############################################################
# Verbs and shortcuts
# You can define your own commands which would be applied to
# the selection.
#
# Exemple 1: launching `tail -n` on the selected file (leaving broot)
# [[verbs]]
# name = "tail_lines"
# invocation = "tl {lines_count}"
# execution = "tail -f -n {lines_count} {file}"
#
# Exemple 2: creating a new file without leaving broot
# [[verbs]]
# name = "touch"
# invocation = "touch {new_file}"
# execution = "touch {directory}/{new_file}"
# leave_broot = false
# If $EDITOR isn't set on your computer, you should either set it using
# something similar to
# export EDITOR=/usr/bin/nvim
# or just replace it with your editor of choice in the 'execution'
# pattern.
# If your editor is able to open a file on a specific line, use {line}
# so that you may jump directly at the right line from a preview.
# Example:
# execution = "/usr/bin/nvim +{line} {file}"
[[verbs]]
invocation = "edit"
key = "F2"
shortcut = "e"
execution = "$EDITOR {file}"
leave_broot = false
[[verbs]]
invocation = "create {subpath}"
execution = "$EDITOR {directory}/{subpath}"
leave_broot = false
[[verbs]]
invocation = "git_diff"
shortcut = "gd"
leave_broot = false
execution = "git difftool -y {file}"
# If $PAGER isn't set on your computer, you should either set it
# or just replace it with your viewer of choice in the 'execution'
# pattern.
# Example:
# execution = "less {file}"
[[verbs]]
name = "view"
invocation = "view"
execution = "$PAGER {file}"
leave_broot = false
# A popular set of shorctuts for going up and down:
#
# [[verbs]]
# key = "ctrl-j"
# execution = ":line_down"
#
# [[verbs]]
# key = "ctrl-k"
# execution = ":line_up"
#
# [[verbs]]
# key = "ctrl-d"
# execution = ":page_down"
#
# [[verbs]]
# key = "ctrl-u"
# execution = ":page_up"
# [[verbs]]
# key = "home"
# execution = ":select_first"
# [[verbs]]
# key = "end"
# execution = ":select_last"
# If you develop using git, you might like to often switch
# to the "git status" filter:
# [[verbs]]
# key = "ctrl-g"
# execution = ":toggle_git_status"
# You can reproduce the bindings of Norton Commander
# on copying or moving to the other panel:
#
# [[verbs]]
# key = "F5"
# execution = ":copy_to_panel"
#
# [[verbs]]
# key = "F6"
# execution = ":move_to_panel"
###############################################################
# Skin
# If you want to change the colors of broot,
# uncomment the following bloc and start messing
# with the various values.
#
# [skin]
# default = "gray(23) none / gray(20) none"
# tree = "ansi(94) None / gray(3) None"
# file = "gray(20) None / gray(15) None"
# directory = "ansi(208) None Bold / ansi(172) None bold"
# exe = "Cyan None"
# link = "Magenta None"
# pruning = "gray(12) None Italic"
# perm__ = "gray(5) None"
# perm_r = "ansi(94) None"
# perm_w = "ansi(132) None"
# perm_x = "ansi(65) None"
# owner = "ansi(138) None"
# group = "ansi(131) None"
# count = "ansi(136) gray(3)"
# dates = "ansi(66) None"
# sparse = "ansi(214) None"
# content_extract = "ansi(29) None"
# content_match = "ansi(34) None"
# git_branch = "ansi(229) None"
# git_insertions = "ansi(28) None"
# git_deletions = "ansi(160) None"
# git_status_current = "gray(5) None"
# git_status_modified = "ansi(28) None"
# git_status_new = "ansi(94) None Bold"
# git_status_ignored = "gray(17) None"
# git_status_conflicted = "ansi(88) None"
# git_status_other = "ansi(88) None"
# selected_line = "None gray(5) / None gray(4)"
# char_match = "Yellow None"
# file_error = "Red None"
# flag_label = "gray(15) None"
# flag_value = "ansi(208) None Bold"
# input = "White None / gray(15) gray(2)"
# status_error = "gray(22) ansi(124)"
# status_job = "ansi(220) gray(5)"
# status_normal = "gray(20) gray(3) / gray(2) gray(2)"
# status_italic = "ansi(208) gray(3) / gray(2) gray(2)"
# status_bold = "ansi(208) gray(3) Bold / gray(2) gray(2)"
# status_code = "ansi(229) gray(3) / gray(2) gray(2)"
# status_ellipsis = "gray(19) gray(1) / gray(2) gray(2)"
# purpose_normal = "gray(20) gray(2)"
# purpose_italic = "ansi(178) gray(2)"
# purpose_bold = "ansi(178) gray(2) Bold"
# purpose_ellipsis = "gray(20) gray(2)"
# scrollbar_track = "gray(7) None / gray(4) None"
# scrollbar_thumb = "gray(22) None / gray(14) None"
# help_paragraph = "gray(20) None"
# help_bold = "ansi(208) None Bold"
# help_italic = "ansi(166) None"
# help_code = "gray(21) gray(3)"
# help_headers = "ansi(208) None"
# help_table_border = "ansi(239) None"
# preview = "gray(20) gray(1) / gray(18) gray(2)"
# preview_line_number = "gray(12) gray(3)"
# preview_match = "None ansi(29)"
# hex_null = "gray(11) None"
# hex_ascii_graphic = "gray(18) None"
# hex_ascii_whitespace = "ansi(143) None"
# hex_ascii_other = "ansi(215) None"
# hex_non_ascii = "ansi(167) None"
# You may find explanations and other skins on
# https://dystroy.org/broot/skins
# for example a skin suitable for white backgrounds
###############################################################
# File Extension Colors
#
# uncomment and modify the next section if you want to color
# file name depending on their extension
#
# [ext-colors]
# png = "rgb(255, 128, 75)"
# rs = "yellow"

View File

@ -1,8 +0,0 @@
---
# What protocol to use when performing git operations. Supported values: ssh, https
git_protocol: https
# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment.
editor:
# Aliases allow you to create nicknames for gh commands
aliases:
co: pr checkout

View File

@ -1,26 +0,0 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
fields=0 48 17 18 38 39 2 46 47 49 1
sort_key=46
sort_direction=1
hide_threads=0
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_megabytes=1
highlight_threads=1
tree_view=0
header_margin=1
detailed_cpu_time=0
cpu_count_from_zero=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
delay=15
left_meters=LeftCPUs2 Memory Swap
left_meter_modes=1 1 1
right_meters=RightCPUs2 Tasks LoadAverage Uptime
right_meter_modes=1 2 2 2

View File

@ -1,761 +0,0 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
info title
info underline
info "OS" distro
info "Host" model
info "Kernel" kernel
info "Uptime" uptime
info "Packages" packages
info "Shell" shell
info "Resolution" resolution
info "DE" de
info "WM" wm
info "WM Theme" wm_theme
info "Theme" theme
info "Icons" icons
info "Terminal" term
info "Terminal Font" term_font
info "CPU" cpu
info "GPU" gpu
info "Memory" memory
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# [[ $player ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
info cols
}
# Kernel
# Shorten the output of the kernel function.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --kernel_shorthand
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
#
# Example:
# on: '4.8.9-1-ARCH'
# off: 'Linux 4.8.9-1-ARCH'
kernel_shorthand="on"
# Distro
# Shorten the output of the distro function
#
# Default: 'off'
# Values: 'on', 'off', 'tiny'
# Flag: --distro_shorthand
# Supports: Everything except Windows and Haiku
distro_shorthand="off"
# Show/Hide OS Architecture.
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --os_arch
#
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="on"
# Uptime
# Shorten the output of the uptime function
#
# Default: 'on'
# Values: 'on', 'off', 'tiny'
# Flag: --uptime_shorthand
#
# Example:
# on: '2 days, 10 hours, 3 mins'
# off: '2 days, 10 hours, 3 minutes'
# tiny: '2d 10h 3m'
uptime_shorthand="on"
# Memory
# Show memory pecentage in output.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --memory_percent
#
# Example:
# on: '1801MiB / 7881MiB (22%)'
# off: '1801MiB / 7881MiB'
memory_percent="off"
# Packages
# Show/Hide Package Manager names.
#
# Default: 'tiny'
# Values: 'on', 'tiny' 'off'
# Flag: --package_managers
#
# Example:
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
# tiny: '908 (pacman, flatpak, snap)'
# off: '908'
package_managers="on"
# Shell
# Show the path to $SHELL
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --shell_path
#
# Example:
# on: '/bin/bash'
# off: 'bash'
shell_path="off"
# Show $SHELL version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --shell_version
#
# Example:
# on: 'bash 4.4.5'
# off: 'bash'
shell_version="on"
# CPU
# CPU speed type
#
# Default: 'bios_limit'
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
# Flag: --speed_type
# Supports: Linux with 'cpufreq'
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
speed_type="bios_limit"
# CPU speed shorthand
#
# Default: 'off'
# Values: 'on', 'off'.
# Flag: --speed_shorthand
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
#
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="off"
# Enable/Disable CPU brand in output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_brand
#
# Example:
# on: 'Intel i7-6500U'
# off: 'i7-6500U (4)'
cpu_brand="on"
# CPU Speed
# Hide/Show CPU speed.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_speed
#
# Example:
# on: 'Intel i7-6500U (4) @ 3.1GHz'
# off: 'Intel i7-6500U (4)'
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
#
# Default: 'logical'
# Values: 'logical', 'physical', 'off'
# Flag: --cpu_cores
# Support: 'physical' doesn't work on BSD.
#
# Example:
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
# off: 'Intel i7-6500U @ 3.1GHz'
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# Note the temperature is added to the regular CPU function.
#
# Default: 'off'
# Values: 'C', 'F', 'off'
# Flag: --cpu_temp
# Supports: Linux, BSD
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
# coretemp kernel module. This only supports newer Intel processors.
#
# Example:
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="off"
# GPU
# Enable/Disable GPU Brand
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gpu_brand
#
# Example:
# on: 'AMD HD 7950'
# off: 'HD 7950'
gpu_brand="on"
# Which GPU to display
#
# Default: 'all'
# Values: 'all', 'dedicated', 'integrated'
# Flag: --gpu_type
# Supports: Linux
#
# Example:
# all:
# GPU1: AMD HD 7950
# GPU2: Intel Integrated Graphics
#
# dedicated:
# GPU1: AMD HD 7950
#
# integrated:
# GPU1: Intel Integrated Graphics
gpu_type="all"
# Resolution
# Display refresh rate next to each monitor
# Default: 'off'
# Values: 'on', 'off'
# Flag: --refresh_rate
# Supports: Doesn't work on Windows.
#
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="off"
# Gtk Theme / Icons / Font
# Shorten output of GTK Theme / Icons / Font
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --gtk_shorthand
#
# Example:
# on: 'Numix, Adwaita'
# off: 'Numix [GTK2], Adwaita [GTK3]'
gtk_shorthand="off"
# Enable/Disable gtk2 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk2
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Adwaita [GTK3]'
gtk2="on"
# Enable/Disable gtk3 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk3
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Numix [GTK2]'
gtk3="on"
# IP Address
# Website to ping for the public IP
#
# Default: 'http://ident.me'
# Values: 'url'
# Flag: --ip_host
public_ip_host="http://ident.me"
# Public IP timeout.
#
# Default: '2'
# Values: 'int'
# Flag: --ip_timeout
public_ip_timeout=2
# Disk
# Which disks to display.
# The values can be any /dev/sdXX, mount point or directory.
# NOTE: By default we only show the disk info for '/'.
#
# Default: '/'
# Values: '/', '/dev/sdXX', '/path/to/drive'.
# Flag: --disk_show
#
# Example:
# disk_show=('/' '/dev/sdb1'):
# 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
#
# disk_show=('/'):
# 'Disk (/): 74G / 118G (66%)'
#
disk_show=('/')
# Disk subtitle.
# What to append to the Disk subtitle.
#
# Default: 'mount'
# Values: 'mount', 'name', 'dir'
# Flag: --disk_subtitle
#
# Example:
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
#
# mount: 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
#
# dir: 'Disk (/): 74G / 118G (66%)'
# 'Disk (Local Disk): 74G / 118G (66%)'
# 'Disk (Videos): 74G / 118G (66%)'
disk_subtitle="mount"
# Song
# Manually specify a music player.
#
# Default: 'auto'
# Values: 'auto', 'player-name'
# Flag: --music_player
#
# Available values for 'player-name':
#
# amarok
# audacious
# banshee
# bluemindo
# clementine
# cmus
# deadbeef
# deepin-music
# dragon
# elisa
# exaile
# gnome-music
# gmusicbrowser
# guayadeque
# iTunes
# juk
# lollypop
# mocp
# mopidy
# mpd
# netease-cloud-music
# pogo
# pragha
# qmmp
# quodlibet
# rhythmbox
# sayonara
# smplayer
# spotify
# tomahawk
# vlc
# xmms2d
# yarock
music_player="auto"
# Format to display song information.
#
# Default: '%artist% - %album% - %title%'
# Values: '%artist%', '%album%', '%title%'
# Flag: --song_format
#
# Example:
# default: 'Song: Jet - Get Born - Sgt Major'
song_format="%artist% - %album% - %title%"
# Print the Artist, Album and Title on separate lines
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --song_shorthand
#
# Example:
# on: 'Artist: The Fratellis'
# 'Album: Costello Music'
# 'Song: Chelsea Dagger'
#
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
song_shorthand="off"
# 'mpc' arguments (specify a host, password etc).
#
# Default: ''
# Example: mpc_args=(-h HOST -P PASSWORD)
mpc_args=()
# Text Colors
# Text Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --colors
#
# Each number represents a different part of the text in
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
#
# Example:
# colors=(distro) - Text is colored based on Distro colors.
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
colors=(distro)
# Text Options
# Toggle bold text
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bold
bold="on"
# Enable/Disable Underline
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --underline
underline_enabled="on"
# Underline character
#
# Default: '-'
# Values: 'string'
# Flag: --underline_char
underline_char="-"
# Info Separator
# Replace the default separator with the specified string.
#
# Default: ':'
# Flag: --separator
#
# Example:
# separator="->": 'Shell-> bash'
# separator=" =": 'WM = dwm'
separator=":"
# Color Blocks
# Color block range
# The range of colors to print.
#
# Default: '0', '7'
# Values: 'num'
# Flag: --block_range
#
# Example:
#
# Display colors 0-7 in the blocks. (8 colors)
# neofetch --block_range 0 7
#
# Display colors 0-15 in the blocks. (16 colors)
# neofetch --block_range 0 15
block_range=(0 7)
# Toggle color blocks
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --color_blocks
color_blocks="on"
# Color block width in spaces
#
# Default: '3'
# Values: 'num'
# Flag: --block_width
block_width=3
# Color block height in lines
#
# Default: '1'
# Values: 'num'
# Flag: --block_height
block_height=1
# Progress Bars
# Bar characters
#
# Default: '-', '='
# Values: 'string', 'string'
# Flag: --bar_char
#
# Example:
# neofetch --bar_char 'elapsed' 'total'
# neofetch --bar_char '-' '='
bar_char_elapsed="-"
bar_char_total="="
# Toggle Bar border
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bar_border
bar_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
#
# Default: '15'
# Values: 'num'
# Flag: --bar_length
bar_length=15
# Progress bar colors
# When set to distro, uses your distro's logo colors.
#
# Default: 'distro', 'distro'
# Values: 'distro', 'num'
# Flag: --bar_colors
#
# Example:
# neofetch --bar_colors 3 4
# neofetch --bar_colors distro 5
bar_color_elapsed="distro"
bar_color_total="distro"
# Info display
# Display a bar with the info.
#
# Default: 'off'
# Values: 'bar', 'infobar', 'barinfo', 'off'
# Flags: --cpu_display
# --memory_display
# --battery_display
# --disk_display
#
# Example:
# bar: '[---=======]'
# infobar: 'info [---=======]'
# barinfo: '[---=======] info'
# off: 'info'
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
# Backend Settings
# Image backend.
#
# Default: 'ascii'
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
# 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
# Flag: --backend
image_backend="ascii"
# Image Source
#
# Which image or ascii file to display.
#
# Default: 'auto'
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
# Flag: --source
#
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
# In ascii mode, distro ascii art will be used and in an image mode, your
# wallpaper will be used.
image_source="auto"
# Ascii Options
# Ascii distro
# Which distro's ascii art to display.
#
# Default: 'auto'
# Values: 'auto', 'distro_name'
# Flag: --ascii_distro
#
# NOTE: Arch and Ubuntu have 'old' logo variants.
# Change this to 'arch_old' or 'ubuntu_old' to use the old logos.
# NOTE: Ubuntu has flavor variants.
# Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu-GNOME' or 'Ubuntu-Budgie' to use the flavors.
# NOTE: Arch, Crux and Gentoo have a smaller logo variant.
# Change this to 'arch_small', 'crux_small' or 'gentoo_small' to use the small logos.
ascii_distro="auto"
# Ascii Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --ascii_colors
#
# Example:
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
ascii_colors=(distro)
# Bold ascii logo
# Whether or not to bold the ascii logo.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --ascii_bold
ascii_bold="on"
# Image Options
# Image loop
# Setting this to on will make neofetch redraw the image constantly until
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --loop
image_loop="off"
# Thumbnail directory
#
# Default: '~/.cache/thumbnails/neofetch'
# Values: 'dir'
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
# Crop mode
#
# Default: 'normal'
# Values: 'normal', 'fit', 'fill'
# Flag: --crop_mode
#
# See this wiki page to learn about the fit and fill options.
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
crop_mode="normal"
# Crop offset
# Note: Only affects 'normal' crop mode.
#
# Default: 'center'
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
# 'east', 'southwest', 'south', 'southeast'
# Flag: --crop_offset
crop_offset="center"
# Image size
# The image is half the terminal width by default.
#
# Default: 'auto'
# Values: 'auto', '00px', '00%', 'none'
# Flags: --image_size
# --size
image_size="auto"
# Gap between image and text
#
# Default: '3'
# Values: 'num', '-num'
# Flag: --gap
gap=3
# Image offsets
# Only works with the w3m backend.
#
# Default: '0'
# Values: 'px'
# Flags: --xoffset
# --yoffset
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
#
# Default: ''
# Values: 'color', 'blue'
# Flag: --bg_color
background_color=
# Misc Options
# Stdout mode
# Turn off all colors and disables image backend (ASCII/Image).
# Useful for piping into another command.
# Default: 'off'
# Values: 'on', 'off'
stdout="off"

View File

@ -1,102 +0,0 @@
---
wtf:
colors:
border:
focusable: darkslateblue
focused: orange
normal: gray
grid:
columns: [32, 32, 32, 32, 90]
rows: [10, 10, 10, 4, 4, 90]
refreshInterval: 1
mods:
clocks_a:
colors:
rows:
even: lightblue
odd: white
enabled: true
locations:
Vancouver: America/Vancouver
Toronto: America/Toronto
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 15
sort: alphabetical
title: Clocks A
type: clocks
clocks_b:
colors:
rows:
even: lightblue
odd: white
enabled: true
locations:
Avignon: Europe/Paris
Barcelona: Europe/Madrid
Dubai: Asia/Dubai
position:
top: 0
left: 2
height: 1
width: 1
refreshInterval: 15
sort: alphabetical
title: Clocks B
type: clocks
feedreader:
enabled: true
feeds:
- http://wtfutil.com/blog/index.xml
feedLimit: 10
position:
top: 1
left: 1
width: 2
height: 1
updateInterval: 14400
ipinfo:
colors:
name: lightblue
value: white
enabled: true
position:
top: 2
left: 1
height: 1
width: 1
refreshInterval: 150
power:
enabled: true
position:
top: 2
left: 2
height: 1
width: 1
refreshInterval: 15
title: ⚡️
textfile:
enabled: true
filePath: ~/.config/wtf/config.yml
format: true
position:
top: 0
left: 0
height: 4
width: 1
refreshInterval: 30
wrapText: false
uptime:
args: ['']
cmd: uptime
enabled: true
position:
top: 3
left: 1
height: 1
width: 2
refreshInterval: 30
type: cmdrunner

View File

@ -1,30 +0,0 @@
---
extends: default
rules:
braces:
level: warning
max-spaces-inside: 1
brackets:
level: warning
max-spaces-inside: 1
colons:
level: warning
commas:
level: warning
comments: disable
comments-indentation: disable
document-start: disable
empty-lines:
level: warning
hyphens:
level: warning
indentation:
level: warning
indent-sequences: consistent
line-length:
level: warning
max: 120
allow-non-breakable-inline-mappings: true
truthy: disable

View File

@ -1 +0,0 @@
auto-reload yes

View File

@ -1,24 +0,0 @@
https://sebsauvage.net/links/?do=rss
https://opensource.com/feed
https://lobste.rs/rss
https://korben.info/feed
https://hnrss.org/newest
https://morss.it/:items=%7C%7C*[class=link]/https://hckrnews.com/
https://ma.ttias.be/cronweekly/index.xml
https://www.geekzone.fr/feed/les-demons-du-midi/
https://lehollandaisvolant.net/rss.php
https://feeds.feedburner.com/se-radio
https://softwareengineeringdaily.com/category/podcast/feed/
https://feeds.simplecast.com/XA_851k3
https://changelog.com/podcast/feed
https://www.codingblocks.net/podcast-feed.xml
https://therabbithole.libsyn.com/rss
https://feeds.simplecast.com/7y1CbAbN
https://legacycoderocks.libsyn.com/rss
https://github.com/MorganGeek.private.atom?token=AA4MQGFBMZSPMN5NQZZGYMN5EFTLU
https://buttondown.email/hillelwayne/rss
https://www.kill-the-newsletter.com/feeds/5guqrixbconkaq4dtfa0.xml
https://www.kill-the-newsletter.com/feeds/a64hwil6d0amjfsa3fo2.xml
https://www.kill-the-newsletter.com/feeds/eyobd9lr5rtaj1ga9kg0.xml
https://www.switchaboo.com/rss/
https://blog.eban.bzh/rss.xml

View File

@ -5,6 +5,3 @@ Host *
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 3600
Match all
Include banyan.config

View File

@ -1,26 +1,24 @@
ansicolor==0.2.6
appdirs==1.4.3
appnope==0.1.0
argcomplete==1.10.0
arrow==0.15.5
asn1crypto==1.2.0
astroid==2.3.3
attrs==19.3.0
Automat==0.8.0
autopep8==1.4.4
awscli==1.16.278
backcall==0.1.0
beautifulsoup4==4.9.1
beautysh==6.0.1
beautifulsoup4==4.8.1
black==19.10b0
bleach==3.3.0
bleach==3.1.4
boto3==1.10.14
botocore==1.13.14
bs4==0.0.1
cachetools==3.1.1
castero==0.8.0
certifi==2020.6.20
certifi==2019.9.11
cffi==1.13.2
chardet==3.0.4
CJKwrap==2.2
click==7.1.2
Click==7.0
colorama==0.4.1
colorzero==1.1
configobj==5.0.6
@ -34,21 +32,20 @@ docutils==0.15.2
entrypoints==0.3
flake8==3.7.9
future==0.18.2
gitlint==0.13.1
google-api-python-client==1.7.11
google-auth-httplib2==0.0.3
google-auth==1.7.0
google-auth-httplib2==0.0.3
gpg==1.13.1
gpiozero==1.5.1
guizero==1.1.0
haxor-news==0.4.3
httplib2==0.18.0
hyperlink==19.0.0
idna==2.10
idna==2.8
incremental==17.5.0
ipykernel==5.1.3
ipython-genutils==0.2.0
ipython==7.9.0
ipython-genutils==0.2.0
isort==4.3.21
jedi==0.15.1
jmespath==0.9.4
@ -57,7 +54,7 @@ jupyter-core==4.6.1
kitchen==1.2.6
kiwisolver==1.1.0
lazy-object-proxy==1.4.3
lxml==4.6.5
lxml==4.4.1
matplotlib==3.1.1
mccabe==0.6.1
mock==3.0.5
@ -76,18 +73,14 @@ pigpio==1.44
Pillow==6.2.1
pipenv==2018.11.26
pkginfo==1.5.0.1
pocket==0.3.6
prompt-toolkit==2.0.10
proselint==0.10.2
Protego==0.1.15
psutil==5.7.0
ptyprocess==0.6.0
pyasn1-modules==0.2.7
pyasn1==0.4.7
pyasn1-modules==0.2.7
pycodestyle==2.5.0
pycparser==2.19
PyDispatcher==2.0.5
pyfiglet==0.8.post1
pyflakes==2.1.1
pygame==1.9.6
Pygments==2.4.2
@ -96,38 +89,35 @@ pyhcl==0.4.0
pylint==2.4.3
pyOpenSSL==19.0.0
pyparsing==2.4.4
PyQt5-sip==12.7.0
PyQt5==5.13.2
PyQt5-sip==12.7.0
PyQtChart==5.13.1
pyserial==3.4
PySocks==1.7.1
python-dateutil==2.8.0
python-dateutil==2.8.1
python-jenkins==1.5.0
python-mpv==0.4.8
python-vlc==3.0.10114
pytz==2019.3
PyYAML==5.1.2
pyzmq==18.1.0
QScintilla==2.11.3
qtconsole==4.5.5
queuelib==1.5.0
rainbowstream==1.5.2
readme-renderer==24.0
rebound-cli==2.0.0
regex==2019.11.1
relint==1.2.1
requests==2.22.0
requests-futures==1.0.0
requests-toolbelt==0.9.1
requests==2.24.0
rsa==3.4.2
rsa==4.0
rtv==1.27.0
s3transfer==0.2.1
saws==0.4.3
Scrapy==1.8.0
semver==2.9.0
service-identity==18.1.0
sh==1.12.14
six==1.15.0
six==1.13.0
slacker==0.13.0
soupsieve==2.0.1
soupsieve==1.9.5
stashy==0.6
stem==1.7.1
toml==0.10.0
@ -135,135 +125,16 @@ tornado==6.0.3
torrequest==0.1.0
tqdm==4.38.0
traitlets==4.3.3
tuir==1.29.0
Twisted==19.7.0
twitter==1.18.0
typed-ast==1.4.0
uritemplate==3.0.0
urllib3==1.25.9
urllib3==1.25.6
urwid==2.0.1
vim-vint==0.3.21
virtualenv-clone==0.5.3
virtualenv==16.7.7
virtualenv-clone==0.5.3
w3lib==1.21.0
wcwidth==0.1.7
webencodings==0.5.1
websocket-client==0.56.0
wrapt==1.11.2
yamllint==1.23.0
ansicolor==0.2.6
appdirs==1.4.3
appnope==0.1.0
argcomplete==1.10.0
arrow==0.15.5
asn1crypto==1.2.0
astroid==2.3.3
attrs==19.3.0
Automat==0.8.0
autopep8==1.4.4
backcall==0.1.0
beautifulsoup4==4.9.1
beautysh==6.0.1
black==19.10b0
bleach==3.3.0
bs4==0.0.1
cachetools==3.1.1
castero==0.8.0
certifi==2020.6.20
cffi==1.13.2
chardet==3.0.4
CJKwrap==2.2
click==7.1.2
colorama==0.4.1
colorzero==1.1
configobj==5.0.6
constantly==15.1.0
cryptography==2.8
cssselect==1.1.0
cycler==0.10.0
ddgr==1.6
decorator==4.4.1
docutils==0.15.2
entrypoints==0.3
flake8==3.7.9
future==0.18.2
gitlint==0.13.1
google-api-python-client==1.7.11
google-auth==1.7.0
google-auth-httplib2==0.0.3
gpg==1.13.1
gpiozero==1.5.1
guizero==1.1.0
haxor-news==0.4.3
httplib2==0.18.0
hyperlink==19.0.0
idna==2.10
incremental==17.5.0
ipykernel==5.1.3
ipython==7.9.0
ipython-genutils==0.2.0
isort==4.3.21
jedi==0.15.1
jmespath==0.9.4
jupyter-client==5.3.4
jupyter-core==4.6.1
kitchen==1.2.6
kiwisolver==1.1.0
lazy-object-proxy==1.4.3
lxml==4.6.5
matplotlib==3.1.1
mccabe==0.6.1
mock==3.0.5
multi-key-dict==2.0.3
nudatus==0.0.4
numpy==1.17.3
oauth2client==4.1.3
parsedatetime==2.4
parsel==1.5.2
parso==0.5.1
pathspec==0.6.0
pbr==5.4.3
pexpect==4.7.0
pickleshare==0.7.5
pigpio==1.44
Pillow==6.2.1
pipenv==2018.11.26
pkginfo==1.5.0.1
pocket==0.3.6
prompt-toolkit==2.0.10
proselint==0.10.2
Protego==0.1.15
psutil==5.7.0
ptyprocess==0.6.0
pyasn1==0.4.7
pyasn1-modules==0.2.7
pycodestyle==2.5.0
pycparser==2.19
PyDispatcher==2.0.5
pyfiglet==0.8.post1
pyflakes==2.1.1
Pygments==2.4.2
pyparsing==2.4.4
PySDL2==0.9.7
python-dateutil==2.8.0
python-mpv==0.4.8
python-vlc==3.0.10114
pyzmq==18.1.0
regex==2019.11.1
requests==2.24.0
rsa==3.4.2
sh==1.12.14
six==1.15.0
soupsieve==2.0.1
toml==0.10.0
tornado==6.0.3
traitlets==4.3.3
typed-ast==1.4.0
uritemplate==3.0.0
urllib3==1.25.9
virtualenv==16.7.7
virtualenv-clone==0.5.3
w3lib==1.21.0
wcwidth==0.1.7
webencodings==0.5.1
wrapt==1.11.2
zope.interface==4.6.0