chezmoi init

This commit is contained in:
Cy Pokhrel 2024-10-22 11:11:45 -04:00
commit 530d6d7195
No known key found for this signature in database
GPG key ID: 1200FBE36C2ADE2E
1176 changed files with 111325 additions and 0 deletions

View file

@ -0,0 +1,85 @@
## Introduction
> Searches for your frontend web development made easier
## Installation
Open your `~/.zshrc` file and enable the `frontend-search` plugin:
```zsh
plugins=( ... frontend-search)
```
## Usage
You can use the frontend-search plugin in these two forms:
- `frontend <context> <term> [more terms if you want]`
- `<context> <term> [more terms if you want]`
For example, these two are equivalent:
```zsh
$ angular dependency injection
# Will turn into ...
$ frontend angular dependency injection
```
Available search contexts are:
| context | URL |
| ------------- | --------------------------------------------------------------------------- |
| angular | `https://angular.io/?search=` |
| angularjs | `https://google.com/search?as_sitesearch=angularjs.org&as_q=` |
| bem | `https://google.com/search?as_sitesearch=bem.info&as_q=` |
| bootsnipp | `https://bootsnipp.com/search?q=` |
| bundlephobia | `https://bundlephobia.com/result?p=` |
| caniuse | `https://caniuse.com/#search=` |
| codepen | `https://codepen.io/search?q=` |
| compassdoc | `http://compass-style.org/search?q=` |
| cssflow | `http://www.cssflow.com/search?q=` |
| dartlang | `https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:` |
| emberjs | `https://www.google.com/search?as_sitesearch=emberjs.com/&as_q=` |
| flowtype | `https://google.com/search?as_sitesearch=flow.org/en/docs/&as_q=` |
| fontello | `http://fontello.com/#search=` |
| github | `https://github.com/search?q=` |
| html5please | `https://html5please.com/#` |
| jestjs | `https://www.google.com/search?as_sitesearch=jestjs.io&as_q=` |
| jquery | `https://api.jquery.com/?s=` |
| lodash | `https://devdocs.io/lodash/index#` |
| mdn | `https://developer.mozilla.org/search?q=` |
| nodejs | `https://www.google.com/search?as_sitesearch=nodejs.org/en/docs/&as_q=` |
| npmjs | `https://www.npmjs.com/search?q=` |
| packagephobia | `https://packagephobia.now.sh/result?p=` |
| qunit | `https://api.qunitjs.com/?s=` |
| reactjs | `https://google.com/search?as_sitesearch=facebook.github.io/react&as_q=` |
| smacss | `https://google.com/search?as_sitesearch=smacss.com&as_q=` |
| stackoverflow | `https://stackoverflow.com/search?q=` |
| typescript | `https://google.com/search?as_sitesearch=www.typescriptlang.org/docs&as_q=` |
| unheap | `http://www.unheap.com/?s=` |
| vuejs | `https://www.google.com/search?as_sitesearch=vuejs.org&as_q=` |
| nextjs | `https://www.google.com/search?as_sitesearch=nextjs.org&as_q=` |
If you want to have another context, open an Issue and tell us!
## Fallback search behaviour
The plugin will use Google as a fallback if the docs site for a search context does not have a search
function. You can set the fallback search engine to DuckDuckGo by setting
`FRONTEND_SEARCH_FALLBACK='duckduckgo'` in your `~/.zshrc` file before Oh My Zsh is sourced.
## DuckDuckGo Lucky Search
Enable DuckDuckGo's "ducky" (lucky) search feature to automatically access the top search result. This feature
is optimized for DuckDuckGo, as Google redirects to an intermediate page. The FRONTEND_SEARCH_FALLBACK_LUCKY
environment variable triggers the use of DuckDuckGo's lucky search, rendering the FRONTEND_SEARCH_FALLBACK
setting unnecessary in this context.
## Author
**Wilson Mendes (willmendesneto)**
- <https://twitter.com/willmendesneto>
- <https://github.com/willmendesneto>

View file

