<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Permafrost Software</title>
    <description>The latest articles on DEV Community by Permafrost Software (@permafrost).</description>
    <link>https://dev.to/permafrost</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F4628%2F78d57b7b-a621-420c-b2e7-1dc0d2757cdd.png</url>
      <title>DEV Community: Permafrost Software</title>
      <link>https://dev.to/permafrost</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/permafrost"/>
    <language>en</language>
    <item>
      <title>Essential Command Line Tools for Developers</title>
      <dc:creator>Patrick Organ</dc:creator>
      <pubDate>Mon, 15 Jan 2024 13:18:52 +0000</pubDate>
      <link>https://dev.to/permafrost/essential-command-line-tools-for-developers-4838</link>
      <guid>https://dev.to/permafrost/essential-command-line-tools-for-developers-4838</guid>
      <description>&lt;p&gt;As a software developer, having a selection of great command line tools at your disposal is essential.  Once you've harnessed the power of the command line, you're more productive; you have the tools necessary to quickly complete common tasks.&lt;/p&gt;

&lt;p&gt;The following is a list of command line tools I've cultivated over the years in my career as a Software Engineer; most of which I use on a daily basis, and all of which enable me to be highly efficient and productive.&lt;/p&gt;

&lt;p&gt;This list only includes projects that provide native binaries - npm packages such as &lt;code&gt;eslint&lt;/code&gt; or &lt;code&gt;prettier&lt;/code&gt;, while incredibly useful, aren't included.&lt;/p&gt;

&lt;h2&gt;
  
  
  General Utilities
&lt;/h2&gt;

&lt;h4&gt;
  
  
  zyedidia/eget
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/zyedidia" rel="noopener noreferrer"&gt;
        zyedidia
      &lt;/a&gt; / &lt;a href="https://github.com/zyedidia/eget" rel="noopener noreferrer"&gt;
        eget
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Easily install prebuilt binaries from GitHub.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Eget: easy pre-built binary installation&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://goreportcard.com/report/github.com/zyedidia/eget" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9625372daca671780325b135ca38c247daaecc920879a41d1090d99aeccc56a7/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f7a796564696469612f65676574" alt="Go Report Card"&gt;&lt;/a&gt;
&lt;a href="https://github.com/zyedidia/eget/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3a97fccddd90dfab14c7fba1999d2d053870ecc8c2a11e141e7b154867cbd457/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f7a796564696469612f656765742e7376673f6c6162656c3d52656c65617365" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/zyedidia/eget/blob/master/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="MIT License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eget&lt;/strong&gt; is the best way to easily get pre-built binaries for your favorite
tools. It downloads and extracts pre-built binaries from releases on GitHub. To
use it, provide a repository and Eget will search through the assets from the
latest release in an attempt to find a suitable prebuilt binary for your
system. If one is found, the asset will be downloaded and Eget will extract the
binary to the current directory. Eget should only be used for installing
simple, static prebuilt binaries, where the extracted binary is all that is
needed for installation. For more complex installation, you may use the
&lt;code&gt;--download-only&lt;/code&gt; option, and perform extraction manually.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/zyedidia/blobs/blob/master/eget-demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fzyedidia%2Fblobs%2Fraw%2Fmaster%2Feget-demo.gif" alt="Eget Demo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For software maintainers, if you provide prebuilt binaries on GitHub, you can
list &lt;code&gt;eget&lt;/code&gt; as a one-line method for users to install your software.&lt;/p&gt;
&lt;p&gt;Eget has a number of detection mechanisms and should work out-of-the-box with
most…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/zyedidia/eget" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  zyedidia/micro
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/zyedidia" rel="noopener noreferrer"&gt;
        zyedidia
      &lt;/a&gt; / &lt;a href="https://github.com/zyedidia/micro" rel="noopener noreferrer"&gt;
        micro
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A modern and intuitive terminal-based text editor
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/zyedidia/micro/./assets/micro-logo-drop.svg"&gt;&lt;img alt="micro logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fzyedidia%2Fmicro%2F.%2Fassets%2Fmicro-logo-drop.svg" width="500px"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/zyedidia/micro/actions/workflows/test.yaml/badge.svg"&gt;&lt;img src="https://github.com/zyedidia/micro/actions/workflows/test.yaml/badge.svg" alt="Test Workflow"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/zyedidia/micro/v2" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fbb98bcab296ec5c0c9e1b78c720814ef127643a0bb01ba3b6f973452987274c/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f7a796564696469612f6d6963726f2f7632" alt="Go Report Card"&gt;&lt;/a&gt;
&lt;a href="https://github.com/zyedidia/micro/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0b074d53e130cb3bddfceb5c51c72ad6c86d812ae77b362fb2ce84567d8bab75/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f7a796564696469612f6d6963726f2e7376673f6c6162656c3d52656c65617365" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/zyedidia/micro/blob/master/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="MIT License"&gt;&lt;/a&gt;
&lt;a href="https://gitter.im/zyedidia/micro?utm_source=badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=pr-badge&amp;amp;utm_content=badge" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/32fbefefe528f99e30cf48aa3a391e8d5f812f30070f122fc73eeaf5cb18be00/68747470733a2f2f6261646765732e6769747465722e696d2f7a796564696469612f6d6963726f2e737667" alt="Join the chat at https://gitter.im/zyedidia/micro"&gt;&lt;/a&gt;
&lt;a href="https://snapcraft.io/micro" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/eb5b98ef27870f515920fe59533b2d489d57e459d3c347bb047687c46b37c7f6/68747470733a2f2f736e617063726166742e696f2f6d6963726f2f62616467652e737667" alt="Snap Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;micro&lt;/strong&gt; is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities
of modern terminals. It comes as a single, batteries-included, static binary with no dependencies; you can download and use it right now!&lt;/p&gt;
&lt;p&gt;As its name indicates, micro aims to be somewhat of a successor to the nano editor by being easy to install and use
It strives to be enjoyable as a full-time editor for people who prefer to work in a terminal, or those who regularly edit files over SSH.&lt;/p&gt;
&lt;p&gt;Here is a picture of micro editing its source code.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/zyedidia/micro/./assets/micro-solarized.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fzyedidia%2Fmicro%2F.%2Fassets%2Fmicro-solarized.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To see more screenshots of micro, showcasing some of the default color schemes, see &lt;a href="https://micro-editor.github.io" rel="nofollow noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also check out the website for Micro at &lt;a href="https://micro-editor.github.io" rel="nofollow noopener noreferrer"&gt;https://micro-editor.github.io&lt;/a&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Easy to use and install.&lt;/li&gt;
&lt;li&gt;No dependencies or external files are needed — just the binary you can…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/zyedidia/micro" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  stedolan/jq
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/jqlang" rel="noopener noreferrer"&gt;
        jqlang
      &lt;/a&gt; / &lt;a href="https://github.com/jqlang/jq" rel="noopener noreferrer"&gt;
        jq
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Command-line JSON processor
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;jq&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;jq&lt;/code&gt; is a lightweight and flexible command-line JSON processor akin to &lt;code&gt;sed&lt;/code&gt;,&lt;code&gt;awk&lt;/code&gt;,&lt;code&gt;grep&lt;/code&gt;, and friends for JSON data. It's written in portable C and has zero runtime dependencies, allowing you to easily slice, filter, map, and transform structured data.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Official Documentation&lt;/strong&gt;: &lt;a href="https://jqlang.org" rel="nofollow noopener noreferrer"&gt;jqlang.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try jq Online&lt;/strong&gt;: &lt;a href="https://play.jqlang.org" rel="nofollow noopener noreferrer"&gt;play.jqlang.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prebuilt Binaries&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Download the latest releases from the &lt;a href="https://github.com/jqlang/jq/releases" rel="noopener noreferrer"&gt;GitHub release page&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Docker Image&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Pull the &lt;a href="https://github.com/jqlang/jq/pkgs/container/jq" rel="noopener noreferrer"&gt;jq image&lt;/a&gt; to start quickly with Docker.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Run with Docker&lt;/h4&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h5 class="heading-element"&gt;Example: Extracting the version from a &lt;code&gt;package.json&lt;/code&gt; file&lt;/h5&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;docker run --rm -i ghcr.io/jqlang/jq:latest &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt; package.json &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;.version&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h5 class="heading-element"&gt;Example: Extracting the version from a &lt;code&gt;package.json&lt;/code&gt; file with a mounted volume&lt;/h5&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;docker run --rm -i -v &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;span class="pl-smi"&gt;$PWD&lt;/span&gt;:&lt;span class="pl-smi"&gt;$PWD&lt;/span&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt; -w &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;span class="pl-smi"&gt;$PWD&lt;/span&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt; ghcr.io/jqlang/jq:latest &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;.version&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt; package.json&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Building from source&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Dependencies&lt;/h4&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;libtool&lt;/li&gt;
&lt;li&gt;make&lt;/li&gt;
&lt;li&gt;automake&lt;/li&gt;
&lt;li&gt;autoconf&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Instructions&lt;/h4&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-text-shell-session notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;git submodule update --init    # if building from git to get&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/jqlang/jq" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  ggreer/the_silver_searcher (ag)
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ggreer" rel="noopener noreferrer"&gt;
        ggreer
      &lt;/a&gt; / &lt;a href="https://github.com/ggreer/the_silver_searcher" rel="noopener noreferrer"&gt;
        the_silver_searcher
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A code-searching tool similar to ack, but faster.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;The Silver Searcher&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A code searching tool similar to &lt;code&gt;ack&lt;/code&gt;, with a focus on speed.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/ggreer/the_silver_searcher" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/671f3263dd37e4bbb7daebf518702e6b8775b20e8b30f63fae4afd1e32533701/68747470733a2f2f7472617669732d63692e6f72672f6767726565722f7468655f73696c7665725f73656172636865722e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://floobits.com/ggreer/ag/redirect" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d353692add0eaa781dc6e485b8d7e93d79fa2d31ad24c369860cd9b8417f6dfd/68747470733a2f2f666c6f6f626974732e636f6d2f6767726565722f61672e737667" alt="Floobits Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://webchat.freenode.net/?channels=ag" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4924da7e25e5cb4c53e5c0b9a4a140090b0b445d3c0db6354e96dfb1fca0e29f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f467265656e6f64652d25323361672d627269676874677265656e2e737667" alt="#ag on Freenode"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Do you know C? Want to improve ag? &lt;a href="http://geoff.greer.fm/2014/10/13/help-me-get-to-ag-10/" rel="nofollow noopener noreferrer"&gt;I invite you to pair with me&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What's so great about Ag?&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;It is an order of magnitude faster than &lt;code&gt;ack&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It ignores file patterns from your &lt;code&gt;.gitignore&lt;/code&gt; and &lt;code&gt;.hgignore&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If there are files in your source repo you don't want to search, just add their patterns to a &lt;code&gt;.ignore&lt;/code&gt; file. (*cough* &lt;code&gt;*.min.js&lt;/code&gt; *cough*)&lt;/li&gt;
&lt;li&gt;The command name is 33% shorter than &lt;code&gt;ack&lt;/code&gt;, and all keys are on the home row!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ag is quite stable now. Most changes are new features, minor bug fixes, or performance improvements. It's much faster than Ack in my benchmarks:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;ack test_blah ~/code/  104.66s user 4.82s system 99% cpu 1:50.03 total

