Coder Social home page Coder Social logo

sane-fmt / action Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 781 KB

Use sane-fmt to check for TypeScript/JavaScript code formatting

License: MIT License

TypeScript 87.89% JavaScript 12.11%
actions ci formatter github-actions javascript sane-fmt typescript utility

action's Introduction

sane-fmt

GitHub Actions Status Travis Build Status

Opinionated code formatter for TypeScript and JavaScript.

Rules

  • Prefer single quotes.
  • No semicolons.
  • Trailing commas for multi-line.
  • No function parentheses for arrow function with single argument.
  • Multi-line union and intersection use consistent leading separator.

Preview.

Read exports/sane-fmt.typescript.json, src/rules.rs, and tests/rules.rs for more information.

Installation

Download prebuilt binaries

Go to the release page.

cargo install sane-fmt

Links:

From NPM

WASM (all platform)

npm i -g @sane-fmt/wasm32-wasi

Links:

Native binaries

The WASM package while work on all platform, it is slow to start. For better speed, install one of the following packages instead:

For Linux:

For macOS:

For Windows:

Links:

Download source and compile

paru -S sane-fmt

Links:

Download prebuilt binary

paru -S sane-fmt-bin

Links:

Use with Dprint

If you already have Dprint, you can skip installing sane-fmt binary. Create a dprint.json file with the following content:

{
  "$schema": "https://dprint.dev/schemas/v0.json",
  "projectType": "openSource",
  "extends": "https://github.com/sane-fmt/sane-fmt/raw/master/exports/sane-fmt.dprint.json",
  "includes": [
    "**/*.js",
    "**/*.ts"
  ],
  "excludes": [
    ".git",
    "node_modules"
  ],
  "plugins": [
    "https://plugins.dprint.dev/typescript-${DPRINT_TYPESCRIPT_VERSION}.wasm"
  ]
}

Notes:

  • Replace master in the "extends" line above with appropriate sane-fmt version.
  • Replace ${DPRINT_TYPESCRIPT_VERSION} above with appropriate dprint-plugin-typescript version.

See also:

Usage

Format all TypeScript and JavaScript files

sane-fmt --write

This command would reformat all TypeScript and JavaScript files.

Check for all TypeScript and JavaScript files

sane-fmt

This command would check all TypeScript and JavaScript files.

Format only some files

sane-fmt --write foo.ts bar.js

This command would only reformat foo.ts and bar.js.

Format all TypeScript and JavaScript files in a directory

sane-fmt --write src/

This command would reformat all TypeScript and JavaScript files within src/ directory.

Check all TypeScript and JavaScript files in a list

Each line of list.txt is a path to a TypeScript/JavaScript file.

sane-fmt --include=list.txt

Check all TypeScript and JavaScript files from a Git repo

git ls-files | grep -Ei '\.(js|ts)$' | sane-fmt --include=-

GitHub Actions

sane-fmt also provides a convenient way to integrate with GitHub Actions. To use it, simply add --log-format=github-actions, like so:

sane-fmt --log-format=github-actions --details=diff

When this command is executed within a GitHub Actions runner, it will:

  • Annotates unformatted files.
  • Group diffs by file names (if --details=diff).
  • Export total, changed, and unchanged as outputs.

Recommendation: This action will install sane-fmt and execute it for you.

Print help message

sane-fmt --help

Shell Completions

If you installed sane-fmt via the AUR, completions for bash, fish, and zsh are already installed for you.

Shell completion files are located in ./exports directory of this repo or the Release Page with name in form of completion.<extension> where <extension> is corresponding file extension of target language. Install them to appropriate locations in your filesystem to use.

Become a Patron

My Patreon Page.

Frequently Asked Questions

What is this program?

sane-fmt is an opinionated code formatter for TypeScript and JavaScript powered by dprint. You can think of it as a portable Dprint config file that is always up-to-date.

What is the point of this program?

I want to apply a single, consistent formatting for all my codes regardless of environment without complex tooling.

I have considered using Prettier or Dprint, but that would mean having to set up Node.js even in non-Node.js environments. I also don't like copying my config files back-and-forth to update them.

On the other hand, setting up sane-fmt is simple: just download the binary.

How to customize the rules?

Customization is antithetical to the purpose of this project, and as such, the sane-fmt command does not have customization capability.

However, if you still want a copy of sane-fmt with your own customized rules, do one of the following:

  • Use sane-fmt as a library crate.
  • Fork this project.
  • Just use dprint.

License

MIT © Hoàng Văn Khải

action's People

Contributors

dependabot[bot] avatar ksxgithub avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar

Watchers

 avatar  avatar

action's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/test.yaml
  • actions/checkout v3
  • actions/setup-node v3.6.0
  • pnpm/action-setup v2.2.4
npm
package.json
  • node-fetch ^2.6.1
  • @actions/core ^1.10.0
  • js-yaml ^4.0.0
  • unique-temp-path ^0.1.3
  • @types/js-yaml ^4.0.0
  • @types/node-fetch ^2.5.10
  • @types/node ^14.14.37
  • @vercel/ncc ^0.34.0
  • typescript ^4.2.4

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.