@ -0,0 +1,161 @@
#compdef frontend
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion::complete:frontend:*:commands' group-name commands
zstyle ':completion::complete:frontend:*:frontend_points' group-name frontend_points
zstyle ':completion::complete:frontend::' list-grouped
zmodload zsh/mapfile
function _frontend() {
local CONFIG=$HOME/.frontend-search
local ret=1
local -a commands
local -a frontend_points
frontend_points=( "${(f)mapfile[$CONFIG]//$HOME/~}" )
commands=(
'angular: Search in Angular.io website'
'angularjs: Search in docs.angularjs.org website'
'bem: Search in BEM website'
'bootsnipp: Search in bootsnipp website'
'bundlephobia: Search in Bundlephobia website'
'caniuse: Search in Can I Use website'
'codepen: Search in codepen website'
'compassdoc: Search in COMPASS website'
'cssflow: Search in cssflow website'
'dartlang: Search in Dart website'
'emberjs: Search in Ember website'
'flowtype: Search in Flowtype website'
'fontello: Search in fontello website'
'github: Search in GitHub website'
'html5please: Search in HTML5 Please website'
'jestjs: Search in Jest website'
'jquery: Search in jQuery website'
'lodash: Search in Lo-Dash website'
'mdn: Search in MDN website'
'nodejs: Search in NodeJS website'
'npmjs: Search in npmjs website'
'packagephobia: Search in Packagephobia website'
'qunit: Search in Qunit website'
'reactjs: Search in React website'
'smacss: Search in SMACSS website'
'stackoverflow: Search in StackOverflow website'
'typescript: Search in TypeScript website'
'unheap: Search in unheap website'
'vuejs: Search in VueJS website'
)
_arguments -C \
'1: :->first_arg' \
'2: :->second_arg' && ret=0
case $state in
first_arg)
_describe -t frontend_points "Warp points" frontend_points && ret=0
_describe -t commands "Commands" commands && ret=0
;;
second_arg)
case $words[2] in
jquery)
_describe -t points "Warp points" frontend_points && ret=0
;;
mdn)
_describe -t points "Warp points" frontend_points && ret=0
;;
compassdoc)
_describe -t points "Warp points" frontend_points && ret=0
;;
html5please)
_describe -t points "Warp points" frontend_points && ret=0
;;
caniuse)
_describe -t points "Warp points" frontend_points && ret=0
;;
dartlang)
_describe -t points "Warp points" frontend_points && ret=0
;;
lodash)
_describe -t points "Warp points" frontend_points && ret=0
;;
qunit)
_describe -t points "Warp points" frontend_points && ret=0
;;
fontello)
_describe -t points "Warp points" frontend_points && ret=0
;;
github)
_describe -t points "Warp points" frontend_points && ret=0
;;
bootsnipp)
_describe -t points "Warp points" frontend_points && ret=0
;;
cssflow)
_describe -t points "Warp points" frontend_points && ret=0
;;
codepen)
_describe -t points "Warp points" frontend_points && ret=0
;;
unheap)
_describe -t points "Warp points" frontend_points && ret=0
;;
bem)
_describe -t points "Warp points" frontend_points && ret=0
;;
smacss)
_describe -t points "Warp points" frontend_points && ret=0
;;
angularjs)
_describe -t points "Warp points" frontend_points && ret=0
;;
reactjs)
_describe -t points "Warp points" frontend_points && ret=0
;;
emberjs)
_describe -t points "Warp points" frontend_points && ret=0
;;
stackoverflow)
_describe -t points "Warp points" frontend_points && ret=0
;;
npmjs)
_describe -t points "Warp points" frontend_points && ret=0
;;
bundlephobia)
_describe -t points "Warp points" frontend_points && ret=0
;;
packagephobia)
_describe -t points "Warp points" frontend_points && ret=0
;;
flowtype)
_describe -t points "Warp points" frontend_points && ret=0
;;
typescript)
_describe -t points "Warp points" frontend_points && ret=0
;;
vuejs)
_describe -t points "Warp points" frontend_points && ret=0
;;
nodejs)
_describe -t points "Warp points" frontend_points && ret=0
;;
jestjs)
_describe -t points "Warp points" frontend_points && ret=0
;;
esac
;;
esac
return $ret
}
_frontend "$@"
# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et

View file

