Vale is a command-line tool that brings code-like linting to prose

Vale: Your style, our editor Build status Go Report Card GitHub All Releases Docker Pulls

Vale is a command-line tool that brings code-like linting to prose. It's fast, cross-platform (Windows, macOS, and Linux), and highly customizable.

DocumentationExample ConfigurationsStyles LibraryGitHub Action

❤️ Sponsors

Hi there! I'm @jdkato, the sole developer of Vale. If you'd like to help me dedicate more time to developing, documenting, and supporting Vale, feel free to donate through the Open Collective. Any donation—big, small, one-time, or recurring—is greatly appreciated!

Organizations

Individuals

💥 Key Features

  • Support for markup: Vale has a rich understanding of many markup formats, allowing it to avoid syntax-related false positives and intelligently exclude code snippets from prose-related rules.

  • A highly customizable extension system: Vale is capable of enforcing your style—be it a standard editorial style guide or a custom in-house set of rules (such as those created by GitLab, Homebrew, Linode, CockroachDB, and Spotify).

  • Easy-to-install, stand-alone binaries: Unlike other tools, Vale doesn't require you to install and configure a particular programming language and its related tooling (such as Python/pip or Node.js/npm).

See the documentation for more information.

🔍 At a Glance: Vale vs. <...>

NOTE: While all of the options listed below are open-source (CLI-based) linters for prose, their implementations and features vary significantly. And so, the "best" option will depends on your specific needs and preferences.

Functionality

Tool Extensible Checks Supports Markup Built With License
Vale Yes (via YAML) spelling, style Yes (Markdown, AsciiDoc, reStructuredText, HTML, XML) Go MIT
textlint Yes (via JavaScript) spelling, style Yes (Markdown, AsciiDoc, reStructuredText, HTML, Re:VIEW) JavaScript MIT
RedPen Yes (via Java) spelling, style Yes (Markdown, AsciiDoc, reStructuredText, Textile, Re:VIEW, and LaTeX) Java Apache-2.0
write-good Yes (via JavaScript) style No JavaScript MIT
proselint No style No Python BSD 3-Clause
Joblint No style No JavaScript MIT
alex No style Yes (Markdown) JavaScript MIT

The exact definition of "Supports Markup" varies by tool but, in general, it means that the format is understood at a higher level than a regular plain-text file (for example, features like excluding code blocks from spell check).

Extensibility means that there's a built-in means of creating your own rules without modifying the original source code.

Benchmarks

This benchmark has all three tools configured to use their implementations of the write-good rule set and Unix-style output. This benchmark runs Vale's implementation of proselint's rule set against the original. Both tools are configured to use JSON output.
This benchmark runs Vale's implementation of Joblint's rule set against the original. Both tools are configured to use JSON output. This benchmark has all three tools configured to perform only English spell checking using their default output styles.

All benchmarking was performed using the open-source hyperfine tool on a MacBook Pro (2.9 GHz Intel Core i7):

hyperfine --warmup 3 ''

The corpus IDs in the above plots—gitlab and ydkjs—correspond to the following files:

  • A snapshot of GitLab's open-source documentation (1,500 Markdown files).

  • A chapter from the open-source book You Don't Know JS.

📄 License

FOSSA Status

Owner
errata.ai
Innovative tools for collaborative writing.
errata.ai
Comments
  • Improve the release workflow

    Improve the release workflow

    For v2.0.0+ versions of Vale, there are going to be some development and release workflow changes.

    Currently, the process is quite simple: development takes place on master and releases are tagged at various times.

    Going forward, this is going to change. The goal will be for master to always represent the state of the latest release (in terms of both go get and the state of the live documentation) -- Essentially, it's going to be a read-only release branch. Development will take place on versioned branches (e.g., v2.0.1).

  • Integrate with existing tools

    Integrate with existing tools

    Editors + CLI tools

    • [x] Sublime Text (https://github.com/ValeLint/SubVale)
    • [x] Atom (https://github.com/TimKam/atomic-vale)
    • [x] VS Code (https://github.com/lunaryorn/vscode-vale)
    • [ ] coala CI
    • [x] Vim (via ALE, thanks to @chew-z)
    • [x] Emacs (https://github.com/abingham/flycheck-vale)
    • [ ] JetBrains

    Other

    The following would be nice to have, but will probably need to access Vale through an API of some sort (see languagetool-msword10-addin, for example).

    • [ ] Chrome + Firefox + Thunderbird
    • [ ] MS Word
    • [ ] WordPress
    • [ ] Slack
  • Extend base config

    Extend base config

    There is no way to extend a base config, is there?

    I mean, I'd like to have a base .vale.ini config file somewhere, and then in each project's .vale.ini do something like:

    Extend = path/to/base/.vale.ini
    # and here override some config
    
  • Markdown in ERB files

    Markdown in ERB files

    I'm trying to lint a combination of markdown and ERB templating, but I'm finding the ignore syntax isn't working.

    I'm trying to exclude syntax like

    <%= image_tag "#{ENV["BADGE_DOMAIN"]}/sample.svg?status=unknown" %>
    
    and 
    <% for theme in ["slack", "github", "saturn", "flickr", "solarized", "mono"] %>
    
    

    The following config works for the markdown just fine, but doesn't exclude the ERB syntax.

    [formats]
    erb = md
    txt = md
    
    [*.erb]
    TokenIgnores = (<%.*%>), \
                              (<%=.*?%>)
    
    [*]
    Vale.Spelling = error
    

    and the same regex in BlockIgnores also doesn't work.

    Thanks

  • Vale should ignore quoted text in RST

    Vale should ignore quoted text in RST

    • OS (e.g., macOS, Windows, Linux, etc.): Linux
    • Install method (e.g., Go, Homebrew, direct download, etc.): go get
    • Vale version (the result of vale -v): vale version master

    I have some text in a quote block:

      | I have a very large collection
    

    I have added the following configuration:

    SkippedScopes = script, style, pre, figure, blockquote
    

    But vale still complains about the use of very.

  • [RFC] On regular expression lookarounds

    [RFC] On regular expression lookarounds

    This is one of the most common feature requests / misunderstandings about how Vale's rules work. So, I'd like to take some time to try to get this right—whether that means changing existing functionality or simply improving the documentation on the topic.

    Why things are the way they are

    To provide some background: Vale is written in Go and uses its stdlib regexp package to evaluate all rules. The implementation is based on Google's RE2 library:

    RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library.

    If you'd like to learn more about the decisions that went into RE2, the wiki on google/re2 goes into some detail.

    A different take, but not a limitation

    The academics of the issue aside, my stance has always been that I don't want this to be a limitation of Vale; all else equal, I'd rather Vale be a little slower but more capable.

    I've written a lot of general-purpose regex (using many languages) and even more Vale-specific regex, and I've yet to find something that seemed impossible or unnecessarily difficult to implement with Vale in comparison to other tools. This leads me to believe that the problem is more related to documentation than implementation.

    The documentation currently mentions the limitation of Go and links to a blog post that goes into detail about how Vale approaches the problem. But it's clear that this could be explained better.

    Go's stdlib regex engine doesn't support lookarounds, but Vale does

    Vale supports both positive and negative lookarounds. It does so by taking advantage of the YAML wrapper around its rules.

    Positive lookarounds

    The first variation of lookarounds are the positive lookahead and lookbehind assertions:

    • lookahead (x(?=y)): "I want to match x only if it precedes y without matching y."
    • lookbehind ((?<=y)x): "I want to match x only if it is preceded by y without matching y."

    For Vale’s purposes, this should be straightforward to implement:

    extends: existence
    message: "Consider removing 'dialog'."
    level: warning
    ignorecase: true
    tokens:
      - 'dialog (?:box)'
    

    The basic idea here is that you don't have show the end-user every thing that the rule matched; you can use the message to gain control over what you show.

    Negative lookarounds

    The second variation of lookarounds are the negative lookahead and lookbehind assertions:

    • lookahead (x(?!y)): "I want to match x only if it does not precede y.”
    • lookbehind ((?<!y)x): "I want to match x only if it is not preceded by y."

    For Vale’s purposes, these cases can be emulated using substitution checks:

    extends: substitution
    message: "Use '%s' instead of '%s'"
    level: error
    ignorecase: false
    swap:
      '(?:[^\s]*) ?VS Code': Microsoft VS Code
    

    This rule will flag any instance of "VS Code" that isn't preceded by "Microsoft"; it's functionally equivalent to (?<!Micrsoft )VS Code. The key takeaway is that you can write patterns that include the accepted case since Vale will only raise alerts for those that don't match it.

    So, instead of looking for (?<!Micrsoft ) (anything that isn't 'Microsoft'), you can look for anything and Vale will compare it to the user-provided accepted case.

    Feedback

    I know I haven't written rules that cover every possible use case, so I'd be quite interested in seeing examples of rules you either can't implement or find hard to implement without using raw lookarounds.

    @ravlen: I know this specifically came up in your research session. Do you have any thoughts on the existing support or hard-to-implement examples you could share?

  • Spellcheck is testing substrings of URL

    Spellcheck is testing substrings of URL

    After upgrading from 1.7.1 to 2.1.0, Vale is splitting the contents of URLs apart on word boundaries and testing the individual words in spell-check. I've been reading over the spelling style description to see if there were any scope parameters we've been missing, and I don't think there are.

    The branch is docs-aqualls-vale-spelling, and the Spelling.yml file contains:

    extends: spelling
    message: 'Spelling check: "%s"?'
    level: warning
    ignore:
      - gitlab/spelling-exceptions.txt
    

    (Note that in the branch it's warning but I'm modifying it locally to error so the problems are easier to see.)

    Here's the command I run, and the results:

    $ vale --no-wrap --minAlertLevel error doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
    
     doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
     288:82  error  Spelling check: "dev"?     gitlab.Spelling
     675:29  error  Spelling check: "gitlab"?  gitlab.Spelling
     675:70  error  Spelling check: "ee"?      gitlab.Spelling
     693:38  error  Spelling check: "gitlab"?  gitlab.Spelling
     736:5   error  Spelling check: "ee"?      gitlab.Spelling
    

    When I look at gitlab_rails_cheat_sheet.md:

    # Line 675
    Features listed in <https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/models/license.rb>.
    
    # Line 693
    From [Zendesk ticket #91083](https://gitlab.zendesk.com/agent/tickets/91083) (internal)
    

    At first I thought it was the <…> format of the links, but I've tried converting them over to the more standard Markdown syntax of [link word](url) and I'm still getting the same issue.

    Ideas?

    • OS (e.g., macOS, Windows, Linux, etc.) - MacOS
    • Install method: Homebrew
    • Vale version: 2.1.0
  • Question: Writing .vale.ini to work around Hugo translations (article.fr.md)

    Question: Writing .vale.ini to work around Hugo translations (article.fr.md)

    We use Hugo and have translated pages living in the same repository as our standard language content. (article.md, article.fr.md, and so on.)

    Most of our Vale rules are specific to the English content (article.md), but some operate on all files.

    I’ve been using a configuration file like this:

    [*.{de,es,fr,it,jp,ru}.md]
    BasedOnStyles = 
    OurStyle.general_rule = YES
    
    [*.md]
    BasedOnStyles = OurStyle
    

    I did it this way to avoid turning off all the rules that don’t apply to the translations. Is this the best way to accomplish this, or is there a better way?

    (Copied from WTD Slack for posterity and visibility.)

  • Passing content through stdin doesn't seem to work

    Passing content through stdin doesn't seem to work

    Hello,

    I'm trying to run vale from the command line on Windows 10 and pass text via stdin.

    Running vale against a file vale --config="D:\tools\tmp\vale\.vale.ini" sample.md gets me a correct warning:

    sample.md
     1:1  warning  Use the Oxford comma in a list  base.OxfordComa
                   of three or more items...
    

    But when I try this: vale --config="D:\tools\tmp\vale\.vale.ini" --ext='.md' 'A,B and C' I get no warning whatsoever.

    • OS: Windows 10
    • Install method: direct download
    • Vale version: 2.2.2

    I apologize if it's something obvious that escapes me...

    Thank you, Alex

  • BlockIgnores not working for .mdx files

    BlockIgnores not working for .mdx files

    I can't get BlockIgnores to work. I want to ignore text in code blocks. I verified the regex on https://regex101.com/r/prulD0/2

    My .mdx file.

    ---
    title: "Doc title"
    description: "Title description."
    tags: ["tag1", "tag2"]
    published: true
    featured: false
    ---
    
    import customComponent from "components/customComponent";
    import customComponent2 from "components/customComponent2";
    
    Customers interact with products using different input methods: keyboard, mouse, touch, voice, and more. So use generic verbs that work with any input method. Don't use input-specific verbs, such as click or swipe. Instead, use the verbs listed here.
    
    Content on the first screen (also called above the fold) is the most likely to be read. Many readers won’t scroll further without a compelling reason. So as always, keep it short, and lead with what’s most important to the customer. Keep in mind that what appears above the fold varies by device and screen resolution.
    
    Numerous studies have shown that readers look at specific areas of a page first. In left-to-right languages, people read in an F shape, giving the most attention to the upper-left corner of a page. Put your most important information there. Or try placing an offer or a Buy or Download button there. If the navigation is on the left, put your most important information in the upper-left corner of the text pane.
    
    1. Run the `install` script to configure XYZ, 
    
        ```bash
        unzip -d foldername filename.zip
    
        ./foldername/subfolder/install.sh
        ```
    2. Run second command
    	```bash
    		command -i more | grep something
    	```
    

    Vale config

    
    # Example Vale config file (`.vale.ini` or `_vale.ini`)
    
    # Core settings
    StylesPath = vale
    
    # The minimum alert level to display (suggestion, warning, or error).
    #
    # CI builds will only fail on error-level alerts.
    MinAlertLevel = warning
    
    # Global settings (applied to every syntax)
    [*]
    # List of styles to load
    BasedOnStyles = Microsoft
    # Style.Rule = {YES, NO} to enable or disable a specific rule
    # vale.Editorializing = YES
    # You can also change the level associated with a rule
    # vale.Hedging = error
    BlockIgnores = (?s) *(\x60\x60\x60[a-z]*\n[\s\S]*?\x60\x60\x60)
    
    # Syntax-specific settings
    # These overwrite any conflicting global settings
    # [*.{mdx}]
    
    • OS Ubuntu 18.04 on Windows
    • Install method Go
    • Vale version master
  • Problem with TokenIgnores not ignoring certain content

    Problem with TokenIgnores not ignoring certain content

    I'm currently evaluating using Vale to lint the GitHub documentation at https://github.com/github/docs but I'm running into a problem with TokenIgnores seemingly not ignoring content it should be. I have a minimal repro case at https://github.com/lee-dohm/vale-test. Is there something I'm doing wrong?

    Steps to reproduce

    1. Clone the repo at https://github.com/lee-dohm/vale-test
    2. Execute the command: vale test.md

    Expected: No errors
    Actual: 1 error

    Notice that the first Liquid tag containing the text is flagged as an error, but the second identical Liquid tag on the same line is not.

    Extra info

    • I've created a test case at regex101 that shows that the pattern that I'm using for TokenIgnores is ignoring what I expect, no more, no less
    • Using vale ls-config shows that there doesn't seem to be a parsing error in the configuration file

    Configuration

    • OS: macOS 11.2.1
    • Installation method: Homebrew
    • Vale version: vale version 2.9.1
  • Could not vale sync

    Could not vale sync

    • OS Ubuntu Linux
    • Install method (first snap, then overwritten with direct download)
    • vale version 2.15.4

    Maybe I'm missing something trying to follow Quick Start

    My .vale.ini:

    StylesPath = styles
    
    MinAlertLevel = suggestion
    
    Packages = Google, write-good
    
    [*]
    BasedOnStyles = Vale, Google, write-good
    

    Now I run vale sync, and it gives an error:

    E201 Invalid value provided [{project_path}/.vale.ini:1:14]:
    
       1* StylesPath = styles
       2  
       3  MinAlertLevel = suggestion
    
    The path '{project_path}/styles' does not exist.
    

    So I mkdir styles and I get

    E100 [loadStyles] Runtime error
    
    style 'Google' does not exist on StylesPath
    

    I'm confused, looks like sync both tries to load styles for me and expects them to exist already.

  • Trying to implement en_GB spelling dictionary

    Trying to implement en_GB spelling dictionary

    • OS: MacOS Silicon running a VSCode docker dev container with Linux (Linux 4ceca93ca1ad 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 GNU/Linux)
    • Install method: direct download
    • Version: vale version 2.21.3

    Hi,

    I'm having a hard time understanding how spell check works with a custom dictionary. Can you please point me in the right direction of what I'm doing wrong here?

    This is what I've tried doing so far:

    • Read through all other issues here to see if there's something obvious that I'm not seeing. No luck though.
    • I've downloaded the two en_UK-files from here and placed them in the fixtures folder.

    My general/Spelling.yml looks like so:

    # https://extensions.libreoffice.org/en/extensions/show/english-dictionaries
    # Download and unzip to retrieve the needed files
    extends: spelling
    message: "'%s' is misspelled"
    # Relative to config file
    dicpath: ./fixtures/
    append: false
    level: error
    dictionaries:
      - en_GB
    

    This is my .vale.ini:

    StylesPath = styles
    MinAlertLevel = suggestion
    
    [*]
    BasedOnStyles = my, general, Vale
    

    Running this command and I would have expected at least some errors due to the bastardisation of the English language:

    (.venv) vscode ➜ /workspaces/python-vale (main ✗) $ vale --config /workspaces/python-vale/.vale.ini "This is quite obvisly a teached afair."
    ✔ 0 errors, 0 warnings and 0 suggestions in stdin.
    

    I saw somewhere here that you had used the Hunspell command directly so I tried that as well. This throws some errors as expected.

    (.venv) vscode ➜ /workspaces/python-vale (main ✗) $ echo "This is quite obvisly a teached afair." | hunspell -d fixtures/en_GB
    Hunspell 1.7.0
    *
    *
    *
    & obvisly 1 14: obviously
    *
    & teached 10 24: reached, teaches, teacher, leached, peached, beached, cacheted, cheated, teach, attached
    & afair 5 32: afar, fair, affair, a fair, AFAIK
    
  • Not complete spell checking with french dictionary + NOSUGGEST error

    Not complete spell checking with french dictionary + NOSUGGEST error

    • OS : Arch Linux
    • Install method : Installed as a plugin in neovim IDE LunarVim
    • Vale version : 2.21.0

    What's happening

    1. In french dictionary, the flag NOSUGGEST is followed by -- (two hyphens), which makes vale exit with an error 2022-11-10_19-39 By replacing the -- by ! in the .aff file, it works but the NOSUGGEST flag in the .dic file is not taking care of. Though, my guess is that it can be fixed by replacing all -- by ! in the .dic file.

    2. The spell checking for french dictionary is not complete. Using my Arch Linux hunspell dictionary, it simply does not work. As an exemple, conjugated verbs and adjectives are labelled as not correct. 2022-11-10_19-27 In this example peut is a conjugated form.

    Source files https://github.com/pcapiod/dotfiles/tree/main/dics

    In the files labelled warnings, I changed the NOSUGGEST to ! so it can work. In the files labelled not_working, they are original file from my Arch Linux and give the NOSUGGEST error.

    If you need more information, let me know ! Thanks :)

  • Inconsistent issue reporting.

    Inconsistent issue reporting.

    Installed via Homebrew on macOS.

    Given the following input:

    <html>
    <body>
      <p>This paragraph has has a duplication.</p>
      <p>This paragraph has <b>has</b> a duplication.</p>
      <p>
        This paragraph has has a
        duplication on multiple lines.
      </p>
    
      <p>This paragraph has <b>has</b> an <font>obsolete</font> tag</p>
      <p>
        This paragraph has <b>has</b> a
        duplication on multiple lines.
      </p>
      <p>
        This paragraph has
        has a duplication
        across lines.
      </p>
    </body>
    </html>
    

    I get the following output:

     sample.html
     3:21  error  'has' is repeated!  Vale.Repetition 
     4:1   error  'has' is repeated!  Vale.Repetition 
     6:20  error  'has' is repeated!  Vale.Repetition 
    
    ✖ 3 errors, 0 warnings and 0 suggestions in 1 file.
    

    Despite the example containing six instances of the same error, only three are actually being reported. Additionally, the second report (<p>… has <b>has</b> …</p>) is described as covering the entire line, rather than more useful description of the error location.

  • Error in substitution rule when encountering term + URL + linebreak + URL

    Error in substitution rule when encountering term + URL + linebreak + URL

    Hi,

    I encountered some unexpected behaviour, which is shown only in a very special situation. I defined a substitution rule, which searches for a simple term:

    extends: substitution
    message: Use '%s' instead of '%s'
    level: error
    swap:
      'term': Term
    

    Then I defined some text, which must be exactly as follow:

    • It must contain the term
    • then a URL containing the same term (can be in the same line as the first term)
    • at least one line break
    • the exact same URL again

    The substitution is unexpectedly reported in the URL, not in the first word "term".

    term                            <- i'd expect the substitution to be applied here, ....
    https://abc.com/term
    
    https://abc.com/term            <- ..., but the substitution is applied here. the word "term" in the URL is reported to be bad
    

    The CLI reports following:

     some-path/error.md
     4:17  error  Use 'Term' instead of 'term'  Rules.test 
    

    The rule works as expected, when you add following change to above example:

    • remove the line break between the two URLs
    • make the URLs different (for example remove an 'a' from any of the URL)
    • remove one of both URLs
    • remove the term from at least one of the both URLs

    Any of above changes lead to following outout (which is correct in my opinion)

     some-path/error.md
     1:1  error  Use 'Term' instead of 'term'  Rules.test 
    

    The issue feels kind of similar to https://github.com/errata-ai/vale/issues/455, but I am not able to tell that for sure.

    Setup

    • macOS Monterey, 12.3.1
    • I installed vale through the nix package manager
    • vale version 2.20.0

    .vale.ini

    StylesPath = styles
    
    [*.md]
    BasedOnStyles = Vale, Rules
    

    Folder Structure

    styles/Rules/test.yml (contains substitution shown above)
    some-path/error.md
    .vale.ini
    

    vale Command

    I execute vale ./some-path/*

  • Allow linting files with a single style or a subset of styles

    Allow linting files with a single style or a subset of styles

    It would be great if one could run vale on files and provide either a single style or a subset of styles to apply.

    This would help in testing new styles and allows creating reports for a specific violation.

    AFAIK this option is currently not available. I guess one could work around it by creating a specific configuration for running a specific style but that is quite cumbersome in comparison to providing styles as command line options.

An open-source GitLab command line tool bringing GitLab's cool features to your command line
An open-source GitLab command line tool bringing GitLab's cool features to your command line

GLab is an open source GitLab CLI tool bringing GitLab to your terminal next to where you are already working with git and your code without switching

Dec 30, 2022
A command line tool to prompt for a value to be included in another command line.

readval is a command line tool which is designed for one specific purpose—to prompt for a value to be included in another command line. readval prints

Dec 22, 2021
Hanan - A terminal that brings out a form for inputs to a program (incomplete)

hanan a terminal that brings out a form for inputs to a program (incomplete) Dev

Nov 11, 2022
A simple command line tool using which you can skip phone number based SMS verification by using a temporary phone number that acts like a proxy.
A simple command line tool using which you can skip phone number based SMS verification by using a temporary phone number that acts like a proxy.

Fake-SMS A simple command line tool using which you can skip phone number based SMS verification by using a temporary phone number that acts like a pr

Dec 31, 2022
git-glimpse is a command-line tool that is aimed at generating a git prompt like the one from zsh-vcs-prompt.

Git GoGlimpse git-glimpse is a command-line tool that is aimed at generating a git prompt like the one from zsh-vcs-prompt. The particularity of this

Jan 27, 2022
git-xargs is a command-line tool (CLI) for making updates across multiple Github repositories with a single command.
git-xargs is a command-line tool (CLI) for making updates across multiple Github repositories with a single command.

Table of contents Introduction Reference Contributing Introduction Overview git-xargs is a command-line tool (CLI) for making updates across multiple

Dec 31, 2022
git-xargs is a command-line tool (CLI) for making updates across multiple GitHub repositories with a single command
git-xargs is a command-line tool (CLI) for making updates across multiple GitHub repositories with a single command

git-xargs is a command-line tool (CLI) for making updates across multiple GitHub repositories with a single command. You give git-xargs:

Feb 5, 2022
A command line tool for simplified docker volume command built with go

dockervol A command line tool for simplified docker volume command built with go. Features: Remove anonymous volume (beta) Remove volume by matching n

Dec 18, 2021
Hosty is a command-line utility that allows for fast inspection and editing of /etc/hosts-like files

Hosty Description Hosty is a command-line utility that allows for fast inspection and editing of /etc/hosts-like files. It is written in golang and us

Sep 3, 2021
dog is a command-line DNS client, like dig.
dog is a command-line DNS client, like dig.

dog is a command-line DNS client, like dig. It has colourful output, understands normal command-line argument syntax, supports the DNS-over-TLS and DNS-over-HTTPS protocols, and can emit JSON.

Jan 7, 2023
ls Xtended : A command line utility which lets you navigate through terminal like a pro 😎.
ls Xtended : A command line utility which lets you navigate through terminal like a pro 😎.

Navigate through terminal like a pro ?? ?? Demo • ⚗️ Installation • ?? Contribution • ❗ Known Issues ❓ Why? It's a pain to cd and ls multiple times to

Dec 14, 2022
Hasura-fzf - This command has a fzf-like UI that allows you to find and run the file version used by the hasura command

hasura-fzf This command has a fzf-like UI that allows you to find and run the fi

Sep 29, 2022
fofax is a fofa query tool written in go, positioned as a command-line tool and characterized by simplicity and speed.
fofax is a fofa query tool written in go, positioned as a command-line tool and characterized by simplicity and speed.

fofaX 0x00 Introduction fofax is a fofa query tool written in go, positioned as

Jan 8, 2023
LINE account link: Sample code for LINE account link
LINE account link: Sample code for LINE account link

LINE account link: Sample code for LINE account link This is sample code to demostration LINE chatbot account link, refer to document https://develope

Dec 11, 2021
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.

asciigraph Go package to make lightweight ASCII line graphs ╭┈╯. Installation go get github.com/guptarohit/asciigraph Usage Basic graph package main

Jan 8, 2023
Package command provide simple API to create modern command-line interface

Package command Package command provide simple API to create modern command-line interface, mainly for lightweight usage, inspired by cobra Usage pack

Jan 16, 2022
Watcher - A simple command line app to watch files in a directory for changes and run a command when files change!

Watcher - Develop your programs easily Watcher watches all the files present in the directory it is run from of the directory that is specified while

Mar 27, 2022
It‘s a cmd-line tool like `make` and `task`, supporting nested args and alias using `cobra`

It‘s a cmd-line tool like `make` and `task`, supporting nested args and alias using `cobra`. It's a makefile alternative and a shell wrapper.

Oct 18, 2022
I like reading news but I also like the terminal. I am leaning and practicing my go.
I like reading news but I also like the terminal. I am leaning and practicing my go.

I made an api and didn't know how to use it. Screenshots The initial screen when you first run the app. The screen after you specify an id. This app u

Jan 14, 2022