-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(deps): bump remark-lint-no-shell-dollars from 3.1.2 to 4.0.0 #203
feat(deps): bump remark-lint-no-shell-dollars from 3.1.2 to 4.0.0 #203
Conversation
Diff between remark-lint-no-shell-dollars 3.1.2 and 4.0.0diff --git a/index.js b/index.js
index v3.1.2..v4.0.0 100644
--- a/index.js
+++ b/index.js
@@ -1,51 +1,66 @@
/**
+ * remark-lint rule to warn when every line in shell code is preceded by `$`s.
+ *
+ * ## What is this?
+ *
+ * This package checks for `$` markers prefixing shell code,
+ * which are hard to copy/paste.
+ *
* ## When should I use this?
*
- * You can use this package to check that not all lines in shell code are
- * preceded by dollars (`$`).
+ * You can use this package to check shell code blocks.
*
* ## API
*
+ * ### `unified().use(remarkLintNoShellDollars)`
+ *
+ * Warn when every line in shell code is preceded by `$`s.
+ *
+ * ###### Parameters
+ *
* There are no options.
*
+ * ###### Returns
+ *
+ * Transform ([`Transformer` from `unified`][github-unified-transformer]).
+ *
* ## Recommendation
*
* Dollars make copy/pasting hard.
- * Either put both dollars in front of some lines (to indicate shell commands)
- * and don’t put them in front of other lines, or use fenced code to indicate
- * shell commands on their own, followed by another fenced code that contains
- * just the output.
+ * Either put dollars in front of some lines (commands) and don’t put them in
+ * front of other lines (output),
+ * or use different code blocks for commands and output.
*
+ * [api-remark-lint-no-shell-dollars]: #unifieduseremarklintnoshelldollars
+ * [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
+ *
* @module no-shell-dollars
- * @summary
- * remark-lint rule to warn every line in shell code is preceded by `$`s.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
+ *
* @example
* {"name": "ok.md"}
*
* ```bash
- * echo a
+ * echo "Mercury and Venus"
* ```
*
* ```sh
- * echo a
- * echo a > file
+ * echo "Mercury and Venus"
+ * echo "Earth and Mars" > file
* ```
*
+ * Mixed dollars for input lines and without for output is also OK:
+ *
* ```zsh
- * $ echo a
- * a
- * $ echo a > file
+ * $ echo "Mercury and Venus"
+ * Mercury and Venus
+ * $ echo "Earth and Mars" > file
* ```
*
- * Some empty code:
- *
* ```command
* ```
*
- * It’s fine to use dollars in non-shell code.
- *
* ```js
* $('div').remove()
@@ -53,20 +68,20 @@
*
* @example
- * {"name": "not-ok.md", "label": "input"}
+ * {"label": "input", "name": "not-ok.md"}
*
* ```sh
- * $ echo a
+ * $ echo "Mercury and Venus"
* ```
*
* ```bash
- * $ echo a
- * $ echo a > file
+ * $ echo "Mercury and Venus"
+ * $ echo "Earth and Mars" > file
* ```
*
* @example
- * {"name": "not-ok.md", "label": "output"}
+ * {"label": "output", "name": "not-ok.md"}
*
- * 1:1-3:4: Do not use dollar signs before shell commands
- * 5:1-8:4: Do not use dollar signs before shell commands
+ * 1:1-3:4: Unexpected shell code with every line prefixed by `$`, expected different code for input and output
+ * 5:1-8:4: Unexpected shell code with every line prefixed by `$`, expected different code for input and output
*/
@@ -75,22 +90,36 @@
*/
+import {collapseWhiteSpace} from 'collapse-white-space'
+import {phrasing} from 'mdast-util-phrasing'
import {lintRule} from 'unified-lint-rule'
-import {visit} from 'unist-util-visit'
-import {generated} from 'unist-util-generated'
+import {SKIP, visitParents} from 'unist-util-visit-parents'
-// List of shell script file extensions (also used as code flags for syntax
-// highlighting on GitHub):
-// See: <https://github.com/github/linguist/blob/40992ba/lib/linguist/languages.yml#L4984>
+// See: <https://github.com/wooorm/starry-night/blob/a3e35db/lang/source.shell.js#L8>
const flags = new Set([
- 'sh',
+ // Extensions.
'bash',
'bats',
- 'cgi',
'command',
- 'fcgi',
+ 'csh',
+ 'ebuild',
+ 'eclass',
'ksh',
+ 'sh',
+ 'sh.in',
+ 'tcsh',
'tmux',
'tool',
- 'zsh'
+ 'zsh',
+ 'zsh-theme',
+ // Names (w/o extensions).
+ 'abuild',
+ 'alpine-abuild',
+ 'apkbuild',
+ 'gentoo-ebuild',
+ 'gentoo-eclass',
+ 'openrc',
+ 'openrc-runscript',
+ 'shell',
+ 'shell-script'
])
@@ -100,27 +129,49 @@
url: 'https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shell-dollars#readme'
},
- /** @type {import('unified-lint-rule').Rule<Root, void>} */
- (tree, file) => {
- visit(tree, 'code', (node) => {
- // Check both known shell code and unknown code.
- if (!generated(node) && node.lang && flags.has(node.lang)) {
- const lines = node.value
- .split('\n')
- .filter((line) => line.trim().length > 0)
+ /**
+ * @param {Root} tree
+ * Tree.
+ * @returns {undefined}
+ * Nothing.
+ */
+ function (tree, file) {
+ visitParents(tree, function (node, parents) {
+ // Do not walk into phrasing.
+ if (phrasing(node)) {
+ return SKIP
+ }
+
+ if (
+ node.type === 'code' &&
+ node.position &&
+ // Check known shell code.
+ node.lang &&
+ flags.has(node.lang)
+ ) {
+ const lines = node.value.split('\n')
let index = -1
- if (lines.length === 0) {
- return
- }
+ let some = false
while (++index < lines.length) {
- const line = lines[index]
+ const line = collapseWhiteSpace(lines[index], {
+ style: 'html',
+ trim: true
+ })
- if (line.trim() && !/^\s*\$\s*/.test(line)) {
- return
- }
+ if (!line) continue
+
+ // Unprefixed line is fine.
+ if (line.charCodeAt(0) !== 36 /* `$` */) return
+
+ some = true
}
- file.message('Do not use dollar signs before shell commands', node)
+ if (!some) return
+
+ file.message(
+ 'Unexpected shell code with every line prefixed by `$`, expected different code for input and output',
+ {ancestors: [...parents, node], place: node.position}
+ )
}
})
diff --git a/package.json b/package.json
index v3.1.2..v4.0.0 100644
--- a/package.json
+++ b/package.json
@@ -1,20 +1,17 @@
{
"name": "remark-lint-no-shell-dollars",
- "version": "3.1.2",
+ "version": "4.0.0",
"description": "remark-lint rule to warn when shell code is prefixed by dollars",
"license": "MIT",
"keywords": [
+ "dollar",
+ "lint",
"remark",
- "lint",
+ "remark-lint",
+ "remark-lint-rule",
"rule",
- "remark-lint-rule",
- "dollar",
"shel"
],
- "repository": {
- "type": "git",
- "url": "https://github.com/remarkjs/remark-lint",
- "directory": "packages/remark-lint-no-shell-dollars"
- },
+ "repository": "https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shell-dollars",
"bugs": "https://github.com/remarkjs/remark-lint/issues",
"funding": {
@@ -24,28 +21,34 @@
"author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
"contributors": [
- "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ "Titus Wormer <tituswormer@gmail.com>"
],
"sideEffects": false,
"type": "module",
- "main": "index.js",
- "types": "index.d.ts",
+ "exports": "./index.js",
"files": [
"index.d.ts",
+ "index.d.ts.map",
"index.js"
],
"dependencies": {
- "@types/mdast": "^3.0.0",
- "unified": "^10.0.0",
- "unified-lint-rule": "^2.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-visit": "^4.0.0"
+ "@types/mdast": "^4.0.0",
+ "collapse-white-space": "^2.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "unified-lint-rule": "^3.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
"scripts": {},
- "xo": false,
"typeCoverage": {
"atLeast": 100,
"detail": true,
- "strict": true,
- "ignoreCatch": true
+ "ignoreCatch": true,
+ "strict": true
+ },
+ "xo": {
+ "prettier": true,
+ "rules": {
+ "capitalized-comments": "off",
+ "unicorn/prefer-code-point": "off"
+ }
}
}
diff --git a/readme.md b/readme.md
index v3.1.2..v4.0.0 100644
--- a/readme.md
+++ b/readme.md
@@ -3,45 +3,43 @@
# remark-lint-no-shell-dollars
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-[![Sponsors][sponsors-badge]][collective]
-[![Backers][backers-badge]][collective]
-[![Chat][chat-badge]][chat]
+[![Build][badge-build-image]][badge-build-url]
+[![Coverage][badge-coverage-image]][badge-coverage-url]
+[![Downloads][badge-downloads-image]][badge-downloads-url]
+[![Size][badge-size-image]][badge-size-url]
+[![Sponsors][badge-funding-sponsors-image]][badge-funding-url]
+[![Backers][badge-funding-backers-image]][badge-funding-url]
+[![Chat][badge-chat-image]][badge-chat-url]
-[`remark-lint`][mono] rule to warn every line in shell code is preceded by `$`s.
+[`remark-lint`][github-remark-lint] rule to warn when every line in shell code is preceded by `$`s.
## Contents
-* [What is this?](#what-is-this)
-* [When should I use this?](#when-should-i-use-this)
-* [Presets](#presets)
-* [Install](#install)
-* [Use](#use)
-* [API](#api)
- * [`unified().use(remarkLintNoShellDollars[, config])`](#unifieduseremarklintnoshelldollars-config)
-* [Recommendation](#recommendation)
-* [Examples](#examples)
-* [Compatibility](#compatibility)
-* [Contribute](#contribute)
-* [License](#license)
+* [What is this?](#what-is-this)
+* [When should I use this?](#when-should-i-use-this)
+* [Presets](#presets)
+* [Install](#install)
+* [Use](#use)
+* [API](#api)
+ * [`unified().use(remarkLintNoShellDollars)`](#unifieduseremarklintnoshelldollars)
+* [Recommendation](#recommendation)
+* [Examples](#examples)
+* [Compatibility](#compatibility)
+* [Contribute](#contribute)
+* [License](#license)
## What is this?
-This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
-rule.
-Lint rules check markdown code style.
+This package checks for `$` markers prefixing shell code,
+which are hard to copy/paste.
## When should I use this?
-You can use this package to check that not all lines in shell code are
-preceded by dollars (`$`).
+You can use this package to check shell code blocks.
## Presets
-This rule is included in the following presets:
+This plugin is included in the following presets:
-| Preset | Setting |
+| Preset | Options |
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
@@ -49,6 +47,7 @@
## Install
-This package is [ESM only][esm].
-In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
+This package is [ESM only][github-gist-esm].
+In Node.js (version 16+),
+install with [npm][npm-install]:
```sh
@@ -56,15 +55,15 @@
```
-In Deno with [`esm.sh`][esmsh]:
+In Deno with [`esm.sh`][esm-sh]:
```js
-import remarkLintNoShellDollars from 'https://esm.sh/remark-lint-no-shell-dollars@3'
+import remarkLintNoShellDollars from 'https://esm.sh/remark-lint-no-shell-dollars@4'
```
-In browsers with [`esm.sh`][esmsh]:
+In browsers with [`esm.sh`][esm-sh]:
```html
<script type="module">
- import remarkLintNoShellDollars from 'https://esm.sh/remark-lint-no-shell-dollars@3?bundle'
+ import remarkLintNoShellDollars from 'https://esm.sh/remark-lint-no-shell-dollars@4?bundle'
</script>
```
@@ -75,20 +74,22 @@
```js
+import remarkLint from 'remark-lint'
+import remarkLintNoShellDollars from 'remark-lint-no-shell-dollars'
+import remarkParse from 'remark-parse'
+import remarkStringify from 'remark-stringify'
import {read} from 'to-vfile'
+import {unified} from 'unified'
import {reporter} from 'vfile-reporter'
-import {remark} from 'remark'
-import remarkLint from 'remark-lint'
-import remarkLintNoShellDollars from 'remark-lint-no-shell-dollars'
-main()
+const file = await read('example.md')
-async function main() {
- const file = await remark()
- .use(remarkLint)
- .use(remarkLintNoShellDollars)
- .process(await read('example.md'))
+await unified()
+ .use(remarkParse)
+ .use(remarkLint)
+ .use(remarkLintNoShellDollars)
+ .use(remarkStringify)
+ .process(file)
- console.error(reporter(file))
-}
+console.error(reporter(file))
```
@@ -96,5 +97,5 @@
```sh
-remark --use remark-lint --use remark-lint-no-shell-dollars example.md
+remark --frail --use remark-lint --use remark-lint-no-shell-dollars .
```
@@ -117,20 +118,26 @@
This package exports no identifiers.
-The default export is `remarkLintNoShellDollars`.
+It exports no additional [TypeScript][typescript] types.
+The default export is
+[`remarkLintNoShellDollars`][api-remark-lint-no-shell-dollars].
-### `unified().use(remarkLintNoShellDollars[, config])`
+### `unified().use(remarkLintNoShellDollars)`
-This rule supports standard configuration that all remark lint rules accept
-(such as `false` to turn it off or `[1, options]` to configure it).
+Warn when every line in shell code is preceded by `$`s.
+###### Parameters
+
There are no options.
+###### Returns
+
+Transform ([`Transformer` from `unified`][github-unified-transformer]).
+
## Recommendation
Dollars make copy/pasting hard.
-Either put both dollars in front of some lines (to indicate shell commands)
-and don’t put them in front of other lines, or use fenced code to indicate
-shell commands on their own, followed by another fenced code that contains
-just the output.
+Either put dollars in front of some lines (commands) and don’t put them in
+front of other lines (output),
+or use different code blocks for commands and output.
## Examples
@@ -142,25 +149,23 @@
````markdown
```bash
-echo a
+echo "Mercury and Venus"
```
```sh
-echo a
-echo a > file
+echo "Mercury and Venus"
+echo "Earth and Mars" > file
```
+Mixed dollars for input lines and without for output is also OK:
+
```zsh
-$ echo a
-a
-$ echo a > file
+$ echo "Mercury and Venus"
+Mercury and Venus
+$ echo "Earth and Mars" > file
```
-Some empty code:
-
```command
```
-It’s fine to use dollars in non-shell code.
-
```js
$('div').remove()
@@ -178,10 +183,10 @@
````markdown
```sh
-$ echo a
+$ echo "Mercury and Venus"
```
```bash
-$ echo a
-$ echo a > file
+$ echo "Mercury and Venus"
+$ echo "Earth and Mars" > file
``` @@ -190,22 +195,26 @@
Compatibility-Projects maintained by the unified collective are compatible with all maintained +When we cut a new major release, we drop support for unmaintained versions of Contribute-See [ -This project has a [code of conduct][coc]. License-[MIT][license] © [Titus Wormer][author] -[build-badge]: https://github.com/remarkjs/remark-lint/workflows/main/badge.svg -[build]: https://github.com/remarkjs/remark-lint/actions -[coverage-badge]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint.svg -[coverage]: https://codecov.io/github/remarkjs/remark-lint -[downloads-badge]: https://img.shields.io/npm/dm/remark-lint-no-shell-dollars.svg -[downloads]: https://www.npmjs.com/package/remark-lint-no-shell-dollars -[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-lint-no-shell-dollars.svg -[size]: https://bundlephobia.com/result?p=remark-lint-no-shell-dollars -[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg -[backers-badge]: https://opencollective.com/unified/backers/badge.svg -[collective]: https://opencollective.com/unified -[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg -[chat]: https://github.com/remarkjs/remark/discussions -[unified]: https://github.com/unifiedjs/unified -[remark]: https://github.com/remarkjs/remark -[mono]: https://github.com/remarkjs/remark-lint -[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c -[esmsh]: https://esm.sh -[npm]: https://docs.npmjs.com/cli/install -[health]: https://github.com/remarkjs/.github -[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md -[support]: https://github.com/remarkjs/.github/blob/main/support.md -[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md -[license]: https://github.com/remarkjs/remark-lint/blob/main/license -[author]: https://wooorm.com
|
7382055
to
e80f4ab
Compare
ccbf95b
to
268cbf1
Compare
6997970
to
67329c9
Compare
Bumps [remark-lint-no-shell-dollars](https://github.com/remarkjs/remark-lint) from 3.1.2 to 4.0.0. - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) --- updated-dependencies: - dependency-name: remark-lint-no-shell-dollars dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
67329c9
to
0d0de85
Compare
Bumps remark-lint-no-shell-dollars from 3.1.2 to 4.0.0.
Changelog
Sourced from remark-lint-no-shell-dollars's changelog.
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)