Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mvdan-sh

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mvdan-sh

A shell parser and formatter (POSIX/Bash/mksh)

  • 0.3.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
178K
decreased by-6.58%
Maintainers
1
Weekly downloads
 
Created
Source

mvdan-sh

This package is a JavaScript version of a shell package written in Go, available at https://github.com/mvdan/sh.

It is transpiled from Go to JS using a GopherJS fork, available at https://github.com/myitcv/gopherjs.

Sample usage

const sh = require('mvdan-sh')
const syntax = sh.syntax

var parser = syntax.NewParser()
var printer = syntax.NewPrinter()

var src = "echo 'foo'"
var f = parser.Parse(src, "src.sh")

// print out the syntax tree
syntax.DebugPrint(f)
console.log()

// replace all single quoted string values
syntax.Walk(f, function(node) {
        if (syntax.NodeType(node) == "SglQuoted") {
                node.Value = "bar"
        }
        return true
})

// print the code back out
console.log(printer.Print(f)) // echo 'bar'

You can find more samples in testmain.js.

Available APIs

The APIs listed below are wrapped to be usable in JavaScript. Follow the links to read their documentation.

Constructor options like syntax.KeepComments are also available.

The original io.Reader parameters can take a string or a stream.Readable object. io.Writer parameters are replaced by string returns.

The nodes you will find in the syntax tree are all equivalent to the nodes you will see on the Go API. To get the type of a node, use syntax.NodeType as the example above shows. Some of the most common node types include:

The five above will show up in your syntax tree if you parse a echo foo command, which you can see if you use syntax.DebugPrint to inspect the syntax tree.

Building

You will need:

Then, simply run ./build. The result will be index.js, which isn't minified. At the time of writing, index.js weighs 1.7MiB in plaintext, and 220KiB when minified and gzipped.

Keywords

FAQs

Package last updated on 10 Nov 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc