Skip to content

Latest commit

 

History

History
118 lines (89 loc) · 3.19 KB

README_TEMPLATE.md

File metadata and controls

118 lines (89 loc) · 3.19 KB

sane-fmt

{DESCRIPTION}.

Usage in Deno

  • Deno.version.deno: {DENO_VERSION}
  • Deno.version.v8: {V8_VERSION}
  • Deno.version.typescript: {TYPESCRIPT_VERSION}

Command Line Interface

⚠ WARNING: Due to technical limitations, the main CLI currently does not support Windows. You may download the native version from the GitHub Release page of sane-fmt. The stdio CLI is still supported.

Installation:

deno install \
  --allow-read \
  --allow-write \
  --allow-env \
  --name=sane-fmt \
  https://deno.land/x/sane_fmt@{VERSION}/main.js

Environment Variables:

  • SANE_FMT_DENO_PREOPENS: A list of preopened directories. Its delimiter is colon (:) on Linux/Unix and semicolon (;) in Windows.

Usage:

{CLI_USAGE}

Unlike the feature-packed main CLI, the stdio CLI only function is to read TypeScript code from stdin and print formatted code to stdout.

Installation:

deno install --name=sane-fmt-stdio https://deno.land/x/sane_fmt@{VERSION}/stdio.js

Usage Example:

echo 'const message="hello world";' | sane-fmt-stdio

Expected Output:

const message = 'hello world'

Programming Interface

Example: Format a file

import Context from 'https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts'
import { u8v } from 'https://deno.land/x/sane_fmt@{VERSION}/index.ts'
const context = new Context({
  args: ['sane-fmt', 'example-directory/example-file.ts'],
  stdin: Deno.stdin.rid,
  stdout: Deno.stdout.rid,
  stderr: Deno.stderr.rid,
  preopens: {
    'example-directory': 'example-directory',
  },
})
const module = await WebAssembly.compile(u8v)
const instance = await WebAssembly.instantiate(module, {
  wasi_snapshot_preview1: context.exports,
})
const status = context.start(instance)
if (status) {
  throw new Error(`Program exits with code ${status}`)
}

Example: Read unformatted input and print formatted output

import Context from 'https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts'
import { u8v } from 'https://deno.land/x/sane_fmt@{VERSION}/index.ts'
const context = new Context({
  args: ['sane-fmt', '--stdio'],
  stdin: Deno.stdin.rid,
  stdout: Deno.stdout.rid,
  stderr: Deno.stderr.rid,
})
const module = await WebAssembly.compile(u8v)
const instance = await WebAssembly.instantiate(module, {
  wasi_snapshot_preview1: context.exports,
})
const status = context.start(instance)
if (status) {
  throw new Error(`Program exits with code ${status}`)
}

License

MIT © Hoàng Văn Khải