ag test_blah ~/code/  4.67s user 4.58s system 286% cpu 3.227 total
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ack and Ag found the same…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ggreer/the_silver_searcher" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  chmln/sd
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/chmln" rel="noopener noreferrer"&gt;
        chmln
      &lt;/a&gt; / &lt;a href="https://github.com/chmln/sd" rel="noopener noreferrer"&gt;
        sd
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Intuitive find &amp;amp; replace CLI (sed alternative)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;sd - &lt;code&gt;s&lt;/code&gt;earch &amp;amp; &lt;code&gt;d&lt;/code&gt;isplace&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;sd&lt;/code&gt; is an intuitive find &amp;amp; replace CLI.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Pitch&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Why use it over any existing tools?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Painless regular expressions.&lt;/em&gt;   &lt;code&gt;sd&lt;/code&gt; uses regex syntax that you already know from JavaScript and Python. Forget about dealing with quirks of &lt;code&gt;sed&lt;/code&gt; or &lt;code&gt;awk&lt;/code&gt; - get productive immediately.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;String-literal mode.&lt;/em&gt;   Non-regex find &amp;amp; replace. No more backslashes or remembering which characters are special and need to be escaped.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Easy to read, easy to write.&lt;/em&gt;   Find &amp;amp; replace expressions are split up, which makes them easy to read and write. No more messing with unclosed and escaped slashes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Smart, common-sense defaults.&lt;/em&gt;   Defaults follow common sense and are tailored for typical daily use.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Comparison to sed&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;While sed does a whole lot more, sd focuses on doing just one thing and doing it well. Here are some cherry-picked examples where sd shines.&lt;/p&gt;
&lt;p&gt;Simpler syntax for replacing all occurrences:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;…&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/chmln/sd" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  sharkdp/bat
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sharkdp" rel="noopener noreferrer"&gt;
        sharkdp
      &lt;/a&gt; / &lt;a href="https://github.com/sharkdp/bat" rel="noopener noreferrer"&gt;
        bat
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A cat(1) clone with wings.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/sharkdp/bat/doc/logo-header.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsharkdp%2Fbat%2Fdoc%2Flogo-header.svg" alt="bat - a cat clone with wings"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;a href="https://github.com/sharkdp/bat/actions?query=workflow%3ACICD" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/sharkdp/bat/workflows/CICD/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b98ad4c1ad5d45c3db1f6c9c7cf661697d40ead67b2edc6f00580da600d38099/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f6c2f6261742e737667"&gt;&lt;img src="https://camo.githubusercontent.com/b98ad4c1ad5d45c3db1f6c9c7cf661697d40ead67b2edc6f00580da600d38099/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f6c2f6261742e737667" alt="license"&gt;&lt;/a&gt;
  &lt;a href="https://crates.io/crates/bat" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f1890bc7fd1e2c8b70eb84883757888d5844bd76a01d2d135ee4799338d437db/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f762f6261742e7376673f636f6c6f72423d333139653863" alt="Version info"&gt;&lt;/a&gt;&lt;br&gt;
  A &lt;i&gt;cat(1)&lt;/i&gt; clone with syntax highlighting and Git integration
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/sharkdp/bat#syntax-highlighting" rel="noopener noreferrer"&gt;Key Features&lt;/a&gt; •
  &lt;a href="https://github.com/sharkdp/bat#how-to-use" rel="noopener noreferrer"&gt;How To Use&lt;/a&gt; •
  &lt;a href="https://github.com/sharkdp/bat#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt; •
  &lt;a href="https://github.com/sharkdp/bat#customization" rel="noopener noreferrer"&gt;Customization&lt;/a&gt; •
  &lt;a href="https://github.com/sharkdp/bat#project-goals-and-alternatives" rel="noopener noreferrer"&gt;Project goals, alternatives&lt;/a&gt;&lt;br&gt;
  [English]
  [&lt;a href="https://github.com/sharkdp/bat/doc/README-zh.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt;]
  [&lt;a href="https://github.com/sharkdp/bat/doc/README-ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;]
  [&lt;a href="https://github.com/sharkdp/bat/doc/README-ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt;]
  [&lt;a href="https://github.com/sharkdp/bat/doc/README-ru.md" rel="noopener noreferrer"&gt;Русский&lt;/a&gt;]
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Sponsors&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;A special &lt;em&gt;thank you&lt;/em&gt; goes to our biggest &lt;a href="https://github.com/sharkdp/bat/doc/sponsors.md" rel="noopener noreferrer"&gt;sponsors&lt;/a&gt;:&lt;br&gt;&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://www.warp.dev/bat" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsharkdp%2Fbat%2Fdoc%2Fsponsors%2Fwarp-logo.png" width="200" alt="Warp"&gt;
  &lt;br&gt;
  &lt;strong&gt;Warp, the intelligent terminal&lt;/strong&gt;
  &lt;br&gt;
  Available on MacOS, Linux, Windows
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://graphite.dev/?utm_source=github&amp;amp;utm_medium=repo&amp;amp;utm_campaign=bat" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsharkdp%2Fbat%2Fdoc%2Fsponsors%2Fgraphite-logo.jpeg" width="200" alt="Graphite"&gt;
  &lt;br&gt;
  &lt;strong&gt;Graphite is the AI developer productivity platform helping&lt;br&gt;teams on GitHub ship higher quality software, faster&lt;/strong&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Syntax highlighting&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;code&gt;bat&lt;/code&gt; supports syntax highlighting for a large number of programming and markup
languages:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a9789c5200bdb0a22602643d7bf85f0f424ddd4259e763abc865609010c5e228/68747470733a2f2f696d6775722e636f6d2f724773646e44652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/a9789c5200bdb0a22602643d7bf85f0f424ddd4259e763abc865609010c5e228/68747470733a2f2f696d6775722e636f6d2f724773646e44652e706e67" alt="Syntax highlighting example"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Git integration&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;code&gt;bat&lt;/code&gt; communicates with &lt;code&gt;git&lt;/code&gt; to show modifications with respect to the index
(see left side bar):&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/43e40bf9c20d5ceda8fa67f1d95b5c66548b2f6f8dca8403e08129991cc32966/68747470733a2f2f692e696d6775722e636f6d2f326c53573452452e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/43e40bf9c20d5ceda8fa67f1d95b5c66548b2f6f8dca8403e08129991cc32966/68747470733a2f2f692e696d6775722e636f6d2f326c53573452452e706e67" alt="Git integration example"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Show non-printable characters&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;You can use the &lt;code&gt;-A&lt;/code&gt;/&lt;code&gt;--show-all&lt;/code&gt; option to show and highlight non-printable
characters:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/53fa5d4d298aafad2d5baf2312865d0fe5fb2a130bdc8e21d7f534f39f76e29b/68747470733a2f2f692e696d6775722e636f6d2f576e64477039482e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/53fa5d4d298aafad2d5baf2312865d0fe5fb2a130bdc8e21d7f534f39f76e29b/68747470733a2f2f692e696d6775722e636f6d2f576e64477039482e706e67" alt="Non-printable character example"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Automatic paging&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;By default, &lt;code&gt;bat&lt;/code&gt; pipes its own output to a pager (e.g. &lt;code&gt;less&lt;/code&gt;) if the output is too large for one screen
If you would rather …&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sharkdp/bat" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  charmbracelet/mods
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/charmbracelet" rel="noopener noreferrer"&gt;
        charmbracelet
      &lt;/a&gt; / &lt;a href="https://github.com/charmbracelet/mods" rel="noopener noreferrer"&gt;
        mods
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI on the command line
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Mods&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/25087/237975607-5442bf46-b908-47af-bf4e-60f7c38951c4.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjI1ODY1NjEsIm5iZiI6MTc2MjU4NjI2MSwicGF0aCI6Ii8yNTA4Ny8yMzc5NzU2MDctNTQ0MmJmNDYtYjkwOC00N2FmLWJmNGUtNjBmN2MzODk1MWM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTA4VDA3MTc0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFiOTExNWFkZDEwZDczZWZmMDNiMGU2ZDA5OThkMGY2YzVjNjBmYTcwNTY1ZTA2MzMxNTA3ZjZjYmVjYWQ5NGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.lBNwKgD3jURjHARlD619MVmm2DqpsrhG1d6MXEpn4lU"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F25087%2F237975607-5442bf46-b908-47af-bf4e-60f7c38951c4.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjI1ODY1NjEsIm5iZiI6MTc2MjU4NjI2MSwicGF0aCI6Ii8yNTA4Ny8yMzc5NzU2MDctNTQ0MmJmNDYtYjkwOC00N2FmLWJmNGUtNjBmN2MzODk1MWM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTA4VDA3MTc0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFiOTExNWFkZDEwZDczZWZmMDNiMGU2ZDA5OThkMGY2YzVjNjBmYTcwNTY1ZTA2MzMxNTA3ZjZjYmVjYWQ5NGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.lBNwKgD3jURjHARlD619MVmm2DqpsrhG1d6MXEpn4lU" width="630" alt="Mods product art and type treatment"&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;a href="https://github.com/charmbracelet/mods/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bfeaf67dac6e6a332598ab45010f238651dcf97a6315d462196294f6e01ac777/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f636861726d62726163656c65742f6d6f64732e737667" alt="Latest Release"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/charmbracelet/mods/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/charmbracelet/mods/workflows/build/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;AI for the command line, built for pipelines.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f821f433e5d8643967ce22ad541c8959a8b6bd0f74f529c8a29da7263b18181e/68747470733a2f2f7668732e636861726d2e73682f7668732d3555796a305536486c7169314c5649495279594b4d352e676966"&gt;&lt;img src="https://camo.githubusercontent.com/f821f433e5d8643967ce22ad541c8959a8b6bd0f74f529c8a29da7263b18181e/68747470733a2f2f7668732e636861726d2e73682f7668732d3555796a305536486c7169314c5649495279594b4d352e676966" width="900" alt="a GIF of mods running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Large Language Models (LLM) based AI is useful to ingest command output and
format results in Markdown, JSON, and other text based formats. Mods is a
tool to add a sprinkle of AI in your command line and make your pipelines
artificially intelligent.&lt;/p&gt;
&lt;p&gt;It works great with LLMs running locally through &lt;a href="https://github.com/go-skynet/LocalAI" rel="noopener noreferrer"&gt;LocalAI&lt;/a&gt;. You can also use
&lt;a href="https://platform.openai.com/account/api-keys" rel="nofollow noopener noreferrer"&gt;OpenAI&lt;/a&gt;, &lt;a href="https://dashboard.cohere.com/api-keys" rel="nofollow noopener noreferrer"&gt;Cohere&lt;/a&gt;, &lt;a href="https://console.groq.com/keys" rel="nofollow noopener noreferrer"&gt;Groq&lt;/a&gt;, or &lt;a href="https://azure.microsoft.com/en-us/products/cognitive-services/openai-service" rel="nofollow noopener noreferrer"&gt;Azure OpenAI&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Use a package manager:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; macOS or Linux&lt;/span&gt;
brew install charmbracelet/tap/mods

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Windows (with Winget)&lt;/span&gt;
winget install charmbracelet.mods

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Arch Linux (btw)&lt;/span&gt;
yay -S mods

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Nix&lt;/span&gt;
nix-shell -p mods&lt;/pre&gt;

&lt;/div&gt;

Debian/Ubuntu
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key &lt;span class="pl-k"&gt;|&lt;/span&gt; sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
&lt;span class="pl-c1"&gt;echo&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install mods&lt;/pre&gt;

&lt;/div&gt;


Fedora/RHEL
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;echo&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;[charm]&lt;/span&gt;
&lt;span class="pl-s"&gt;name=Charm&lt;/span&gt;
&lt;span class="pl-s"&gt;baseurl=https://repo.charm.sh/yum/&lt;/span&gt;
&lt;span class="pl-s"&gt;enabled=1&lt;/span&gt;
&lt;span class="pl-s"&gt;gpgcheck=1&lt;/span&gt;
&lt;span class="pl-s"&gt;gpgkey=https://repo.charm.sh/yum/gpg.key&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/charmbracelet/mods" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Development
&lt;/h2&gt;

&lt;h4&gt;
  
  
  go-task/task
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/go-task" rel="noopener noreferrer"&gt;
        go-task
      &lt;/a&gt; / &lt;a href="https://github.com/go-task/task" rel="noopener noreferrer"&gt;
        task
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A task runner / simpler Make alternative written in Go
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a href="https://taskfile.dev" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fgo-task%2Ftask%2Fwebsite%2Fsrc%2Fpublic%2Fimg%2Flogo.svg" width="200px" height="200px"&gt;
  &lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Task&lt;/h1&gt;

&lt;/div&gt;
  &lt;p&gt;
    Task is a task runner / build tool that aims to be simpler and easier to use than, for example, &lt;a href="https://www.gnu.org/software/make/" rel="nofollow noopener noreferrer"&gt;GNU Make&lt;/a&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://taskfile.dev/installation/" rel="nofollow noopener noreferrer"&gt;Installation&lt;/a&gt; | &lt;a href="https://taskfile.dev/usage/" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt; | &lt;a href="https://twitter.com/taskfiledev" rel="nofollow noopener noreferrer"&gt;Twitter&lt;/a&gt; | &lt;a href="https://bsky.app/profile/taskfile.dev" rel="nofollow noopener noreferrer"&gt;Bluesky&lt;/a&gt; | &lt;a href="https://fosstodon.org/@task" rel="nofollow noopener noreferrer"&gt;Mastodon&lt;/a&gt; | &lt;a href="https://discord.gg/6TY36E39UK" rel="nofollow noopener noreferrer"&gt;Discord&lt;/a&gt;
  &lt;/p&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Gold Sponsors&lt;/h1&gt;

&lt;/div&gt;
  &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
    &lt;tbody&gt;
&lt;tr&gt;
      &lt;td&gt;
        &lt;a href="https://devowl.io" rel="nofollow noopener noreferrer"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fgo-task%2Ftask%2Fwebsite%2Fsrc%2Fpublic%2Fimg%2Fdevowl.io.svg" height="100px" width="200px" title="devowl.io"&gt;
        &lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
        &lt;a href="https://magic.dev/" rel="nofollow noopener noreferrer"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fgo-task%2Ftask%2Fwebsite%2Fsrc%2Fpublic%2Fimg%2Fmagic.png" height="100px" width="200px" title="Magic"&gt;
        &lt;/a&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/go-task/task" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h4&gt;
  
  
  cli/cli
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/cli" rel="noopener noreferrer"&gt;
        cli
      &lt;/a&gt; / &lt;a href="https://github.com/cli/cli" rel="noopener noreferrer"&gt;
        cli
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      GitHub’s official command line tool
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;GitHub CLI&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;gh&lt;/code&gt; is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with &lt;code&gt;git&lt;/code&gt; and your code.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/98482/84171218-327e7a80-aa40-11ea-8cd1-5177fc2d0e72.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F98482%2F84171218-327e7a80-aa40-11ea-8cd1-5177fc2d0e72.png" alt="screenshot of gh pr status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;GitHub CLI is supported for users on GitHub.com, GitHub Enterprise Cloud, and GitHub Enterprise Server 2.20+ with support for macOS, Windows, and Linux.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;For &lt;a href="https://github.com/cli/cli#installation" rel="noopener noreferrer"&gt;installation options see below&lt;/a&gt;, for usage instructions &lt;a href="https://cli.github.com/manual/" rel="noopener noreferrer"&gt;see the manual&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;If anything feels off or if you feel that some functionality is missing, please check out the &lt;a href="https://github.com/cli/cli/.github/CONTRIBUTING.md" rel="noopener noreferrer"&gt;contributing page&lt;/a&gt;. There you will find instructions for sharing your feedback, building the tool locally, and submitting pull requests to the project.&lt;/p&gt;
&lt;p&gt;If you are a hubber and are interested in shipping new commands for the CLI, check out our &lt;a href="https://github.com/cli/cli/docs/working-with-us.md" rel="noopener noreferrer"&gt;doc on internal contributions&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;a href="https://github.com/cli/cli/docs/install_macos.md" rel="noopener noreferrer"&gt;macOS&lt;/a&gt;&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/cli/cli/docs/install_macos.md#homebrew" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cli/cli/docs/install_macos.md#precompiled-binaries" rel="noopener noreferrer"&gt;Precompiled binaries&lt;/a&gt; on &lt;a href="https://github.com/cli/cli/releases/latest" rel="noopener noreferrer"&gt;releases page&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For additional macOS packages and installers, see &lt;a href="https://github.com/cli/cli/docs/install_macos.md#community-unofficial" rel="noopener noreferrer"&gt;community-supported docs&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/cli/cli" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  boyter/scc
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/boyter" rel="noopener noreferrer"&gt;
        boyter
      &lt;/a&gt; / &lt;a href="https://github.com/boyter/scc" rel="noopener noreferrer"&gt;
        scc
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Sloc, Cloc and Code: scc is a very fast accurate code counter with complexity calculations and COCOMO estimates written in pure Go
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Sloc Cloc and Code (scc)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/boyter/scc/./scc.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fboyter%2Fscc%2F.%2Fscc.jpg" alt="SCC illustration"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A tool similar to cloc, sloccount and tokei. For counting the lines of code, blank lines, comment lines, and physical lines of source code in many programming languages.&lt;/p&gt;
&lt;p&gt;Goal is to be the fastest code counter possible, but also perform COCOMO calculation like sloccount, estimate code complexity similar to cyclomatic complexity calculators and produce unique lines of code or DRYness metrics. In short one tool to rule them all.&lt;/p&gt;
&lt;p&gt;Also it has a very short name which is easy to type &lt;code&gt;scc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you don't like sloc cloc and code feel free to use the name &lt;code&gt;Succinct Code Counter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/boyter/scc/actions/workflows/go.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/boyter/scc/actions/workflows/go.yml/badge.svg" alt="Go"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/boyter/scc" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/84fc1d58753029f812f5f4c86927720614233f8343b825691f93c44cf3d613f8/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f626f797465722f736363" alt="Go Report Card"&gt;&lt;/a&gt;
&lt;a href="https://coveralls.io/github/boyter/scc?branch=master" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2ea2a40c233de03a1bd1ad386f785baf91f3dc23adc5364d4b769a60bb9d3e25/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f626f797465722f7363632f62616467652e7376673f6272616e63683d6d6173746572" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/boyter/scc/" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3dcd70ecff41ed21fcec0cecbc0f5a59d439324da9b709a68fcdee1564500078/68747470733a2f2f736c6f632e78797a2f6769746875622f626f797465722f7363632f" alt="Scc Count Badge"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/eb039c12ad6201e7193aff59675291e5d0fdc82a8d14f03ebc392c44e726d04a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f626f797465722f7363632f746f74616c3f6c6162656c3d646f776e6c6f6164732532302532384748253239"&gt;&lt;img src="https://camo.githubusercontent.com/eb039c12ad6201e7193aff59675291e5d0fdc82a8d14f03ebc392c44e726d04a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f626f797465722f7363632f746f74616c3f6c6162656c3d646f776e6c6f6164732532302532384748253239" alt="Scc count downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/avelino/awesome-go" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d8b2bde4796b67266f07c7a619f554c926ca4750d5d8861b4b740baaddc3fd1e/68747470733a2f2f617765736f6d652e72652f6d656e74696f6e65642d62616467652e737667" alt="Mentioned in Awesome Go"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Licensed under MIT licence.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#install" rel="noopener noreferrer"&gt;Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#background" rel="noopener noreferrer"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#pitch" rel="noopener noreferrer"&gt;Pitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#usage" rel="noopener noreferrer"&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#complexity-estimates" rel="noopener noreferrer"&gt;Complexity Estimates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#unique-lines-of-code-uloc" rel="noopener noreferrer"&gt;Unique Lines of Code (ULOC)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#cocomo" rel="noopener noreferrer"&gt;COCOMO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#output-formats" rel="noopener noreferrer"&gt;Output Formats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#performance" rel="noopener noreferrer"&gt;Performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#development" rel="noopener noreferrer"&gt;Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#addingmodifying-languages" rel="noopener noreferrer"&gt;Adding/Modifying Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#issues" rel="noopener noreferrer"&gt;Issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#badges-beta" rel="noopener noreferrer"&gt;Badges (beta)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc/LANGUAGES.md" rel="noopener noreferrer"&gt;Language Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/boyter/scc#citation" rel="noopener noreferrer"&gt;Citation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;scc for Teams &amp;amp; Enterprise&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;While scc will always be a free and…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/boyter/scc" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  dandavison/delta
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dandavison" rel="noopener noreferrer"&gt;
        dandavison
      &lt;/a&gt; / &lt;a href="https://github.com/dandavison/delta" rel="noopener noreferrer"&gt;
        delta
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A syntax-highlighting pager for git, diff, grep, and blame output
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/52205/147996902-9829bd3f-cd33-466e-833e-49a6f3ebd623.png"&gt;&lt;img width="400px" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F52205%2F147996902-9829bd3f-cd33-466e-833e-49a6f3ebd623.png" alt="image"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/dandavison/delta/actions" rel="noopener noreferrer"&gt;
    &lt;img src="https://github.com/dandavison/delta/workflows/Continuous%20Integration/badge.svg" alt="CI"&gt;
  &lt;/a&gt;
  &lt;a href="https://coveralls.io/github/dandavison/delta?branch=main" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/e8785ac8ede00f6ec8ad672e5031d27eb6eb5a599d56b232a469b9824f76753c/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f64616e64617669736f6e2f64656c74612f62616467652e7376673f6272616e63683d6d61696e" alt="Coverage Status"&gt;
  &lt;/a&gt;
  &lt;a href="https://gitter.im/dandavison-delta/community?utm_source=badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=pr-badge" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/6c92914f6e39c859372cd85d6c7676c73d524f994663f1ae0e2b0b566a0e1361/68747470733a2f2f6261646765732e6769747465722e696d2f64616e64617669736f6e2d64656c74612f636f6d6d756e6974792e737667" alt="Gitter"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Get Started&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://dandavison.github.io/delta/installation.html" rel="nofollow noopener noreferrer"&gt;Install it&lt;/a&gt; (the package is called "git-delta" in most package managers, but the executable is just &lt;code&gt;delta&lt;/code&gt;) and add this to your &lt;code&gt;~/.gitconfig&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight highlight-source-gitconfig notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;[&lt;span class="pl-e"&gt;core&lt;/span&gt;]
    &lt;span class="pl-v"&gt;pager&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;delta&lt;/span&gt;

[&lt;span class="pl-e"&gt;interactive&lt;/span&gt;]
    &lt;span class="pl-v"&gt;diffFilter&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;delta&lt;/span&gt; &lt;span class="pl-s"&gt;--color-only&lt;/span&gt;

[&lt;span class="pl-e"&gt;delta&lt;/span&gt;]
    &lt;span class="pl-v"&gt;navigate&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;true&lt;/span&gt;  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; use n and N to move between diff sections&lt;/span&gt;
    &lt;span class="pl-v"&gt;dark&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;true&lt;/span&gt;      &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or light = true, or omit for auto-detection&lt;/span&gt;

[&lt;span class="pl-e"&gt;merge&lt;/span&gt;]
    &lt;span class="pl-v"&gt;conflictStyle&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;zdiff3&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Or run:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git config --global core.pager delta
git config --global interactive.diffFilter &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;delta --color-only&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
git config --global delta.navigate &lt;span class="pl-c1"&gt;true&lt;/span&gt;
git config --global merge.conflictStyle zdiff3&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Delta has many features and is very customizable; please see &lt;code&gt;delta -h&lt;/code&gt; (short help) or &lt;code&gt;delta --help&lt;/code&gt; (full manual), or the &lt;a href="https://dandavison.github.io/delta/" rel="nofollow noopener noreferrer"&gt;online user manual&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Language syntax highlighting with the same syntax-highlighting themes as &lt;a href="https://github.com/sharkdp/bat#readme" rel="noopener noreferrer"&gt;bat&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Word-level diff highlighting using a Levenshtein edit inference algorithm&lt;/li&gt;
&lt;li&gt;Side-by-side view with line-wrapping&lt;/li&gt;
&lt;li&gt;Line numbering&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dandavison/delta" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h4&gt;
  
  
  nektos/act
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nektos" rel="noopener noreferrer"&gt;
        nektos
      &lt;/a&gt; / &lt;a href="https://github.com/nektos/act" rel="noopener noreferrer"&gt;
        act
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Run your GitHub Actions locally 🚀
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/wiki/nektos/act/img/logo-150.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fwiki%2Fnektos%2Fact%2Fimg%2Flogo-150.png" alt="act-logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Overview &lt;a href="https://github.com/nektos/act/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/nektos/act/workflows/push/badge.svg?branch=master&amp;amp;event=push" alt="push"&gt;&lt;/a&gt; &lt;a href="https://goreportcard.com/report/github.com/nektos/act" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/85c19cff19fdfc01ef44040d70d947337c6951389cf37b80ebffb57da41295fb/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f6e656b746f732f616374" alt="Go Report Card"&gt;&lt;/a&gt; &lt;a href="https://github.com/jonico/awesome-runners" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7e9d420a1f5da7c99ba3ca9120d4c58bb231036904bcfd89dab61f6f5c4514b1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c69737465642532306f6e2d617765736f6d652d2d72756e6e6572732d626c75652e737667" alt="awesome-runners"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;"Think globally, &lt;code&gt;act&lt;/code&gt; locally"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Run your &lt;a href="https://developer.github.com/actions/" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt; locally! Why would you want to do this? Two reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fast Feedback&lt;/strong&gt; - Rather than having to commit/push every time you want to test out the changes you are making to your &lt;code&gt;.github/workflows/&lt;/code&gt; files (or for any changes to embedded GitHub actions), you can use &lt;code&gt;act&lt;/code&gt; to run the actions locally. The &lt;a href="https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables" rel="noopener noreferrer"&gt;environment variables&lt;/a&gt; and &lt;a href="https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners#filesystems-on-github-hosted-runners" rel="noopener noreferrer"&gt;filesystem&lt;/a&gt; are all configured to match what GitHub provides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Task Runner&lt;/strong&gt; - I love &lt;a href="https://en.wikipedia.org/wiki/Make_(software)" rel="nofollow noopener noreferrer"&gt;make&lt;/a&gt;. However, I also hate repeating myself. With &lt;code&gt;act&lt;/code&gt;, you can use the GitHub Actions defined in your &lt;code&gt;.github/workflows/&lt;/code&gt; to replace your &lt;code&gt;Makefile&lt;/code&gt;!&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-alert markdown-alert-tip"&gt;
&lt;p class="markdown-alert-title"&gt;Tip&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now Manage and Run Act Directly From VS Code!&lt;/strong&gt;&lt;br&gt;
Check out the &lt;a href="https://sanjulaganepola.github.io/github-local-actions-docs/" rel="nofollow noopener noreferrer"&gt;GitHub Local Actions&lt;/a&gt; Visual Studio Code extension which allows you to leverage the power of &lt;code&gt;act&lt;/code&gt; to run and test workflows locally without leaving your editor.&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;How Does It Work?&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;When you…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nektos/act" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h4&gt;
  
  
  caarlos0/svu
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/caarlos0" rel="noopener noreferrer"&gt;
        caarlos0
      &lt;/a&gt; / &lt;a href="https://github.com/caarlos0/svu" rel="noopener noreferrer"&gt;
        svu
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      semantic version utility
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2b570f337a8af3f768459cf08cc7d23f78a5412c5c70a89bf02c439f4cf4bfad/68747470733a2f2f6265636b65722e736f6674776172652f7376752e706e67"&gt;&lt;img alt="svu Logo" src="https://camo.githubusercontent.com/2b570f337a8af3f768459cf08cc7d23f78a5412c5c70a89bf02c439f4cf4bfad/68747470733a2f2f6265636b65722e736f6674776172652f7376752e706e67" height="300"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;p&gt;semantic version utility&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://github.com/caarlos0/svu/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/019281cbfeb606b4879a78bfb4c47f9fe6a433be8f34d6865adec0ac9214fed3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f636161726c6f73302f7376752e7376673f7374796c653d666f722d7468652d6261646765" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/LICENSE.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/717657d9145eb10a5f11359aa64ff599bb3bf4d04802ca06b3ee8f49d020411a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666f722d7468652d6261646765" alt="Software License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/caarlos0/svu/actions?workflow=build" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5147020b90529ede62aee345675bd341757e5116968dad1534d06d5098b8b806/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f636161726c6f73302f7376752f6275696c642e796d6c3f7374796c653d666f722d7468652d6261646765266272616e63683d6d61696e" alt="Build status"&gt;&lt;/a&gt;
&lt;a href="http://godoc.org/github.com/caarlos0/svu/v3" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/20f1b468c3fd4ff7b538e4833f3d04e658b3a71882c501291ea8b18035502686/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f676f646f632d7265666572656e63652d626c75652e7376673f7374796c653d666f722d7468652d6261646765" alt="Go Doc"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/caarlos0/svu/v3" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/11c5e77e9df8b3c7089ad4a6f5a39b099726f12ccfa304d38111137ba1125325/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f636161726c6f73302f7376752f76333f7374796c653d666f722d7468652d6261646765" alt="GoReportCard"&gt;&lt;/a&gt;
&lt;a href="https://conventionalcommits.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/006fb2214bbcfbd1c249d7a62fe5f740b6dcdffcab8643f94dbff0e0237c2d6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f6e76656e74696f6e616c253230436f6d6d6974732d312e302e302d79656c6c6f772e7376673f7374796c653d666f722d7468652d6261646765" alt="Conventional Commits"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;semantic version utility (svu) is a small helper for release scripts and workflows.&lt;/p&gt;

&lt;p&gt;It provides utility commands and functions to increase specific portions of the version
It can also figure the next version out automatically by looking through the git history.&lt;/p&gt;
&lt;div class="markdown-alert markdown-alert-tip"&gt;
&lt;p class="markdown-alert-title"&gt;Tip&lt;/p&gt;
&lt;p&gt;Read &lt;a href="https://semver.org" rel="nofollow noopener noreferrer"&gt;the spec&lt;/a&gt; for more information.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;usage&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Check &lt;code&gt;svu --help&lt;/code&gt; for the list of sub-commands and flags.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;next&lt;/code&gt;, &lt;code&gt;n&lt;/code&gt;
&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;This is probably the command you'll use the most.&lt;/p&gt;
&lt;p&gt;It checks your &lt;code&gt;git log&lt;/code&gt;, and automatically increases and returns the new
version based on this table:&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Commit message&lt;/th&gt;
&lt;th&gt;Tag increase&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;chore: foo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Nothing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fix: fixed something&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Patch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;feat: added new button to do X&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Minor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;fix: fixed thing xyz&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;code&gt;BREAKING CHANGE: this will break users because of blah&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Major&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fix!: fixed something&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Major&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;feat!: added blah&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Major&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-alert markdown-alert-tip"&gt;
&lt;p class="markdown-alert-title"&gt;Tip&lt;/p&gt;
&lt;p&gt;You can create an alias to create tags automatically:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;alias&lt;/span&gt; gtn=&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;git tag $(svu next)&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/caarlos0/svu" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  permafrost-dev/stackup
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/permafrost-dev" rel="noopener noreferrer"&gt;
        permafrost-dev
      &lt;/a&gt; / &lt;a href="https://github.com/permafrost-dev/stackup" rel="noopener noreferrer"&gt;
        stackup
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      a single application to spin up your entire dev stack.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/permafrost-dev/stackup/assets/stackup-app-512px.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fpermafrost-dev%2Fstackup%2Fassets%2Fstackup-app-512px.png" alt="logo" height="150"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;StackUp&lt;/h1&gt;
&lt;/div&gt;




&lt;p&gt;Spin up your entire dev stack with one command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;StackUp&lt;/code&gt; offers many features and advanced functionality. Here are some of the highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define tasks that run on startup, shutdown, or on a schedule.&lt;/li&gt;
&lt;li&gt;Customize tasks and preconditions using javascript.&lt;/li&gt;
&lt;li&gt;Run tasks on a cron schedule, i.e. running &lt;code&gt;php artisan schedule:run&lt;/code&gt; once every minute.&lt;/li&gt;
&lt;li&gt;Load remote configurations via http or S3.&lt;/li&gt;
&lt;li&gt;Fast in-memory cache skips http requests when possible.&lt;/li&gt;
&lt;li&gt;Http request gateway prevents unwanted access to remote urls, domains and content types.&lt;/li&gt;
&lt;li&gt;Send notifications with Telegram and Slack integrations.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/permafrost-dev/stackup#stackup" rel="noopener noreferrer"&gt;StackUp&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#table-of-contents" rel="noopener noreferrer"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#about" rel="noopener noreferrer"&gt;About&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#running-stackup" rel="noopener noreferrer"&gt;Running StackUp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/permafrost-dev/stackup#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/permafrost-dev/stackup#configuration-settings" rel="noopener noreferrer"&gt;Configuration: Settings&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-settings-gateway" rel="noopener noreferrer"&gt;Configuration: Settings: Gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-settings-domains" rel="noopener noreferrer"&gt;Configuration: Settings: Domains&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-settings-notifications" rel="noopener noreferrer"&gt;Configuration: Settings: Notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-settings-notifications-telegram" rel="noopener noreferrer"&gt;Configuration: Settings: Notifications: Telegram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-settings-notifications-slack" rel="noopener noreferrer"&gt;Configuration: Settings: Notifications: Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-environment-variables" rel="noopener noreferrer"&gt;Configuration: Environment Variables&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-includes" rel="noopener noreferrer"&gt;Configuration: Includes&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-preconditions" rel="noopener noreferrer"&gt;Configuration: Preconditions&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-tasks" rel="noopener noreferrer"&gt;Configuration: Tasks&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-startup--shutdown" rel="noopener noreferrer"&gt;Configuration: Startup &amp;amp; Shutdown&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-servers" rel="noopener noreferrer"&gt;Configuration: Servers&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#configuration-scheduler" rel="noopener noreferrer"&gt;Configuration: Scheduler&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#example-configurations" rel="noopener noreferrer"&gt;Example Configurations&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/permafrost-dev/stackup#integrations" rel="noopener noreferrer"&gt;Integrations&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#integration-dotenv-vault" rel="noopener noreferrer"&gt;Integration: dotenv-vault&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#integration-telegram-notifications" rel="noopener noreferrer"&gt;Integration: Telegram Notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#integration-slack-notifications" rel="noopener noreferrer"&gt;Integration: Slack Notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/permafrost-dev/stackup#integration-desktop-notifications" rel="noopener noreferrer"&gt;Integration: Desktop Notifications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;…&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/permafrost-dev/stackup" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h4&gt;
  
  
  google/yamlfmt
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/google" rel="noopener noreferrer"&gt;
        google
      &lt;/a&gt; / &lt;a href="https://github.com/google/yamlfmt" rel="noopener noreferrer"&gt;
        yamlfmt
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An extensible command line tool or library to format yaml files.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;yamlfmt&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;yamlfmt&lt;/code&gt; is an extensible command line tool or library to format yaml files.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Goals&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Create a command line yaml formatting tool that is easy to distribute (single binary)&lt;/li&gt;
&lt;li&gt;Make it simple to extend with new custom formatters&lt;/li&gt;
&lt;li&gt;Enable alternative use as a library, providing a foundation for users to create a tool that meets specific needs&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Maintainers&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This tool is not yet officially supported by Google. It is currently maintained solely by @braydonk, and unless something changes primarily in spare time.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Blog&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;I'm going to use these links to GitHub Discussions as a blog of sorts, until I can set up something more proper:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;yamlfmt's recent slow development &lt;a href="https://github.com/google/yamlfmt/discussions/149" rel="noopener noreferrer"&gt;#149&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Issues related to the yaml.v3 library &lt;a href="https://github.com/google/yamlfmt/discussions/148" rel="noopener noreferrer"&gt;#148&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;To download the &lt;code&gt;yamlfmt&lt;/code&gt; command, you can download the desired binary from releases or install the module directly:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;go install github.com/google/yamlfmt/cmd/yamlfmt@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This currently requires Go version 1.21 or greater.&lt;/p&gt;
&lt;p&gt;NOTE: Recommended setup…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/google/yamlfmt" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  watchexec/watchexec
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/watchexec" rel="noopener noreferrer"&gt;
        watchexec
      &lt;/a&gt; / &lt;a href="https://github.com/watchexec/watchexec" rel="noopener noreferrer"&gt;
        watchexec
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Executes commands in response to file modifications
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/watchexec/watchexec/actions/workflows/tests.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/watchexec/watchexec/actions/workflows/tests.yml/badge.svg" alt="CI status on main branch"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Watchexec&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Software development often involves running the same commands over and over. Boring!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;watchexec&lt;/code&gt; is a simple, standalone tool that watches a path and runs a command whenever it detects modifications.&lt;/p&gt;
&lt;p&gt;Example use cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically run unit tests&lt;/li&gt;
&lt;li&gt;Run linters/syntax checkers&lt;/li&gt;
&lt;li&gt;Rebuild artifacts&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Simple invocation and use, does not require a cryptic command line involving &lt;code&gt;xargs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Runs on OS X, Linux, and Windows&lt;/li&gt;
&lt;li&gt;Monitors current directory and all subdirectories for changes&lt;/li&gt;
&lt;li&gt;Coalesces multiple filesystem events into one, for editors that use swap/backup files during saving&lt;/li&gt;
&lt;li&gt;Loads &lt;code&gt;.gitignore&lt;/code&gt; and &lt;code&gt;.ignore&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;Uses process groups to keep hold of forking programs&lt;/li&gt;
&lt;li&gt;Provides the paths that changed in environment variables or STDIN&lt;/li&gt;
&lt;li&gt;Does not require a language runtime, not tied to any particular language or ecosystem&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/watchexec/watchexec/./crates/cli/#features" rel="noopener noreferrer"&gt;And more!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick start&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Watch all JavaScript, CSS and HTML files in the current directory and all subdirectories for changes, running &lt;code&gt;npm run build&lt;/code&gt; when a…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/watchexec/watchexec" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Linting
&lt;/h2&gt;

&lt;h4&gt;
  
  
  golangci/golangci-lint
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/golangci" rel="noopener noreferrer"&gt;
        golangci
      &lt;/a&gt; / &lt;a href="https://github.com/golangci/golangci-lint" rel="noopener noreferrer"&gt;
        golangci-lint
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fast linters runner for Go
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/golangci/golangci-lint/assets/go.png"&gt;&lt;img alt="golangci-lint logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fgolangci%2Fgolangci-lint%2Fassets%2Fgo.png" height="150"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;golangci-lint&lt;/h3&gt;

&lt;/div&gt;
  &lt;p&gt;Fast linters runner for Go&lt;/p&gt;


&lt;p&gt;&lt;code&gt;golangci-lint&lt;/code&gt; is a fast Go linters runner.&lt;/p&gt;
&lt;p&gt;It runs linters in parallel, uses caching, supports YAML configuration,
integrates with all major IDEs, and includes over a hundred linters.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install &lt;code&gt;golangci-lint&lt;/code&gt;
&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://golangci-lint.run/docs/welcome/install/#local-installation" rel="nofollow noopener noreferrer"&gt;On my machine&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://golangci-lint.run/docs/welcome/install/#ci-installation" rel="nofollow noopener noreferrer"&gt;On CI/CD systems&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Documentation is hosted at &lt;a href="https://golangci-lint.run" rel="nofollow noopener noreferrer"&gt;https://golangci-lint.run&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Social Networks&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://gophers.slack.com/archives/CS0TBRKPC" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a55b84f7a65fb9fe2e7fccae0f33aaa0d5b306dde2d2d196e45aa806a8f114e1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536c61636b2d3432383546343f6c6f676f3d736c61636b266c6f676f436f6c6f723d7768697465" alt="Join Slack"&gt;&lt;/a&gt;
&lt;a href="https://fosstodon.org/@golangcilint" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e92dd473985f15c4648cbc519763b58e67f9ea91721f4b6ab07918c66ae4e5b8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6173746f646f6e2d3633363446463f6c6f676f3d6d6173746f646f6e266c6f676f436f6c6f723d7768697465" alt="Follow on Mastodon"&gt;&lt;/a&gt;
&lt;a href="https://bsky.app/profile/golangci-lint.run" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1b397d66fda76dae5f92255b8fce85dfeedc5bd7a4a5b3ddca0ba5c8b9e27049/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c7565736b792d3061376166663f6c6f676f3d626c7565736b79266c6f676f436f6c6f723d7768697465" alt="Follow on Bluesky"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/golangci" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6f470bafa5924e79d4ef13306cc4587647afcfbb8a21d1be263c667a5984624d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547769747465722d3144413146323f6c6f676f3d78266c6f676f436f6c6f723d7768697465" alt="Follow on Twitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Support Us&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;code&gt;golangci-lint&lt;/code&gt; is a free and open-source project built by volunteers.&lt;/p&gt;
&lt;p&gt;If you value it, consider supporting us, we appreciate it! ❤️&lt;/p&gt;
&lt;p&gt;&lt;a href="https://donate.golangci.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a498d9b0881f7ad7b02feaee6b3b08dbb54c9909e145584407275b05f534f92c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f537570706f72742d676f6c616e6763695f6c696e742d626c75653f7374796c653d666f722d7468652d6261646765" alt="Golangci-lint"&gt;&lt;/a&gt;
&lt;a href="https://golangci-lint.run/docs/product/thanks/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/984dd9203e7111b28d13e72b20c4a2b79d17205a9f65ca9f0d43625cfe80e382/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f537570706f72742d4c696e7465725f417574686f72732d626c75653f7374796c653d666f722d7468652d6261646765" alt="Linter Authors"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Badges&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/golangci/golangci-lint/workflows/CI/badge.svg"&gt;&lt;img src="https://github.com/golangci/golangci-lint/workflows/CI/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5a7a50da2f45d6f05afe8f30ac6d783052ac440063ea624af77b84a65874ab9a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f676f6c616e6763692f676f6c616e6763692d6c696e74" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/golangci/golangci-lint/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7a5a96f73cc6e68524ce19802889b3f3c8e940bbdf0144e139656332def25a69/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f676f6c616e6763692f676f6c616e6763692d6c696e742e737667" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/golangci/golangci-lint" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/135e1db289ec077caad6c1b6260725aa43d6f44a662fb1763868845529859e03/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f676f6c616e6763692f676f6c616e6763692d6c696e74" alt="Docker"&gt;&lt;/a&gt;
&lt;a href="https://somsubhra.github.io/github-release-stats/?username=golangci&amp;amp;repository=golangci-lint" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d2dfe3c95da9c137650ffc91baaa7ae516aa7bd58a8a72086603afbc6c95a88f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f676f6c616e6763692f676f6c616e6763692d6c696e742f746f74616c2e7376673f6c6f676f3d676974687562" alt="GitHub Releases Stats of golangci-lint"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributors&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;This project exists thanks to all the people who contribute. &lt;a href="https://golangci-lint.run/docs/contributing/" rel="nofollow noopener noreferrer"&gt;How to contribute&lt;/a&gt;.&lt;/p&gt;
&lt;a href="https://github.com/golangci/golangci-lint/graphs/contributors" rel="noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/2faf49759399515512d98b105947a800200cac9ecf4dead0aad48be909b1c06c/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f676f6c616e6763692d6c696e742f636f6e7472696275746f72732e7376673f77696474683d38393026627574746f6e3d66616c736526736b69703d676f6c616e6763696465762c434c41617373697374616e742c72656e6f766174652c666f737361626f742c676f6c616e676369626f742c6b6f7274736368616b2c676f6c616e6763692d72656c65617365722c646570656e6461626f74253542626f74253544"&gt;
&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Sponsors&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://www.jetbrains.com/go/?utm_source=OSS&amp;amp;utm_medium=referral&amp;amp;utm_campaign=golangci" rel="nofollow noopener noreferrer"&gt;
    
      
      
      &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fgolangci%2Fgolangci-lint%2Fassets%2Fgoland.svg" class="article-body-image-wrapper"&gt;&lt;img alt="The complete IDE crafted for professional Go developers." src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fgolangci%2Fgolangci-lint%2Fassets%2Fgoland.svg" width="150"&gt;&lt;/a&gt;
    
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Stargazers over time&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://starchart.cc/golangci/golangci-lint" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/518c2abde9fff46362caab95af34e396af03e00fe5a0feda3c7a77772494281a/68747470733a2f2f7374617263686172742e63632f676f6c616e6763692f676f6c616e6763692d6c696e742e7376673f76617269616e743d6164617074697665" alt="Stargazers over time"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/golangci/golangci-lint" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h4&gt;
  
  
  dotenv-linter/dotenv-linter
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dotenv-linter" rel="noopener noreferrer"&gt;
        dotenv-linter
      &lt;/a&gt; / &lt;a href="https://github.com/dotenv-linter/dotenv-linter" rel="noopener noreferrer"&gt;
        dotenv-linter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⚡️Lightning-fast linter for .env files. Written in Rust 🦀
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://github.com/dotenv-linter/dotenv-linter" rel="noopener noreferrer"&gt;
    &lt;img alt="dotenv-linter" width="350" height="192" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fdotenv-linter%2Fdotenv-linter%2Fmaster%2Flogo.svg%3Fsanitize%3Dtrue"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;
⚡️Lightning-fast linter for &lt;code&gt;.env&lt;/code&gt; files. Written in Rust 🦀
&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;a href="https://github.com/dotenv-linter/dotenv-linter/actions" rel="noopener noreferrer"&gt;
    &lt;img alt="GitHub Actions" src="https://github.com/dotenv-linter/dotenv-linter/workflows/CI/badge.svg"&gt;
  &lt;/a&gt;
  &lt;a href="https://codecov.io/gh/dotenv-linter/dotenv-linter" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="Coverage Status" src="https://camo.githubusercontent.com/0bab21e2b15631531def0daba9b26302ef6b76da003d58caa6b6c8d57edf09de/68747470733a2f2f636f6465636f762e696f2f67682f646f74656e762d6c696e7465722f646f74656e762d6c696e7465722f6272616e63682f6d61737465722f67726170682f62616467652e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/dotenv-linter/dotenv-linter/blob/master/LICENSE" rel="noopener noreferrer"&gt;
    &lt;img alt="License" src="https://camo.githubusercontent.com/92eb5b6a616c0e1cba2ed214b3fd9eed0213723b0bfe6496f5aac2d4c52b4f48/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f646f74656e762d6c696e7465722f646f74656e762d6c696e746572"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/dotenv-linter/dotenv-linter/releases" rel="noopener noreferrer"&gt;
    &lt;img alt="Releases" src="https://camo.githubusercontent.com/fb7c0658744a0515c73f4aa11786b1bc89d61c958773301a4603af7a99ada362/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f646f74656e762d6c696e7465722f646f74656e762d6c696e746572"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dotenv-linter&lt;/code&gt; can &lt;strong&gt;&lt;a href="https://github.com/dotenv-linter/dotenv-linter#-check" rel="noopener noreferrer"&gt;check&lt;/a&gt;&lt;/strong&gt; / &lt;strong&gt;&lt;a href="https://github.com/dotenv-linter/dotenv-linter#-fix" rel="noopener noreferrer"&gt;fix&lt;/a&gt;&lt;/strong&gt; / &lt;strong&gt;&lt;a href="https://github.com/dotenv-linter/dotenv-linter#-diff" rel="noopener noreferrer"&gt;diff&lt;/a&gt;&lt;/strong&gt; &lt;code&gt;.env&lt;/code&gt; files for problems that may
cause the application to malfunction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Available checks&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/duplicated_key" rel="nofollow noopener noreferrer"&gt;Duplicated key&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/ending_blank_line" rel="nofollow noopener noreferrer"&gt;Ending blank line&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/extra_blank_line" rel="nofollow noopener noreferrer"&gt;Extra blank line&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/incorrect_delimiter" rel="nofollow noopener noreferrer"&gt;Incorrect delimiter&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/key_without_value" rel="nofollow noopener noreferrer"&gt;Key without value&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/leading_character" rel="nofollow noopener noreferrer"&gt;Leading character&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/lowercase_key" rel="nofollow noopener noreferrer"&gt;Lowercase key&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/quote_character" rel="nofollow noopener noreferrer"&gt;Quote character&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/schema_violation" rel="nofollow noopener noreferrer"&gt;Schema violation&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/space_character" rel="nofollow noopener noreferrer"&gt;Space character&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/substitution_key" rel="nofollow noopener noreferrer"&gt;Substitution key&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/trailing_whitespace" rel="nofollow noopener noreferrer"&gt;Trailing whitespace&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/unordered_key" rel="nofollow noopener noreferrer"&gt;Unordered key&lt;/a&gt;&lt;br&gt;
    ✅ &lt;a href="https://dotenv-linter.github.io/#/checks/value_without_quotes" rel="nofollow noopener noreferrer"&gt;Value without quotes&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a &lt;code&gt;.env&lt;/code&gt; file?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
    💡 A &lt;code&gt;.env&lt;/code&gt; file or &lt;code&gt;dotenv&lt;/code&gt; file is a simple text file containing all the environment variables of a project.&lt;br&gt;     Storing &lt;a href="https://12factor.net/config" rel="nofollow noopener noreferrer"&gt;configuration in the environment variables&lt;/a&gt; is one of the tenets of the &lt;a href="https://12factor.net" rel="nofollow noopener noreferrer"&gt;Manifesto of Twelve-Factor App&lt;/a&gt;.&lt;br&gt;
    The &lt;code&gt;.env&lt;/code&gt; file has a simple key-value format, for example: &lt;code&gt;FOO=BAR&lt;/code&gt;.&lt;br&gt;
    More information you can find in articles in &lt;a href="https://evrone.com/dotenv-linter?utm_source=github&amp;amp;utm_campaign=dotenv-linter" rel="nofollow noopener noreferrer"&gt;English&lt;/a&gt; and &lt;a href="https://www.mgrachev.com/2020/04/20/dotenv-linter" rel="nofollow noopener noreferrer"&gt;Russian&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key features&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;
    ⚡️ Lightning-fast because…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dotenv-linter/dotenv-linter" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  rhysd/actionlint
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/rhysd" rel="noopener noreferrer"&gt;
        rhysd
      &lt;/a&gt; / &lt;a href="https://github.com/rhysd/actionlint" rel="noopener noreferrer"&gt;
        actionlint
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      :octocat: Static checker for GitHub Actions workflow files
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;actionlint&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/rhysd/actionlint/actions/workflows/ci.yaml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/rhysd/actionlint/actions/workflows/ci.yaml/badge.svg" alt="CI Status"&gt;&lt;/a&gt;
&lt;a href="https://pkg.go.dev/github.com/rhysd/actionlint" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b51a57e73eda1a088b2711ed98685b8b9b6427b2eaf8f57ca271917d239d6006/68747470733a2f2f706b672e676f2e6465762f62616467652f6769746875622e636f6d2f72687973642f616374696f6e6c696e742e737667" alt="API Document"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/rhysd/actionlint" rel="noopener noreferrer"&gt;actionlint&lt;/a&gt; is a static checker for GitHub Actions workflow files. &lt;a href="https://rhysd.github.io/actionlint/" rel="nofollow noopener noreferrer"&gt;Try it online!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Syntax check for workflow files&lt;/strong&gt; to check unexpected or missing keys following &lt;a href="https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions" rel="noopener noreferrer"&gt;workflow syntax&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strong type check for &lt;code&gt;${{ }}&lt;/code&gt; expressions&lt;/strong&gt; to catch several semantic errors like access to not existing property
type mismatches, ...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actions usage check&lt;/strong&gt; to check that inputs at &lt;code&gt;with:&lt;/code&gt; and outputs in &lt;code&gt;steps.{id}.outputs&lt;/code&gt; are correct&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable workflow check&lt;/strong&gt; to check inputs/outputs/secrets of reusable workflows and workflow calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/koalaman/shellcheck" rel="noopener noreferrer"&gt;shellcheck&lt;/a&gt; and &lt;a href="https://github.com/PyCQA/pyflakes" rel="noopener noreferrer"&gt;pyflakes&lt;/a&gt; integrations&lt;/strong&gt; for scripts at &lt;code&gt;run:&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security checks&lt;/strong&gt;; &lt;a href="https://docs.github.com/en/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks" rel="noopener noreferrer"&gt;script injection&lt;/a&gt; by untrusted inputs, hard-coded credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other several useful checks&lt;/strong&gt;; &lt;a href="https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet" rel="noopener noreferrer"&gt;glob syntax&lt;/a&gt; validation, dependencies check for &lt;code&gt;needs:&lt;/code&gt;
runner label validation, cron syntax validation, ...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the &lt;a href="https://github.com/rhysd/actionlint/blob/v1.7.8/docs/checks.md" rel="noopener noreferrer"&gt;full list&lt;/a&gt; of checks done by actionlint.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/rhysd/ss/blob/master/actionlint/main.gif?raw=true"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Frhysd%2Fss%2Fraw%2Fmaster%2Factionlint%2Fmain.gif%3Fraw%3Dtrue" alt="actionlint reports 7 errors" width="806" height="492"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example of broken workflow:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;on&lt;/span&gt;
  &lt;span class="pl-ent"&gt;push&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;branch&lt;/span&gt;: &lt;span class="pl-s"&gt;main&lt;/span&gt;
    &lt;span class="pl-ent"&gt;tags&lt;/span&gt;:
      - &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;v\d+&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-ent"&gt;jobs&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;test&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;strategy&lt;/span&gt;:
      &lt;span class="pl-ent"&gt;matrix&lt;/span&gt;:
        &lt;span class="pl-ent"&gt;os&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/rhysd/actionlint" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  hadolint/hadolint
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/hadolint" rel="noopener noreferrer"&gt;
        hadolint
      &lt;/a&gt; / &lt;a href="https://github.com/hadolint/hadolint" rel="noopener noreferrer"&gt;
        hadolint
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Dockerfile linter, validate inline bash, written in Haskell
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Haskell Dockerfile Linter&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/hadolint/hadolint/actions/workflows/haskell.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/hadolint/hadolint/actions/workflows/haskell.yml/badge.svg?branch=master" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://tldrlegal.com/l/gpl-3.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b1c578d9e9305f0a9252eec8c26b3a9b027ba06640909fdb1a9f8c6ef9e20526/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d332d626c75652e737667" alt="GPL-3 licensed"&gt;&lt;/a&gt;
&lt;a href="https://github.com/hadolint/hadolint/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1459d7b7c9185abe5da0ff59d4fa3e0c5b3b0bd928792cdfb9f57c45309e277f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6861646f6c696e742f6861646f6c696e742e737667" alt="GitHub release"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b8f069af3c55cd01ef6cbf9f35b63e005cbd344d7be073c4e2e958fb57dd1ccb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6861646f6c696e742f6861646f6c696e742f746f74616c2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/b8f069af3c55cd01ef6cbf9f35b63e005cbd344d7be073c4e2e958fb57dd1ccb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6861646f6c696e742f6861646f6c696e742f746f74616c2e737667" alt="GitHub downloads"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/398112f6d324eee5db0a0aee2606619188383195a2fd28a636e7162512db805b/68747470733a2f2f6861646f6c696e742e6769746875622e696f2f6861646f6c696e742f696d672f6361745f636f6e7461696e65722e706e67"&gt;&lt;img alt="pipecat" width="150" src="https://camo.githubusercontent.com/398112f6d324eee5db0a0aee2606619188383195a2fd28a636e7162512db805b/68747470733a2f2f6861646f6c696e742e6769746875622e696f2f6861646f6c696e742f696d672f6361745f636f6e7461696e65722e706e67"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A smarter Dockerfile linter that helps you build &lt;a href="https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices" rel="nofollow noopener noreferrer"&gt;best practice&lt;/a&gt; Docker
images. The linter parses the Dockerfile into an AST and performs rules on
top of the AST. It stands on the shoulders of &lt;a href="https://github.com/koalaman/shellcheck" rel="noopener noreferrer"&gt;ShellCheck&lt;/a&gt; to lint
the Bash code inside &lt;code&gt;RUN&lt;/code&gt; instructions.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hadolint.github.io/hadolint" rel="nofollow noopener noreferrer"&gt;🌐 &lt;strong&gt;Check the online version on
hadolint.github.io/hadolint&lt;/strong&gt;&lt;/a&gt;
&lt;a href="https://hadolint.github.io/hadolint" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fhadolint%2Fhadolint%2Fscreenshot.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#how-to-use" rel="noopener noreferrer"&gt;How to use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#install" rel="noopener noreferrer"&gt;Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#cli" rel="noopener noreferrer"&gt;CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#configure" rel="noopener noreferrer"&gt;Configure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#non-posix-shells" rel="noopener noreferrer"&gt;Non-Posix Shells&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hadolint/hadolint#ignoring-rules" rel="noopener noreferrer"&gt;Ignoring Rules&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#inline-ignores" rel="noopener noreferrer"&gt;Inline ignores&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#global-ignores" rel="noopener noreferrer"&gt;Global ignores&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hadolint/hadolint#linting-labels" rel="noopener noreferrer"&gt;Linting Labels&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#note-on-dealing-with-variables-in-labels" rel="noopener noreferrer"&gt;Note on dealing with variables in labels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#integrations" rel="noopener noreferrer"&gt;Integrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#rules" rel="noopener noreferrer"&gt;Rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hadolint/hadolint#develop" rel="noopener noreferrer"&gt;Develop&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#setup" rel="noopener noreferrer"&gt;Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#repl" rel="noopener noreferrer"&gt;REPL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#tests" rel="noopener noreferrer"&gt;Tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#ast" rel="noopener noreferrer"&gt;AST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#building-against-custom-libraries" rel="noopener noreferrer"&gt;Building against custom libraries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hadolint/hadolint#alternatives" rel="noopener noreferrer"&gt;Alternatives&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to use&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You can run &lt;code&gt;hadolint&lt;/code&gt; locally to lint your Dockerfile.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;hadolint &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;Dockerfile&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;
hadolint --ignore DL3003 --ignore DL3006 &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;Dockerfile&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt; &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; exclude specific rules&lt;/span&gt;
hadolint --trusted-registry my-company.com:500 &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;Dockerfile&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt; &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Warn when using untrusted FROM images&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Docker comes to the rescue, providing an easy way how to run &lt;code&gt;hadolint&lt;/code&gt; on most
platforms
Just pipe…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hadolint/hadolint" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  biomejs/biome
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/biomejs" rel="noopener noreferrer"&gt;
        biomejs
      &lt;/a&gt; / &lt;a href="https://github.com/biomejs/biome" rel="noopener noreferrer"&gt;
        biome
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A toolchain for web projects, aimed to provide functionalities to maintain them. Biome offers formatter and linter, usable via CLI and LSP.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  
    
    
    &lt;img alt="Shows the banner of Biome, with its logo and the phrase 'Biome - Toolchain of the web'." src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbiomejs%2Fresources%2Fmain%2Fsvg%2Fslogan-light-transparent.svg" width="700"&gt;
  
  &lt;br&gt;
  &lt;br&gt;
&lt;p&gt;&lt;a href="https://github.com/biomejs/biome/actions/workflows/main.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/biomejs/biome/actions/workflows/main.yml/badge.svg" alt="CI on main"&gt;&lt;/a&gt;
&lt;a href="https://biomejs.dev/chat" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/69d77b38e9f28eaac176809aa47ae3e6c3f4154f6e37a8b240a785196612ccb1/68747470733a2f2f62616467656e2e6e65742f646973636f72642f6f6e6c696e652d6d656d626572732f427970573339673659633f69636f6e3d646973636f7264266c6162656c3d646973636f726426636f6c6f723d363061356661" alt="Discord chat"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@biomejs/biome/v/latest" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0a82ad483c2dad0d12b254f3e7d52fd483f5ed9c608929f38fa7cd09007a8a5e/68747470733a2f2f62616467656e2e6e65742f6e706d2f762f4062696f6d656a732f62696f6d653f69636f6e3d6e706d26636f6c6f723d363061356661266c6162656c3d25343062696f6d656a7325324662696f6d65" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=biomejs.biome" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/385bb597419f613eac055f2ad2fe79f99553b1577f0c1c0e44018b2f43634b1c/68747470733a2f2f696d672e736869656c64732e696f2f76697375616c2d73747564696f2d6d61726b6574706c6163652f762f62696f6d656a732e62696f6d653f6c6162656c3d56697375616c25323053747564696f2532304d61726b6574706c616365266c6162656c436f6c6f723d33373431353126636f6c6f723d363061356661" alt="VSCode version"&gt;&lt;/a&gt;
&lt;a href="https://open-vsx.org/extension/biomejs/biome" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a7431d2b726d7be95776f51c8673d75f8fb82e496671efd97b14590f9d230234/68747470733a2f2f696d672e736869656c64732e696f2f76697375616c2d73747564696f2d6d61726b6574706c6163652f762f62696f6d656a732e62696f6d653f6c6162656c3d4f70656e2532305653582532305265676973747279266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a30696458526d4c546769507a344b50484e325a79423261575633516d3934505349304c6a59674e5341354e693479494445794d6934334969423462577875637a30696148523063446f764c336433647935334d793576636d63764d6a41774d43397a646d636950676f67494478775958526f49475139496b307a4d4341304e433479544455794c6a59674e5567334c6a4e36545451754e6941344f433431614451314c6a4e4d4d6a63754d6941304f533430656d30314d534177624449794c6a59674d7a6b754d6941794d6934324c544d354c6a4a364969426d615778735053496a597a45324d47566d4969382b4369416750484268644767675a443069545455794c6a59674e55777a4d4341304e433479614451314c6a4a36545449334c6a49674e446b754e4777794d69343349444d354c6a45674d6a49754e69307a4f533478656d30314d534177544455314c6a59674f4467754e5767304e533479656949675a6d6c7362443069493245324d47566c4e53497650676f384c334e325a7a343d266c6162656c436f6c6f723d33373431353126636f6c6f723d363061356661" alt="Open VSX version"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.hi.md" rel="noopener noreferrer"&gt;हिन्दी&lt;/a&gt; | English | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.es.md" rel="noopener noreferrer"&gt;Español&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.fr.md" rel="noopener noreferrer"&gt;Français&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-TW.md" rel="noopener noreferrer"&gt;繁體中文&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.zh-CN.md" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pl.md" rel="noopener noreferrer"&gt;Polski&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.pt-BR.md" rel="noopener noreferrer"&gt;Português do Brasil&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.kr.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.ru.md" rel="noopener noreferrer"&gt;Русский&lt;/a&gt; | &lt;a href="https://github.com/biomejs/biome/blob/main/packages/%40biomejs/biome/README.uk.md" rel="noopener noreferrer"&gt;Українська&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;Biome&lt;/strong&gt; is a performant toolchain for web projects, it aims to provide developer tools to maintain the health of said projects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Biome is a &lt;a href="https://github.com/biomejs/biome/./benchmark#formatting" rel="noopener noreferrer"&gt;fast formatter&lt;/a&gt;&lt;/strong&gt; for &lt;em&gt;JavaScript&lt;/em&gt;, &lt;em&gt;TypeScript&lt;/em&gt;, &lt;em&gt;JSX&lt;/em&gt;, &lt;em&gt;JSON&lt;/em&gt;, &lt;em&gt;CSS&lt;/em&gt; and &lt;em&gt;GraphQL&lt;/em&gt; that scores &lt;strong&gt;&lt;a href="https://console.algora.io/challenges/prettier" rel="nofollow noopener noreferrer"&gt;97% compatibility with &lt;em&gt;Prettier&lt;/em&gt;&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Biome is a &lt;a href="https://github.com/biomejs/biome/tree/main/benchmark#linting" rel="noopener noreferrer"&gt;performant linter&lt;/a&gt;&lt;/strong&gt; for &lt;em&gt;JavaScript&lt;/em&gt;, &lt;em&gt;TypeScript&lt;/em&gt;, &lt;em&gt;JSX&lt;/em&gt;, &lt;em&gt;JSON&lt;/em&gt;, &lt;em&gt;CSS&lt;/em&gt;, and &lt;em&gt;GraphQL&lt;/em&gt; that features &lt;strong&gt;&lt;a href="https://biomejs.dev/linter/javascript/rules/" rel="nofollow noopener noreferrer"&gt;more than 340 rules&lt;/a&gt;&lt;/strong&gt; from ESLint, typescript-eslint, and &lt;a href="https://github.com/biomejs/biome/discussions/3" rel="noopener noreferrer"&gt;other sources&lt;/a&gt;
It &lt;strong&gt;outputs detailed and contextualized diagnostics&lt;/strong&gt; that help you to improve your code and become a better programmer!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Biome&lt;/strong&gt; is designed from the start to be used &lt;a href="https://biomejs.dev/guides/editors/first-party-extensions/" rel="nofollow noopener noreferrer"&gt;interactively within an editor&lt;/a&gt;
It can format and lint malformed code as you are writing it.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install --save-dev --save-exact&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/biomejs/biome" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>opensource</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>github</category>
    </item>
  </channel>
</rss>
