Compare commits

...

161 Commits

Author SHA1 Message Date
Morgan
72f660c903
Merge Brewfiles 2022-03-17 01:52:01 +01:00
Morgan
14f0bae19f
Merge pull request #10 from MorganGeek/dependabot/pip/bleach-3.3.0
Bump bleach from 3.1.4 to 3.3.0
2022-02-23 12:28:02 +01:00
Morgan
68e7f8ab44
Merge pull request #23 from MorganGeek/dependabot/pip/lxml-4.6.5
Bump lxml from 4.4.1 to 4.6.5
2021-12-14 09:27:02 +01:00
dependabot[bot]
96db94cb44
Bump lxml from 4.4.1 to 4.6.5
Bumps [lxml](https://github.com/lxml/lxml) from 4.4.1 to 4.6.5.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.4.1...lxml-4.6.5)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-13 20:07:51 +00:00
MorganGeek
1bee3139de Add Eban Blog 2021-06-21 18:37:20 +02:00
dependabot[bot]
784782a346
Bump bleach from 3.1.4 to 3.3.0
Bumps [bleach](https://github.com/mozilla/bleach) from 3.1.4 to 3.3.0.
- [Release notes](https://github.com/mozilla/bleach/releases)
- [Changelog](https://github.com/mozilla/bleach/blob/master/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v3.1.4...v3.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-07 09:52:33 +00:00
MorganGeek
923f0ba039 all local changes 2021-06-07 11:51:29 +02:00
MorganGeek
87d138f1a5 init requirements 2021-06-07 11:50:42 +02:00
MorganGeek
fc67df56b3 more RSS feeds 2021-06-07 11:50:23 +02:00
MorganGeek
a63d3ffe4b fix upgrade script for OhMyZsh 2021-06-07 11:49:58 +02:00
MorganGeek
0375057b53 add godeps 2021-06-07 11:49:30 +02:00
MorganGeek
d0e7690e43 disable fixers in vim config 2021-06-07 10:01:02 +02:00
MorganGeek
db6430d3df send mail function 2021-06-07 09:57:24 +02:00
MorganGeek
a9c4b9b782 broot config 2021-06-07 09:53:27 +02:00
MorganGeek
f58a979dea broot install script 2021-06-07 09:51:26 +02:00
MorganGeek
0316dbb803 source broot folder 2021-06-07 09:50:41 +02:00
MorganGeek
dce79dd063 alias for readme spellcheck 2021-06-07 09:49:56 +02:00
MorganGeek
c3887fe8a3 set libgen download location 2021-06-07 09:49:36 +02:00
MorganGeek
d49efa06f3 aliases for kindle 2021-06-07 09:48:14 +02:00
MorganGeek
d2845586df new utilities 2021-06-07 09:47:48 +02:00
MorganGeek
a37a229670 update personal spell checking dictionary 2020-07-29 07:23:49 +02:00
MorganGeek
9504e845c1 subscribe to vimtricks news feed 2020-07-23 10:51:19 +02:00
MorganGeek
4a78a5e9fa Vim: enable spellchec, synced w/ aspell dictionary 2020-07-23 10:50:07 +02:00
MorganGeek
27221b850f checkenremote: improve github readme url detection 2020-07-23 09:47:45 +02:00
MorganGeek
a31870d764 fix parsing of history content
- top_commands_full depends on the history which prefixes some commands
  wiht '*' as the history grows
2020-07-23 09:21:12 +02:00
MorganGeek
1957058cf2 aliases for some recurrent commands 2020-07-23 09:20:17 +02:00
MorganGeek
d5cdbbb7af add findutils to get gnu xargs/find/locate/updatedb 2020-07-23 07:35:03 +02:00
MorganGeek
2aa56b0965 new rss feeds 2020-07-23 07:33:53 +02:00
MorganGeek
91c41d33cb improve my fork workflow
- always go to new copy of the cloned repository after forking it
- always set the local repo user config after the fork
- always check for spelling mistakes in the forked repo readme files
  just in case
2020-07-23 07:32:35 +02:00
MorganGeek
ac7bfb46f8 shortcuts to open vimium/toby browser extensions 2020-07-23 07:30:50 +02:00
MorganGeek
bb0370ae7b function for converting epub to mobi files 2020-07-23 07:30:29 +02:00
MorganGeek
709ccc709c add superman plugin for reading man pages in vim 2020-07-23 07:29:08 +02:00
MorganGeek
b68120da30 alias for unmuting the current audio device 2020-07-23 07:28:17 +02:00
MorganGeek
f9d012072d new aliases to configure the local repo git user 2020-07-23 07:26:33 +02:00
MorganGeek
0b19d1261d enrich dictionary for checking readme's 2020-07-23 07:21:50 +02:00
MorganGeek
a9feda9383 add git utilities to display stats of a repo 2020-07-23 07:18:03 +02:00
MorganGeek
595443e89b enable AI based completion (vim) + update rss feed 2020-07-20 12:59:38 +02:00
MorganGeek
bd54077a9e fix shell script indentation 2020-07-20 11:40:54 +02:00
MorganGeek
e17797e5ea enrich dictionary 2020-07-20 11:40:32 +02:00
MorganGeek
bb64eefd44 Add confirmation when killing zoom 2020-07-20 11:39:27 +02:00
MorganGeek
f734366fac fix pip3 path 2020-07-19 15:44:44 +02:00
MorganGeek
447698b826 feature: manage macos sound devices
- installed switchaudio-osx for managing macos sound devices
  e.g : muting a device or switching to a device
- aliases/functions to switch/mute devices
- always mute speakers and switch to headset before running a zoom
  session
- new aliases for starting timeboxed zoom meetings
2020-07-19 15:41:26 +02:00
MorganGeek
34254c50d5 write-good: disable passive voice checks 2020-07-19 12:36:57 +02:00
MorganGeek
9794f98fd6 uninstall nms + track minimal git hook 2020-07-19 12:30:34 +02:00
MorganGeek
5ad4c597fe always copy git hooks, with adapted configs 2020-07-19 12:16:15 +02:00
MorganGeek
86525472c0 fix rustup update command syntax 2020-07-19 12:15:34 +02:00
MorganGeek
942e88ac81 update iterm2 and aspell configs 2020-07-19 12:14:05 +02:00
MorganGeek
01420c2aa7 ignore newsboat rss queue 2020-07-19 12:11:04 +02:00
MorganGeek
cda3324d86 add new text linter + integrate it with vim 2020-07-18 18:19:25 +02:00
MorganGeek
aabb0dadc1 increase text linting in pre-commit, vim etc 2020-07-18 17:51:18 +02:00
MorganGeek
641f25cc99 eat our own dog foot 2020-07-18 16:55:52 +02:00
MorganGeek
6fdba310b9 doc: enrich knowledge base for aspell 2020-07-18 10:56:17 +02:00
MorganGeek
a766b96ef1 feature : start zoom and autokill it after x minutes 2020-07-18 10:55:45 +02:00
MorganGeek
dde9e3fe3e alias for killing zoom 2020-07-18 10:53:49 +02:00
MorganGeek
b88a574495 feature: fn(x) for forking repos via github 2020-07-17 14:54:47 +02:00
MorganGeek
fa938d9df5 feature: check spelling of remote files via fn(x) 2020-07-17 14:53:14 +02:00
MorganGeek
4befc36c8b readability: remove useless whitespace in echo 2020-07-17 14:52:30 +02:00
MorganGeek
0d24e86401 feature: find non human readable code 2020-07-17 14:51:39 +02:00
MorganGeek
b74480c0a5 remove the invalid OS-specific echo 2020-07-17 14:49:26 +02:00
MorganGeek
20376ba6dd fix formating (thanks shfmt) 2020-07-17 14:48:59 +02:00
MorganGeek
8b69958acb fix formating (thanks shfmt) 2020-07-17 14:48:23 +02:00
MorganGeek
a164e38ded enrich my personal dictionary 2020-07-17 14:47:32 +02:00
MorganGeek
159ac66679 improve aliases portability 2020-07-17 14:47:03 +02:00
MorganGeek
a467aca4ca new: track aspell config + add symbolic links 2020-07-15 22:57:13 +02:00
MorganGeek
4e7c787e8d Fix invalid path for dotfiles symbolic links 2020-07-15 22:56:25 +02:00
MorganGeek
29f4e5ecb1 feature: spelling check function, non interactive 2020-07-15 22:41:03 +02:00
MorganGeek
a85ab418ed improve: decrease rate of errors/false positives
- avoid showing useless results (e.g : alias found himself...)
- better handling of quotes/double quotes/dollars sign in searches, by
  switching to fgrep (thanks to
  https://unix.stackexchange.com/q/32018/220566 for the idea)
2020-07-15 22:15:19 +02:00
MorganGeek
8d00c2d2f2 add shortcut to open zoom.us 2020-07-15 19:46:02 +02:00
MorganGeek
90b0df7a17 feature: (wip) code simplifications suggestions
the purpose is to suggest refactoring opportunities in a given shellscript.
some features would be :
- Increase KISS / YAGNI
- Remove code duplication / repetition
- Improve code consistency / redability
- Reduce LOC :-) (lines of code)
- Encourage reuse of aliases
2020-07-14 15:22:06 +02:00
MorganGeek
b57a7bb8ff feature: website to spy on torrent downloaders 2020-07-14 15:20:03 +02:00
MorganGeek
e5469f5aa8 feature: bash substring f(x) for textual input 2020-07-14 15:18:57 +02:00
MorganGeek
603c686f48 fix: make scripts executable 2020-07-14 10:37:24 +02:00
MorganGeek
061b1e4672 create epub2pdf conversion fn(x) 2020-07-14 10:35:29 +02:00
MorganGeek
56702d74f7 helper to list invalid filenames in manuals/readme
- Helper name is `invalid_file_refs` and can be used like this :
  `invalid_file_refs README.*`
- Given a document (readme, manual...) containing file names, the script
  will attempt to identify what file names are either not referenced in
  the source code, or missing in the project, thus helping to detect
  some potentials issues.
- Example of issue detected by this tool : the README.md
  mentions a `config.yaml` while the application would search for `config.yml`.
  Because of this mistake, the user might struggle to make the application work.
2020-07-13 16:19:08 +02:00
MorganGeek
5c464f6128 remove extra " and silent useless grep output 2020-07-13 16:18:58 +02:00
MorganGeek
816fdb8d9b helpers for capturing command outputs 2020-07-13 16:17:33 +02:00
MorganGeek
fc337c6d85 aliases for txt transformation 2020-07-13 16:15:11 +02:00
MorganGeek
f9fbf5bc04 alias to open my medidation extension 2020-07-13 16:14:35 +02:00
MorganGeek
6dc24efc11 speed-test network alias 2020-07-13 16:13:00 +02:00
MorganGeek
b8cada1674 new alias for git commit 2020-07-13 16:12:32 +02:00
MorganGeek
b5567560c0 vim plugin for comments + docs for using <leader> 2020-07-13 16:11:10 +02:00
MorganGeek
9083dacce3 aliases on MacOs : open Finder, clear screen 2020-07-13 16:09:39 +02:00
MorganGeek
8d94407282 new funny podcasts to listen to... 2020-07-13 16:05:04 +02:00
MorganGeek
c415f35543 fix: lynx needed a openssl+rvm upgrade
- add alias for gpg2 to point to gpg, needed for rvm install script
- reinstall openssl (brew reinstall openssl) to fix lynx
- install rvm
2020-07-13 16:02:47 +02:00
MorganGeek
dea26329ef fix: make aliases executable 2020-07-13 16:01:50 +02:00
MorganGeek
38ffbd2250 ignore .git in tree output 2020-07-13 15:57:41 +02:00
MorganGeek
4d5bfeeb49 make aliases executables
- chmod all files in git and when loading aliases
2020-07-13 07:43:20 +02:00
MorganGeek
9d16247dfe extract aliases to their own files
- the great aliases extraction
2020-07-13 07:40:45 +02:00
MorganGeek
1cf76dee6f Reorganize functions by scope
- Reorganize functions by categories
- Apply some best practices for shell scripting
2020-07-13 07:13:23 +02:00
MorganGeek
0b3d06a3f9 move reusable code bricks to aliases/functions
- new aliases to be used in pipes
2020-07-12 22:55:16 +02:00
MorganGeek
858eebdb91 add rss feeds (mainly podcasts) 2020-07-12 22:37:11 +02:00
MorganGeek
41a496e1c8 quick coffee break invocation :-)
- just some aliases to moro and coffee
2020-07-12 18:03:02 +02:00
MorganGeek
acfe778c4e create gitignore fetcher :-)
- use the information available on GitHub to download gitignore files
  and add them to the current repo. Any important gitignore file is one
  command invocation away now :-) ... like "gitignorefor terraform" for
  instance.
2020-07-12 17:54:06 +02:00
MorganGeek
1e46334538 subscribe to some favorite rss feeds 2020-07-12 17:53:39 +02:00
MorganGeek
60cee5b38a ansible/blog aliase + improve UX for some functions
- improve behavior of clone function to show more output
- add alias for going ti blog editing mode
- aliases for ansible ad-hoc command invocation
2020-07-12 17:50:17 +02:00
MorganGeek
3a3fc30b8c fix technical debt + fine tune functions and hooks
- linting/fixing/formating
- utility for suggesting aliases now accepts parameters to change output
  size
- add helper to checkci
- add verify committer script to avoid committer with wrong git identify
2020-07-12 16:22:17 +02:00
MorganGeek
336aaa2729 performance and ui improvements
- better alias recommendation UI.
- add function to randomly execute whatever function/alias is passed as
argument.
- the default jira check executed when opening a session will now only
  occurs 1/10 times.
2020-07-12 10:20:12 +02:00
MorganGeek
4002d62840 vars/aliases for confluence/trello/browser 2020-07-11 23:30:48 +02:00
MorganGeek
b3db5095dd remove duplicate documentation 2020-07-11 12:36:02 +02:00
MorganGeek
88e45e329c ignore work in progress files 2020-07-11 12:34:46 +02:00
MorganGeek
228982a0a8 add linters and refactor bootstraping scripts
- giant refactoring
- add aliases and functions to ease work
- apply linters / fixers / fmt to most files
2020-07-11 12:31:06 +02:00
MorganGeek
e48c7e700a add prettier 2020-07-11 12:22:28 +02:00
MorganGeek
c69bad4acf aliases for terragrunt 2020-07-10 13:27:47 +02:00
MorganGeek
4055037f6f add OSINT tool, still need to play with 2020-07-10 13:23:54 +02:00
MorganGeek
de1cd32d4d move aliases to their own dir 2020-07-10 13:23:15 +02:00
MorganGeek
1bbe0e985a update toploc to show only top 50 results 2020-07-09 07:42:09 +02:00
MorganGeek
c3a54e77b3 remove dead code 2020-07-09 07:40:34 +02:00
MorganGeek
9dc733751c improve instructions portability 2020-07-09 07:40:11 +02:00
MorganGeek
056fc58616 git aliases for pushing branches 2020-07-08 17:09:19 +02:00
MorganGeek
f0aa65ef56 add filtering for top commands output 2020-07-08 16:59:29 +02:00
MorganGeek
bf49e35393 add delta as git diff tool 2020-07-08 14:41:14 +02:00
MorganGeek
0b1a075290 add wikit, wikipedia cli tool 2020-07-08 14:17:14 +02:00
MorganGeek
784d8977d2 install fd and override zsh alias 2020-07-08 14:08:02 +02:00
MorganGeek
ee0d336f2a aliases for navigating folders and analyzing files 2020-07-08 12:20:18 +02:00
MorganGeek
86709fa128 manage bookmarks additions via cli 2020-07-08 12:10:02 +02:00
MorganGeek
9e8cc03e01 add tokei for getting code stats 2020-07-08 12:07:04 +02:00
MorganGeek
d7ff4f74fa terraform tools, git aliases, ctrl-c in cli, ... 2020-07-08 11:16:34 +02:00
MorganGeek
c6ae66c57d aliases for git diff and text parsing 2020-07-07 15:19:29 +02:00
MorganGeek
d6ea09d5a5 alias / functions for managing my time off 2020-07-06 20:03:34 +02:00
MorganGeek
7d707dad27 don't enable pre-commit hooks on collibra repos 2020-07-06 16:43:26 +02:00
MorganGeek
372c047d1e aliases for end of day/current hour 2020-07-06 14:27:33 +02:00
MorganGeek
1606bf3df3 alias for searching in env 2020-07-03 10:28:45 +02:00
MorganGeek
06a99a8a1f stop tracking gh state 2020-07-03 10:28:19 +02:00
MorganGeek
fa26428098 trim line ending spaces for history output 2020-07-03 08:13:38 +02:00
MorganGeek
76a53daf9e alias for moro 2020-07-03 08:13:15 +02:00
MorganGeek
d39e06b173 add wuzz Interactive cli tool for HTTP inspection 2020-07-03 07:33:03 +02:00
MorganGeek
325c6849e5 add moro, cli productivity tool 2020-07-03 07:19:29 +02:00
MorganGeek
eaa45cff1e add aliases for getting login history
- inspired by https://superuser.com/questions/916440/view-all-login-history-on-macbook-pro-running-mac-os-x-10-6-8/1476867#1476867
2020-07-03 07:12:40 +02:00
MorganGeek
3ab5d26b16 add fastping alias inspired by
- https://www.cyberciti.biz/tips/bash-aliases-mac-centos-linux-unix.html
2020-07-03 06:46:37 +02:00
MorganGeek
afdc467baf add new git aliases
partially inspired by https://github.com/nyambati/dotfiles/blob/master/.zshrc
2020-07-03 06:31:57 +02:00
MorganGeek
0730b2f039 add aliases inspired
- inspired partially by
  https://github.com/sapegin/dotfiles/blob/master/zsh/aliases.zsh
2020-07-03 06:22:30 +02:00
MorganGeek
d7e23002d2 add alias for searching aliases (yeah) 2020-07-02 21:20:49 +02:00
MorganGeek
49660d667d fetch many shell aliases
- inspired by
  https://github.com/skwp/dotfiles/blob/master/zsh/aliases.zsh
2020-07-02 21:10:53 +02:00
MorganGeek
5cb3673335 add shell aliases inspired by public dotfiles
- Thanks to https://github.com/mathiasbynens/dotfiles/blob/main/.aliases
  for inspiration
2020-07-02 20:59:31 +02:00
MorganGeek
8fda3e1d6f add git aliases inspired by public dotfiles
- Thanks https://github.com/mathiasbynens/dotfiles/blob/main/.gitconfig
  for inspiration
2020-07-02 20:47:13 +02:00
MorganGeek
7e645f19cb replace basic with colored messages formatting 2020-07-02 16:51:30 +02:00
MorganGeek
2eaee51534 move common functions at the top 2020-07-02 16:31:38 +02:00
MorganGeek
9f2bb47e9d add useful delete all alias 2020-07-02 16:27:34 +02:00
MorganGeek
b8963e1609 add shell text formating utilities 2020-07-02 16:27:08 +02:00
MorganGeek
3c25793620 ignore gh state changes 2020-07-02 15:54:38 +02:00
MorganGeek
0b868ff01f add korben.info rss feed 2020-07-02 15:51:56 +02:00
MorganGeek
8e48d807d9 git aliases improved + add git backup alias 2020-07-02 15:51:10 +02:00
MorganGeek
dbd9fda324 add awsls 2020-07-02 15:50:30 +02:00
MorganGeek
4e456ca0cd add new rss feed 2020-07-01 12:53:40 +02:00
MorganGeek
4e525208c1 start tracking newsboat config 2020-07-01 12:53:23 +02:00
MorganGeek
10140a571f new aliases for newsboat/rss 2020-07-01 12:52:50 +02:00
MorganGeek
0b20d20ef1 alias for searching torrents via ygg 2020-07-01 10:46:10 +02:00
MorganGeek
1877117d72 add alias for reloading zshrc 2020-06-30 19:00:16 +02:00
MorganGeek
757051c326 add torrengo torrent client 2020-06-30 18:59:46 +02:00
MorganGeek
438c30f66b add wtfutil 2020-06-30 18:11:23 +02:00
MorganGeek
1ba70df44d Reorder all aliases 2020-06-30 14:44:23 +02:00
MorganGeek
723fbfc4d7 put more dotfiles under control 2020-06-30 14:26:49 +02:00
MorganGeek
4cc74a4069 rss feeds + aliases to manipulate them 2020-06-30 14:22:03 +02:00
MorganGeek
a0ab539979 add tuir, reddit terminal client 2020-06-30 12:59:28 +02:00
MorganGeek
1d378225a5 fix clone function behavior with public urls 2020-06-30 11:09:26 +02:00
MorganGeek
7ad5884835 add bashtop 2020-06-30 11:08:48 +02:00
MorganGeek
0855847f72 Merge branch 'master' of ssh://bitbucket.collibra.com/~morgan.wattiez/dotfiles 2020-06-30 10:26:59 +02:00
MorganGeek
6f22a5e29c add newsboat (rss reader) and gitignore 2020-06-30 10:26:33 +02:00
MorganGeek
ed24e3abeb add newsboat (rss reader) 2020-06-30 10:12:44 +02:00
MorganGeek
2d0b1e16f6 add aws cli v2 2020-06-30 09:59:51 +02:00
MorganGeek
f0f662f88d cleanup + add rainbowstream (twitter) 2020-06-30 09:59:25 +02:00
87 changed files with 5165 additions and 1989 deletions

22
.conform.yaml Normal file
View File

@ -0,0 +1,22 @@
---
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

25
.gitignore vendored
View File

@ -3,3 +3,28 @@ 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

View File

@ -1,61 +0,0 @@
# 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

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

5
.relint.yml Normal file
View File

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

View File

@ -1,6 +1,7 @@
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"
tap "homeport/tap"
# Tap for chezmoi
tap "twpayne/taps"
# Tap for real path
@ -21,7 +22,11 @@ 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"
@ -57,6 +62,7 @@ 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
@ -66,6 +72,7 @@ mas 'Pages', id: 409201541
mas 'GarageBand', id: 682658836
mas 'Numbers', id: 409203825
brew "homeport/tap/havener"
brew "zsh"
brew "git-ftp"
brew "gnu-sed"
@ -73,11 +80,12 @@ 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"
@ -107,7 +115,8 @@ 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-python-version-is-3-5
# 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
brew "pyenv"
# Google CLI https://github.com/jarun/googler
brew "googler"
@ -141,13 +150,23 @@ 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
@ -155,6 +174,8 @@ 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
@ -170,7 +191,6 @@ 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
@ -189,3 +209,21 @@ 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,38 +1,51 @@
# 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 ~/Code/dotfiles
~/Code/dotfiles/dot_scripts/bootstrap.sh
git clone https://github.com/MorganGeek/dotfiles.git $HOME/Code/dotfiles
$HOME/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
### If Yubico is installed, run this :
- 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
`sudo ansible-playbook ~/.scripts/ansible/macsecure_playbook.yaml`
#### In cases of `\n` errors with zsh
https://github.com/robbyrussell/oh-my-zsh/issues/6764#issuecomment-384045008
[Source](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
. ~/.zshrc
. "$HOME/.zshrc"
# Install Hugo
mkdir "$HOME/src"
@ -68,15 +68,12 @@ yum -y install telnet ftp rsh traceroute
# FTP UI
yum -y install filezilla
# Install SDK Man
curl -s "https://get.sdkman.io" | bash
source "/root/.sdkman/bin/sdkman-init.sh"
~/.scripts/sdkmandeps.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
@ -170,21 +167,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,6 +2,12 @@
<!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>
@ -17,7 +23,7 @@
<key>LoadPrefsFromCustomFolder</key>
<true/>
<key>NSNavLastRootDirectory</key>
<string>~</string>
<string>/Applications</string>
<key>NSNavPanelExpandedSizeForOpenMode</key>
<string>{712, 448}</string>
<key>NSQuotedKeystrokeBinding</key>
@ -52,13 +58,21 @@
<key>NSTableView Supports v2 KeyBingingTable</key>
<true/>
<key>NSWindow Frame NSFontPanel</key>
<string>1111 136 445 77 0 0 1680 1027 </string>
<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>
<key>NSWindow Frame SessionsPreferences</key>
<string>-1651 117 606 469 -1920 -30 1920 1057 </string>
<string>220 84 606 469 0 0 1680 1027 </string>
<key>NSWindow Frame SharedPreferences</key>
<string>-1683 427 796 486 -1920 -30 1920 1057 </string>
<string>236 550 796 486 0 0 1920 1057 </string>
<key>NSWindow Frame iTerm Window 0</key>
<string>-757 48 650 527 -1920 -30 1920 1057 </string>
<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>
<key>New Bookmarks</key>
<array>
<dict>
@ -261,8 +275,8 @@
<key>Red Component</key>
<real>0.0055023282766342163</real>
</dict>
<key>Background Image Location</key>
<string></string>
<key>Background Image Is Tiled</key>
<false/>
<key>Badge Color</key>
<dict>
<key>Alpha Component</key>
@ -276,10 +290,12 @@
<key>Red Component</key>
<real>1</real>
</dict>
<key>Blend</key>
<real>0.050000000000000003</real>
<key>Blinking Cursor</key>
<false/>
<key>Blur</key>
<false/>
<true/>
<key>Bold Color</key>
<dict>
<key>Blue Component</key>
@ -299,6 +315,8 @@
<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>
@ -667,7 +685,7 @@
<real>0.0</real>
</dict>
<key>Minimum Contrast</key>
<real>0.0</real>
<real>0.72345525568181823</real>
<key>Mouse Reporting</key>
<true/>
<key>Name</key>
@ -677,7 +695,7 @@
<key>Non-ASCII Anti Aliased</key>
<true/>
<key>Normal Font</key>
<string>MesloLGMForPowerline-Regular 14</string>
<string>HackNerdFontCompleteM-Regular 14</string>
<key>Option Key Sends</key>
<integer>0</integer>
<key>Prompt Before Closing 2</key>
@ -725,7 +743,7 @@
<key>Terminal Type</key>
<string>xterm-256color</string>
<key>Transparency</key>
<real>0.0</real>
<real>0.081466132614213205</real>
<key>Unlimited Scrollback</key>
<true/>
<key>Use Bold Font</key>
@ -736,6 +754,10 @@
<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>
@ -1380,6 +1402,8 @@
</array>
<key>NoSyncHaveRequestedFullDiskAccess</key>
<true/>
<key>NoSyncHaveUsedCopyMode</key>
<true/>
<key>NoSyncHaveWarnedAboutPasteConfirmationChange</key>
<true/>
<key>NoSyncInstallationId</key>
@ -1392,6 +1416,10 @@
<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>
@ -1427,6 +1455,8 @@
</dict>
<key>PrefsCustomFolder</key>
<string>/Users/morganwattiez</string>
<key>Print In Black And White</key>
<true/>
<key>SUEnableAutomaticChecks</key>
<true/>
<key>SUFeedAlternateAppNameKey</key>
@ -1436,9 +1466,11 @@
<key>SUHasLaunchedBefore</key>
<true/>
<key>SULastCheckTime</key>
<date>2019-02-26T13:53:46Z</date>
<date>2020-07-19T09:05:45Z</date>
<key>SUSendProfileInfo</key>
<false/>
<key>ShowFullScreenTabBar</key>
<false/>
<key>TabStyleWithAutomaticOption</key>
<integer>4</integer>
<key>WordCharacters</key>

View File

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

23
dot_aliases/backlog.sh Executable file
View File

@ -0,0 +1,23 @@
#!/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'

51
dot_aliases/files.sh Executable file
View File

@ -0,0 +1,51 @@
#!/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*'

16
dot_aliases/git.sh Executable file
View File

@ -0,0 +1,16 @@
#!/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)"'

32
dot_aliases/macos.sh Executable file
View File

@ -0,0 +1,32 @@
#!/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"'

43
dot_aliases/misc.sh Executable file
View File

@ -0,0 +1,43 @@
#!/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'

10
dot_aliases/music.sh Executable file
View File

@ -0,0 +1,10 @@
#!/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'

8
dot_aliases/network.sh Executable file
View File

@ -0,0 +1,8 @@
#!/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

5
dot_aliases/news.sh Executable file
View File

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

7
dot_aliases/rss.sh Executable file
View File

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

24
dot_aliases/search.sh Executable file
View File

@ -0,0 +1,24 @@
#!/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'

12
dot_aliases/secure.sh Executable file
View File

@ -0,0 +1,12 @@
#!/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'

50
dot_aliases/terraform.sh Executable file
View File

@ -0,0 +1,50 @@
#!/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'

49
dot_aliases/terragrunt.sh Executable file
View File

@ -0,0 +1,49 @@
#!/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'

9
dot_aliases/twitter.sh Executable file
View File

@ -0,0 +1,9 @@
#!/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'

13
dot_aspell.en.prepl Normal file
View File

@ -0,0 +1,13 @@
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

323
dot_aspell.en.pws Normal file
View File

@ -0,0 +1,323 @@
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

1
dot_aspell.fr.prepl Normal file
View File

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

6
dot_aspell.fr.pws Normal file
View File

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

View File

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

View File

@ -1,61 +1,120 @@
---
# 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
- 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

View File

@ -0,0 +1,19 @@
---
# 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,9 +5,35 @@
[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
contrib = ! git log --pretty=format:'%aN' | sort | uniq -c | sort -nr
whois = ! sh -c 'git log -i --pretty=\"format:%an <%ae>\" --author=\"\" | sort -u' -
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
di = diff -w --color-words=.
ac = ! git add . && git commit -v
unstage = reset HEAD
@ -19,16 +45,65 @@
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\"\"}}'"
| 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
[help]
autocorrect = -1 # not more git psuh
[init]
templateDir = /Users/morganwattiez/.git-template
[core]
pager = diff-so-fancy | less --tabs=4 -RFX
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
[diff]
noprefix = true
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\"
[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,237 +1,52 @@
#!/usr/bin/env bash
# Make sure Code directory exists
echo "Hello $(whoami)! Let's get you set up."
# Make sure Code directory exists
echo "mkdir -p $HOME/Code"
mkdir -p ~/Code
ln -snf ~/Code/dotfiles/dot_scripts ~/.scripts
chmod +x ~/.scripts/*.sh
mkdir -p "$HOME/Code"
ln -snf "$HOME/Code/dotfiles/dot_scripts" "$HOME/.scripts"
chmod +x "$HOME/.scripts/*.sh"
# 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
# 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
"$HOME/.scripts/install_linux_packages.sh"
"$HOME/.scripts/install_homebrew.sh"
# Path to ruby
export PATH="/usr/local/opt/ruby/bin:$PATH"
# Create symbolic links
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_gitconfig ~/.gitconfig
ln -snf ~/Code/dotfiles/dot_macos ~/.macos
ln -snf ~/Code/dotfiles/dot_scripts ~/.scripts
ln -snf ~/Code/dotfiles/dot_scripts/checkci.sh /usr/local/bin/checkci
ln -snf ~/Code/dotfiles/dot_vimrc ~/.vimrc
# custom linters
ln -snf ~/Code/dotfiles/dot_vim/ale_linters ~/.vim/ale_linters
"$HOME/.scripts/symbolic_links.sh"
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
# Other symblinks + 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
# 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
# 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
# Install user applications
"$HOME/.scripts/install_macpackages.sh"
"$HOME/.scripts/install_linux_user_apps.sh"
# Switch to ZSH
echo "switching to ZSH"
command -v zsh >>/etc/shells
chsh -s "$(command -v zsh)"
# Use SDKMan to install development tools
echo "Installing SDKMan as development tools manager"
curl -s "https://get.sdkman.io" | bash
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
case "$(uname -s)" in
Linux)
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
;;
esac
# Install bundler for managing ruby dependencies and Gemfile
echo "Installing bundler for managing ruby dependencies and Gemfile"
sudo gem install bundler
bundle install
# 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
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
cd "$HOME" || exit
git clone https://github.com/dbeniamine/cheat.sh-vim.git ~/.vim/cheat.sh-vim
# Install no-more-secrets
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
case "$(uname -s)" in
Darwin)
echo "(Mac OS X) Loading preferences"
sudo sh .macos
;;
esac
# Customize /etc/hosts
echo "Overriding /etc/hosts"
curl https://someonewhocares.org/hosts/hosts -o /etc/hosts
# 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/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"
;;
esac
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
"$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"
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
#scope launch
# Upgrade
echo "Upgrading apps"
~/.scripts/upgrade.sh
# Reload
echo "Reloading config"
~/.scripts/reload.sh
"$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"

5
dot_scripts/bundlerdeps.sh Executable file
View File

@ -0,0 +1,5 @@
#!/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,9 +1,33 @@
#!/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 | 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"
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"
}
_checkci "$*"
exit 0

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

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

View File

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

View File

@ -0,0 +1,6 @@
#!/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

166
dot_scripts/git-overview.py Executable file
View File

@ -0,0 +1,166 @@
#!/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)

10
dot_scripts/godeps.sh Executable file
View File

@ -0,0 +1,10 @@
#!/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

3
dot_scripts/install_awsls.sh Executable file
View File

@ -0,0 +1,3 @@
#!/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

5
dot_scripts/install_bach.sh Executable file
View File

@ -0,0 +1,5 @@
#!/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 "$_"

6
dot_scripts/install_bashtop.sh Executable file
View File

@ -0,0 +1,6 @@
#!/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

17
dot_scripts/install_baton.sh Executable file
View File

@ -0,0 +1,17 @@
#!/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

4
dot_scripts/install_broot.sh Executable file
View File

@ -0,0 +1,4 @@
#!/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

12
dot_scripts/install_homebrew.sh Executable file
View File

@ -0,0 +1,12 @@
#!/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

@ -0,0 +1,11 @@
#!/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

@ -0,0 +1,9 @@
#!/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

@ -0,0 +1,10 @@
#!/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

@ -0,0 +1,5 @@
#!/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 Normal file → Executable file
View File

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

View File

@ -0,0 +1,9 @@
#!/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

24
dot_scripts/mail.tpl Normal file
View File

@ -0,0 +1,24 @@
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

15
dot_scripts/npmdeps.sh Executable file
View File

@ -0,0 +1,15 @@
#!/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

10
dot_scripts/ohmyzshdeps.sh Executable file
View File

@ -0,0 +1,10 @@
#!/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

@ -0,0 +1,31 @@
#!/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

31
dot_scripts/pythondeps.sh Executable file
View File

@ -0,0 +1,31 @@
#!/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,23 +1,29 @@
#!/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

9
dot_scripts/rubydeps.sh Executable file
View File

@ -0,0 +1,9 @@
#!/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

11
dot_scripts/rustdeps.sh Executable file
View File

@ -0,0 +1,11 @@
#!/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

20
dot_scripts/sdkmandeps.sh Executable file
View File

@ -0,0 +1,20 @@
#!/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

33
dot_scripts/sendmail.sh Executable file
View File

@ -0,0 +1,33 @@
#!/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

@ -0,0 +1,50 @@
#!/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)
}

59
dot_scripts/symbolic_links.sh Executable file
View File

@ -0,0 +1,59 @@
#!/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,24 +3,29 @@ 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
zsh ~/.oh-my-zsh/tools/upgrade.sh || upgrade_oh_my_zsh
sudo pip install --upgrade pip 2>/dev/null
sudo pip3 install --upgrade pip 2>/dev/null
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
pip list --outdated --format=freeze G -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
rustup update
npm update -g moro
pre-commit autoupdate

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail
vim --version | head -1
vim --version H -1
rustc --version
npm --version
bats --version
@ -19,12 +19,12 @@ python3 --version
docker --version
openssl version
git --version
atlas-version | grep Version | head -n 1
atlas-version G Version H -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 | head -n 1
tac --version H -n 1
k9s version
tfsec --version
aws-iam-authenticator version

11
dot_scripts/vimdeps.sh Executable file
View File

@ -0,0 +1,11 @@
#!/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,6 +45,12 @@ 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
@ -57,6 +63,14 @@ 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()
@ -97,12 +111,28 @@ 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
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'python': ['black'],
\ 'rust': ['rustfmt'],
\ 'Jenkinsfile': ['checkci'],
\}
"\ '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
" Enable syntax highlighting
syntax on
@ -150,12 +180,16 @@ 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
@ -173,6 +207,9 @@ 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()}
@ -183,3 +220,4 @@ 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,56 +1,30 @@
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
# alias zshconfig="mate $HOME/.zshrc"
# alias ohmyzsh="mate $HOME/.oh-my-zsh"
#
# 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'
chmod +x $HOME/.aliases/*
# 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'
# Git
source "$HOME/.aliases/git.sh"
# Docker
alias lzd='lazydocker'
# PM : Jira & trello & asana & moro
source "$HOME/.aliases/backlog.sh"
# News
alias hack='hacker'
alias crypto='curl rate.sx'
source "$HOME/.aliases/news.sh"
# Twitter
alias twitter='\t'
alias tsearch='twitter search all'
alias tweets='tsearch --long -a -d'
alias tsearchfav='twitter search favorites'
alias tsearchtimeline='twitter search timeline'
source "$HOME/.aliases/twitter.sh"
# RSS
source "$HOME/.aliases/rss.sh"
# Search
alias ddg='ddgr'
alias goo='googler'
alias se='sr -elvi'
alias engines='sr -elvi'
source "$HOME/.aliases/search.sh"
# Events
alias agenda='calendar'
@ -58,105 +32,74 @@ 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
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'
source "$HOME/.aliases/secure.sh"
# Network
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"'
source "$HOME/.aliases/network.sh"
# Misc
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'
# Downloads
alias get="curl -O -L" # Download file and save it with filename of remote file
# Files & folder tricks
source "$HOME/.aliases/files.sh"
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'
# System Utils
alias systeminfo='neofetch'
alias monitoring='glances'
alias ':q'='exit'
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'
# Misc
source "$HOME/.aliases/misc.sh"
# 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'
alias trello='3llo'
# Terraform
source "$HOME/.aliases/terraform.sh"
source "$HOME/.aliases/terragrunt.sh"
# Fun
alias moon='curl "wttr.in/Moon?lang=fr"'
alias lune='moon'
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
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'
source "$HOME/.aliases/music.sh"
# K8S
alias k9s='COLORTERM=256bit k9s --all-namespaces'
alias 9=k9s
alias K=k9s
# 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"
# Macos specifics
case "$(uname -s)" in
Darwin)
source "$HOME/.aliases/macos.sh"
;;
esac
# This is the end ;( ... for now ;D

View File

@ -1,105 +1,274 @@
# 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() {
open -na "Google Chrome" --args "https://www.google.com/search?q=$*"
browse "https://www.google.com/search?q=$*"
}
function stackoverflow() {
open -na "Google Chrome" --args "https://www.google.com/search?q=site:stackoverflow.com $*"
browse "https://www.google.com/search?q=site:stackoverflow.com $*"
}
function github() {
open -na "Google Chrome" --args "https://github.com/search?q=$*"
browse "https://github.com/search?q=$*"
}
function hacker() {
open -na "Google Chrome" --args "https://hn.algolia.com/?sort=byDate&query=$*"
browse "https://hn.algolia.com/?sort=byDate&query=$*"
}
function gmail() {
open -na "Google Chrome" --args "https://mail.google.com/mail/u/0"
browse "https://mail.google.com/mail/u/0"
}
function gmail2() {
open -na "Google Chrome" --args "https://mail.google.com/mail/u/1"
browse "https://mail.google.com/mail/u/1"
}
function cicdboard() {
open -na "Google Chrome" --args "$JIRA_URL/secure/RapidBoard.jspa?rapidView=457&view=planning.nodetail"
browse "$JIRA_URL/secure/RapidBoard.jspa?rapidView=457&view=planning.nodetail"
}
function cicddashboard() {
open -na "Google Chrome" --args "$JIRA_URL/secure/Dashboard.jspa?selectPageId=13131"
browse "$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 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"
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"
}
# 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
# 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"
}
# History / Aliases helpers
function top_commands() {
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
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"
}
function top_commands_full() {
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
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"
}
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
# 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="
else
echo "no new issue"
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/')
fi
fi
echo "$LASTISSUE" > "$HOME/.newjiraissue"
file_to_mail "$source_file" "$KINDLE_ACCOUNT_EMAIL"
}
function aboutpage() {
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)
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
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//")
}
# 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)
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//")
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
@ -114,11 +283,12 @@ 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' \
@ -128,87 +298,170 @@ 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 -u | wc -l"
function uloc() {
eval "$cmd_loc | LANG=C LC_CTYPE=C sort --unique | 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 -nr"
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")
}
# 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 -z
find . -size "+$*" -type f -print0 | xargs -0 ls -Ssh | sort --zero-terminated
}
# To automatically ls when changing directory
function cd() {
builtin cd "$@" && ls -latr
builtin cd "$@" && ll -atr
}
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/$*"
}
transfer() {
# Uploaders
function transfer() {
# check arguments
if [ $# -eq 0 ];
then
echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
if [ $# -eq 0 ]; then
warning "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
echo "File $file doesn't exists."
if [ ! -e $file ]; then
error "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
@ -216,31 +469,18 @@ transfer() {
# cleanup
rm -f $tmpfile
}
# Where is a function defined?
function whichfunc() {
whence -v $1
type -a $1
}
# 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 {
function checkov() { docker run -i --rm -v "$(pwd):/tf" bridgecrew/checkov -d /tf "$@"; }
function vimat() {
vim +/$1 $2
}
function copyhooks {
cp -f ~/.git-template/.pre-commit-config.yaml ./
pre-commit install --install-hooks --overwrite
pre-commit run -a
function httperr() {
curl --silent "https://http.cat/$1" | imgcat
}
function httperr {
curl -s "https://http.cat/$1" | imgcat
}
function terragrunt_color {
# Config / Infra as code
function terraform-compliance() { docker run --rm -v "$(pwd):/target" -i -t eerkunt/terraform-compliance "$@"; }
function terragrunt_color() {
BOLD=$(tput bold)
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
@ -265,59 +505,269 @@ function terragrunt_color {
-e "s/\( *.*: *\)\(\".*\"\)\( => \)\(\".*\"\)/${YELLOW}\1${RED}\2${BLACK}\3${GREEN}\4${RESET}/" \
-e "s/\( *.*: *\".*\"\)/${GREEN}\1${RESET}/"
}
function git-project {
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() {
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"
cd "$dir" || exit
fi
}
function jenkins-cli {
local script_location=$(find $HOME/code/jenkins-cloudbees-core -name "jenkins-cli.sh")
eval "$script_location $*"
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 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 {
# Miscellaneous helpers
function colorpic() {
local picture_url="$1"
echo "Colorizing $picture_url"
arrow "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)
echo "Generated $result_url"
echo "Display in progress..."
eval "\curl -s $result_url | imgcat"
success "Generated $result_url"
arrow "Display in progress..."
eval "\curl --silent $result_url | imgcat"
}
function brewadd {
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() {
brew install "$1"
ansible 127.0.0.1 -m lineinfile -a "path=~/Brewfile line='brew \"$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
}

View File

@ -16,6 +16,7 @@ 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"
@ -30,7 +31,6 @@ 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,13 +38,11 @@ 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
@ -99,7 +97,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)
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)
source $ZSH/oh-my-zsh.sh
# User configuration
@ -128,9 +126,26 @@ 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"
@ -148,8 +163,8 @@ eval "$(fasd --init auto)"
#cm apply
# check if we have new jira issues
istherenewissues
# randomly check if we have new jira issues
runiflucky "istherenewissues"
case "$(uname -s)" in
Darwin)
@ -162,11 +177,10 @@ 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/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin/pip /usr/local/bin/pip3
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"
;;
esac
@ -178,3 +192,5 @@ 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

@ -0,0 +1,50 @@
#? 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

@ -0,0 +1,238 @@
###############################################################
# 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

@ -0,0 +1,8 @@
---
# 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

@ -0,0 +1,26 @@
# 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

@ -0,0 +1,761 @@
# 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

@ -0,0 +1,102 @@
---
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

@ -0,0 +1,30 @@
---
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

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

24
private_dot_newsboat/urls Normal file
View File

@ -0,0 +1,24 @@
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,3 +5,6 @@ Host *
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 3600
Match all
Include banyan.config

View File

@ -1,24 +1,26 @@
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.8.1
beautifulsoup4==4.9.1
beautysh==6.0.1
black==19.10b0
bleach==3.1.4
boto3==1.10.14
botocore==1.13.14
bleach==3.3.0
bs4==0.0.1
cachetools==3.1.1
certifi==2019.9.11
castero==0.8.0
certifi==2020.6.20
cffi==1.13.2
chardet==3.0.4
Click==7.0
CJKwrap==2.2
click==7.1.2
colorama==0.4.1
colorzero==1.1
configobj==5.0.6
@ -32,20 +34,21 @@ 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
google-auth==1.7.0
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.8
idna==2.10
incremental==17.5.0
ipykernel==5.1.3
ipython==7.9.0
ipython-genutils==0.2.0
ipython==7.9.0
isort==4.3.21
jedi==0.15.1
jmespath==0.9.4
@ -54,7 +57,7 @@ jupyter-core==4.6.1
kitchen==1.2.6
kiwisolver==1.1.0
lazy-object-proxy==1.4.3
lxml==4.4.1
lxml==4.6.5
matplotlib==3.1.1
mccabe==0.6.1
mock==3.0.5
@ -73,14 +76,18 @@ 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
pyasn1==0.4.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
@ -89,35 +96,38 @@ pyhcl==0.4.0
pylint==2.4.3
pyOpenSSL==19.0.0
pyparsing==2.4.4
PyQt5==5.13.2
PyQt5-sip==12.7.0
PyQt5==5.13.2
PyQtChart==5.13.1
pyserial==3.4
PySocks==1.7.1
python-dateutil==2.8.1
python-dateutil==2.8.0
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
requests==2.22.0
relint==1.2.1
requests-futures==1.0.0
requests-toolbelt==0.9.1
rsa==4.0
requests==2.24.0
rsa==3.4.2
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
six==1.13.0
sh==1.12.14
six==1.15.0
slacker==0.13.0
soupsieve==1.9.5
soupsieve==2.0.1
stashy==0.6
stem==1.7.1
toml==0.10.0
@ -125,16 +135,135 @@ 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.6
urllib3==1.25.9
urwid==2.0.1
virtualenv==16.7.7
vim-vint==0.3.21
virtualenv-clone==0.5.3
virtualenv==16.7.7
w3lib==1.21.0
wcwidth==0.1.7
webencodings==0.5.1
websocket-client==0.56.0
wrapt==1.11.2
zope.interface==4.6.0
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