#!/bin/bash # uses Pygments v2.15.1 for syntax highlighting on applicable file types for path in "$@"; do # match by known filenames filename=$(basename "$path") case "$filename" in .bash_aliases|.bash_environment|.bash_login|.bash_logout|\ .bash_profile|.cshdirs|.cshrc|.profile|.tcshrc|.zlogin|.zlogout|\ .zprofile|bash.bashrc|csh.cshrc|csh.login|csh.logout|ksh.kshrc|zlogin|\ zlogout|zprofile) # shell lexer pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" -l sh "$path" ;; *.1p|*.3pm|*.6pl|*.6pm|*.ABAP|*.ASM|*.BAS|*.C|*.CBL|*.COB|*.CPP|*.CPY|\ *.F|*.F03|*.F90|*.G|*.H|*.ICON|*.MIPS|*.P|*.PRG|*.R|*.Rd|*.Rout|*.S|\ *.SAS|*.VBS|*.[1-9]|*.[gs]sed|*.abap|*.abnf|*.ada|*.adb|*.adl|*.adlf|\ *.adls|*.adlx|*.ado|*.ads|*.aes|*.agda|*.aheui|*.ahk|*.ahkl|*.aj|\ *.alg|*.als|*.ans|*.apl|*.aplc|*.aplf|*.apli|*.apln|*.aplo|\ *.applescript|*.arexx|*.art|*.arw|*.as|*.asax|*.asc|*.ascx|*.ashx|\ *.asm|*.asmx|*.aspx|*.asy|*.at|*.au3|*.aug|*.automount|*.aux|*.awk|\ *.axd|*.b|*.bare|*.bas|*.bash|*.bat|*.bb|*.bbc|*.bc|*.be|*.befunge|\ *.bf|*.bib|*.blp|*.bmx|*.bnf|*.boa|*.boo|*.bpl|*.bro|*.bst|*.bug|\ *.bzl|*.c|*.c++|*.c++-objdump|*.c-objdump|*.cadl|*.camkes|*.capnp|\ *.carbon|*.cbl|*.cc|*.cddl|*.cdf|*.cdl|*.ceylon|*.cf|*.cfc|*.cfg|\ *.cfm|*.cfml|*.chai|*.chpl|*.ci|*.cirru|*.cjs|*.cl|*.clay|*.clj|\ *.cljc|*.cljs|*.cls|*.cmake|*.cmd|*.cml|*.cob|*.coffee|*.comal|*.cp|\ *.cpl|*.cpp|*.cpp-objdump|*.cps|*.cpsa|*.cpy|*.cr|*.crmsh|*.croc|\ *.cry|*.cs|*.csd|*.csh|*.css|*.css.in|*.css.j2|*.css.jinja2|*.cssul4|\ *.cu|*.cuh|*.cw|*.cxx|*.cxx-objdump|*.cyp|*.cypher|*.d|*.d-objdump|\ *.darcspatch|*.dart|*.dasm|*.dasm16|*.dax|*.dcl|*.decls|*.def|\ *.device|*.dg|*.di|*.diff|*.dmesg|*.do|*.docker|*.dot|*.dpatch|*.dpr|\ *.dtd|*.dts|*.dtsi|*.duby|*.duel|*.dyalog|*.dyl|*.dylan|\ *.dylan-console|*.e|*.ebnf|*.ebuild|*.ec|*.ecl|*.eclass|*.edp|*.eex|\ *.eg|*.eh|*.el|*.elm|*.elpi|*.eml|*.eps|*.erl|*.erl-sh|*.es|*.escript|\ *.evoque|*.ex|*.exec|*.exheres-0|*.exlib|*.explain|*.exs|*.exw|*.ezt|\ *.f|*.f03|*.f90|*.factor|*.fan|*.fancypack|*.fc|*.feature|*.fhtml|\ *.fif|*.fish|*.flo|*.flx|*.flxh|*.fnl|*.frag|*.frt|*.fs|*.fsi|*.fst|\ *.fsti|*.fsx|*.fun|*.func|*.fut|*.fy|*.g|*.gap|*.gcode|*.gd|*.gdc|\ *.gemspec|*.geo|*.gi|*.go|*.golo|*.gradle|*.graph|*.graphql|*.groovy|\ *.gs|*.gsp|*.gsql|*.gst|*.gsx|*.gv|*.h|*.h++|*.haml|*.handlebars|\ *.hbs|*.hcl|*.hdp|*.hh|*.hlsl|*.hlsli|*.hpp|*.hrl|*.hs|*.hsail|*.htm|\ *.htm.j2|*.htm.jinja2|*.html|*.html.j2|*.html.jinja2|*.htmlul4|*.hx|\ *.hxml|*.hxsl|*.hxx|*.hy|*.hyb|*.i|*.i6t|*.i7x|*.icl|*.icn|*.icon|\ *.idc|*.idl|*.idl4|*.idr|*.ijs|*.ik|*.inc|*.inf|*.ini|*.ino|\ *.instances|*.intr|*.io|*.ipf|*.isa|*.j|*.jade|*.jag|*.java|*.jbst|\ *.jcl|*.jl|*.jp|*.js|*.js.in|*.js.j2|*.js.jinja2|*.jsgf|*.jslt|*.jsm|\ *.json|*.jsonld|*.jsonnet|*.jsp|*.jsul4|*.juttle|*.jy|*.k|*.kal|*.kid|\ *.kif|*.kk|*.kki|*.kmsg|*.kn|*.ksh|*.kt|*.kts|*.lagda|*.lasso|\ *.lasso[89]|*.lcry|*.lean|*.leex|*.less|*.lgt|*.lhs|*.libsonnet|*.lid|\ *.lidr|*.liquid|*.lisp|*.ll|*.load|*.logtalk|*.lpad|*.ls|*.lsl|*.lsp|\ *.lua|*.ly|*.m|*.m2|*.ma|*.mac|*.mak|*.man|*.mao|*.maql|*.markdown|\ *.mask|*.max|*.mc|*.mcfunction|*.mcschema|*.md|*.mhtml|*.mi|*.mips|\ *.mir|*.mjs|*.mk|*.ml|*.mli|*.mll|*.mly|*.mm|*.mo|*.mod|*.monkey|\ *.moo|*.moon|*.mos|*.mount|*.mq4|*.mq5|*.mqh|*.ms|*.msc|*.mt|*.mu|\ *.mxml|*.myt|*.n|*.nasm|*.nb|*.nbp|*.nc|*.ncl|*.ng2|*.ni|*.nim|\ *.nimrod|*.nit|*.nix|*.nl|*.nqp|*.ns2|*.nsh|*.nsi|*.nt|*.objdump|\ *.objdump-intel|*.odin|*.ooc|*.opa|*.orc|*.p|*.p6|*.p6l|*.p6m|*.pan|\ *.pas|*.patch|*.path|*.pc|*.pcmk|*.peg|*.pem|*.perl|*.php|*.php[345]|\ *.phtml|*.pidl|*.pig|*.pike|*.pl|*.pl6|*.plot|*.plt|*.pm|*.pm6|*.pmod|\ *.po|*.pony|*.portugol|*.pot|*.pov|*.pp|*.praat|*.prg|*.pro|*.proc|\ *.prolog|*.promql|*.properties|*.proto|*.ps|*.ps1|*.psc|*.psi|*.psl|\ *.psm1|*.ptls|*.ptx|*.pug|*.pwn|*.pxd|*.pxi|*.py|*.py2tb|*.py3tb|\ *.pyi|*.pypylog|*.pytb|*.pyul4|*.pyw|*.pyx|*.q|*.qbs|*.qml|*.qvs|\ *.qvto|*.qvw|*.r|*.r3|*.rake|*.raku|*.rakudoc|*.rakumod|*.rakutest|\ *.rb|*.rbw|*.rbx|*.re|*.reb|*.red|*.reds|*.reg|*.rei|*.resource|\ *.rest|*.rex|*.rexx|*.rhtml|*.ride|*.rita|*.rkt|*.rktd|*.rktl|*.rl|\ *.rnc|*.robot|*.rpf|*.rq|*.rql|*.rs|*.rs.in|*.rsl|*.rss|*.rst|*.rts|\ *.run|*.rvt|*.rx|*.s|*.sage|*.sarl|*.sas|*.sass|*.savi|*.sbl|*.sc|\ *.scad|*.scala|*.scaml|*.scd|*.scdoc|*.sce|*.sci|*.scm|*.sco|*.scope|\ *.scss|*.sed|*.service|*.sgf|*.sh|*.sh-session|*.shell-session|*.shen|\ *.shex|*.sieve|*.sig|*.sil|*.siv|*.sl|*.sla|*.slice|*.slim|*.sls|\ *.smali|*.smithy|*.sml|*.smv|*.snbt|*.snobol|*.socket|*.sol|*.sp|\ *.sparql|*.spec|*.spice|*.spt|*.sql|*.sql.j2|*.sql.jinja2|\ *.sqlite3-console|*.ss|*.ssp|*.st|*.stan|*.sv|*.svh|*.swap|*.swg|\ *.swift|*.t|*.tac|*.tal|*.tap|*.target|*.tasm|*.tcl|*.tcsh|*.tea|\ *.teal|*.tex|*.tf|*.thrift|*.thy|*.ti|*.tid|*.timer|*.tlb|*.tmpl|\ *.tnt|*.toc|*.todotxt|*.toml|*.tpl|*.tpp|*.treetop|*.ts|*.tst|*.tt|\ *.ttl|*.twig|*.txt|*.typoscript|*.u|*.u1|*.u2|*.udo|*.ul4|*.usd|\ *.usda|*.v|*.vala|*.vapi|*.vark|*.vb|*.vbs|*.vcl|*.vert|*.vhd|*.vhdl|\ *.vim|*.vm|*.vp|*.vpr|*.wast|*.wat|*.wdiff|*.webidl|*.weechatlog|\ *.wgsl|*.whiley|*.wlua|*.wren|*.wsdl|*.wsf|*.x|*.x10|*.x[bp]m|*.xhtml|\ *.xhtml.j2|*.xhtml.jinja2|*.xi|*.xm|*.xmi|*.xml|*.xml.j2|*.xml.jinja2|\ *.xmlul4|*.xpl|*.xpp|*.xq|*.xql|*.xqm|*.xquery|*.xqy|*.xsd|*.xsl|\ *.xslt|*.xtend|*.xtm|*.xul.in|*.yaml|*.yaml.j2|*.yaml.jinja2|*.yang|\ *.yml|*.yml.j2|*.yml.jinja2|*.zeek|*.zep|*.zig|*.zsh|*Config.in*|\ *Spec.hs|.Renviron|.Rhistory|.Rprofile|.SRCINFO|.bashrc|.editorconfig|\ .exrc|.gvimrc|.htaccess|.kshrc|.vimrc|.zshrc|BUCK|BUILD|BUILD.bazel|\ CMakeLists.txt|Dockerfile|GNUmakefile|Gemfile|Kconfig*|Makefile|\ Makefile.*|PKGBUILD|Pipfile|Pipfile.lock|Procfile|Rakefile|SConscript|\ SConstruct|Singularity|Vagrantfile|WORKSPACE|apache.conf|apache2.conf|\ autodelegate|autohandler|bashrc|control|dhandler|exrc|external.in*|\ gvimrc|iddsa|idecdsa|idecdsask|ided25519|ided25519sk|idrsa|kshrc|\ lighttpd.conf|makefile|meson.build|mesonoptions.txt|nginx.conf|\ pacman.conf|poetry.lock|sources.list|squid.conf|standard-modules.in|\ termcap|termcap.src|terminfo|terminfo.src|todo.txt|vimrc|xorg.conf|\ zshrc) # filename recognized pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path" ;; *) # attempt to parse the lexer from the shebang if it exists lexer=$(head -n 1 "$path" | grep '^#\!' | awk -F" " \ '{ if (/env/) { print $2 } else { sub( /.*\//, ""); print $1;} }') case "$lexer" in node|nodejs) # use `js` lexer for nodejs pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \ -l js "$path" ;; "") # fall-back to plain text exit 1 ;; *) # use lexer alias parsed from the shebang pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \ -l "$lexer" "$path" ;; esac ;; esac done exit 0