@ -0,0 +1,119 @@
alias angular='frontend angular'
alias angularjs='frontend angularjs'
alias bem='frontend bem'
alias bootsnipp='frontend bootsnipp'
alias bundlephobia='frontend bundlephobia'
alias caniuse='frontend caniuse'
alias codepen='frontend codepen'
alias compassdoc='frontend compassdoc'
alias cssflow='frontend cssflow'
alias dartlang='frontend dartlang'
alias emberjs='frontend emberjs'
alias flowtype='frontend flowtype'
alias fontello='frontend fontello'
alias github='frontend github'
alias html5please='frontend html5please'
alias jestjs='frontend jestjs'
alias jquery='frontend jquery'
alias lodash='frontend lodash'
alias mdn='frontend mdn'
alias nodejs='frontend nodejs'
alias npmjs='frontend npmjs'
alias packagephobia='frontend packagephobia'
alias qunit='frontend qunit'
alias reactjs='frontend reactjs'
alias smacss='frontend smacss'
alias stackoverflow='frontend stackoverflow'
alias typescript='frontend typescript'
alias unheap='frontend unheap'
alias vuejs='frontend vuejs'
alias nextjs='frontend nextjs'
function _frontend_fallback() {
if [[ "$FRONTEND_SEARCH_FALLBACK_LUCKY" == "true" ]]; then
case true in
*) echo "https://duckduckgo.com/?q=!ducky+site%3A$1+" ;;
esac
else
case "$FRONTEND_SEARCH_FALLBACK" in
duckduckgo) echo "https://duckduckgo.com/?sites=$1&q=" ;;
*) echo "https://google.com/search?as_sitesearch=$1&as_q=" ;;
esac
fi
}
function frontend() {
emulate -L zsh
# define search context URLS
local -A urls
urls=(
angular 'https://angular.io/?search='
angularjs $(_frontend_fallback 'angularjs.org')
bem $(_frontend_fallback 'bem.info')
bootsnipp 'https://bootsnipp.com/search?q='
bundlephobia 'https://bundlephobia.com/result?p='
caniuse 'https://caniuse.com/#search='
codepen 'https://codepen.io/search/pens?q='
compassdoc 'http://compass-style.org/search?q='
cssflow 'http://www.cssflow.com/search?q='
dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:'
emberjs $(_frontend_fallback 'emberjs.com/')
flowtype $(_frontend_fallback 'flow.org/en/docs/')
fontello 'http://fontello.com/#search='
github 'https://github.com/search?q='
html5please 'https://html5please.com/#'
jestjs $(_frontend_fallback 'jestjs.io')
jquery 'https://api.jquery.com/?s='
lodash 'https://devdocs.io/lodash/index#'
mdn 'https://developer.mozilla.org/search?q='
nodejs $(_frontend_fallback 'nodejs.org/en/docs/')
npmjs 'https://www.npmjs.com/search?q='
packagephobia 'https://packagephobia.now.sh/result?p='
qunit 'https://api.qunitjs.com/?s='
reactjs $(_frontend_fallback 'reactjs.org/')
smacss $(_frontend_fallback 'smacss.com')
stackoverflow 'https://stackoverflow.com/search?q='
typescript $(_frontend_fallback 'www.typescriptlang.org/docs')
unheap 'http://www.unheap.com/?s='
vuejs $(_frontend_fallback 'vuejs.org')
nextjs $(_frontend_fallback 'nextjs.org')
)
# show help for command list
if [[ $# -lt 2 ]]; then
print -P "Usage: frontend %Ucontext%u %Uterm%u [...%Umore%u] (or just: %Ucontext%u %Uterm%u [...%Umore%u])"
print -P ""
print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website,"
print -P "and %Ucontext%u is one of the following:"
print -P ""
print -P " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, packagephobia"
print -P " dartlang, emberjs, fontello, flowtype, github, html5please, jestjs, jquery, lodash,"
print -P " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia, nextjs"
print -P ""
print -P "For example: frontend npmjs mocha (or just: npmjs mocha)."
print -P ""
return 1
fi
# check whether the search context is supported
if [[ -z "$urls[$1]" ]]; then
echo "Search context \"$1\" currently not supported."
echo ""
echo "Valid contexts are:"
echo ""
echo " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, packagephobia"
echo " dartlang, emberjs, fontello, github, html5please, jest, jquery, lodash,"
echo " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia, nextjs"
echo ""
return 1
fi
# build search url:
# join arguments passed with '%20', then append to search context URL
url="${urls[$1]}$(omz_urlencode -P ${@[2,-1]})"
echo "Opening $url ..."
open_command "$url"
}