107 Commits

Author SHA1 Message Date
Nate Fischer
54049d49d8
chore: change supported node versions (#1011)
This adds testing for node v14. This removes testing for node v6 and v7
because codecov breaks on these versions. This omits node v15 because
appveyor doesn't seem to support this version. The nodejs org currently
supports [10, 12, 14, 15].

This makes a couple minor edits to the check-node-support script for
consistency with shelljs/shx#186.

This bumps the shx dependency because it seems we're hitting issue #973
on node v14.

Test: npm run check-node-support
2020-10-26 16:44:47 -07:00
Nate Fischer
a421b9e3a5
feat: add shell.cmd to replace exec (#866)
This adds an initial implementation of shell.cmd(), which is intended as
the eventual replacement for shell.exec(). This PR does not fully
implement the API, but demonstrates a simple and secure alternative, and
will allow further iteration to cover other use cases in follow-up PRs.

Design doc: https://shelljs.page.link/cmd-design

Issue #495
Test: automated test suite
2019-10-29 18:35:14 -07:00
Nate Fischer
9aef0026d4
chore: update dev deps (#971)
No change to logic.

This updates ava and nyc, to suppress npm audit error messages.

Fixes #969
2019-10-09 00:26:38 -07:00
Nate Fischer
57df38c6ea
chore(lint): update lint dependencies (#948)
This updates `eslint-config-airbnb-base` and `eslint-plugin-import`.
This also addresses lint errors these updates raise, and excludes
several rules.

This also adds a minor simplification to the gendocs script.

Test: npm run lint
Test: npm run gendocs
2019-07-12 12:36:55 -07:00
Nate Fischer
a8e543a8d0
chore(lint): upgrade eslint (#947)
This upgrades eslint to a new version to resolve a security warning.
This fixes a couple new lint errors, and disables some lint checks.

The current version of the airbnb lint config triggers
DeprecationWarnings in the new version of eslint. These warnings will be
resolved in a follow-up.

Test: npm run lint
2019-06-20 23:34:41 -07:00
Nate Fischer
5cab915f70
chore(test): no coverage by default (#920)
NYC takes forever on my local machine, and I generally prefer to look at
coverage reports on the website anyway.

This changes `npm test` to run without coverage, and changes our CI to
run `npm run test-with-coverage` instead.
2018-12-02 22:40:33 -08:00
Nate Fischer
3bb72eda8b
chore(node): drop node v4 and v5 (#917)
This drops support for node v4 and v5. Neither is currently supported by
the Node.js team, nor by the `npm` CLI team, so it's hard to justify we
continue to support it.

The new minimum supported version is v6.

Fixes #873
2018-12-01 20:23:46 -08:00
Nate Fischer
06450b8070
chore: script to bump supported node versions (#913)
No change to node support, this just adds a script.

This adds a script to check that we correctly configure all supported
node versions, since we need to update quite a few spots (README.md,
package.json, travis, appveyor).

Issue #873
Test: manual
2018-12-01 19:21:45 -08:00
Nate Fischer
87c1ff7d4c
chore(npm): remove lockfile (#911)
This removes our lockfile and our `ci-or-install` script. The lockfile
caused headaches, since `npm install` would modify the lockfile.

Unfortunately, `ci-or-install` (added in #896) didn't work reliably on
appveyor, so removing the lockfile seems easier. We remove the script
since it's now obsolete.

Fixes #893
2018-11-29 22:55:45 -08:00
Nate Fischer
d4d1317ce6
0.8.3 2018-11-12 20:49:46 -08:00
Nate Fischer
37acb86e89
chore(npm): add ci-or-install script (#896)
* chore(npm): add ci-or-install script

This adds a script which checks the npm version and runs either `npm ci`
or `npm install` based on support. This is primarily to work around an
issue where `npm install` modifies `package-lock.json` for newer npm
versions.

A side benefit is that `npm ci` is slightly faster than `npm install`.

Fixes #893
2018-10-27 13:48:31 -07:00
Nate Fischer
72ff790f4f
chore: bump dev dependencies and add package-lock (#864)
No change to logic.

This reduces install spam by bumping codecov to avoid depending on a
deprecated graceful-fs version, as well as adding a package-lock.json.
2018-06-28 14:15:38 -07:00
Nate Fischer
dd5551da0c
chore: update shelljs-release version (#846)
This bumps the version of our dependency, shelljs-release. I just cut
the 3.0 release for shelljs-release, which contains support for the
`--otp` flag, as well as the significant refactoring work we put in.
2018-05-08 21:30:32 -07:00
Nate Fischer
3b266d0a29 0.8.2 2018-05-08 00:09:33 -07:00
Nate Fischer
7058d63048 0.8.1 2018-01-20 14:58:43 -08:00
Nate Fischer
ec0d60aecf 0.8.0 2018-01-11 23:13:59 -08:00
Nate Fischer
8ab0a3a393
chore: update nyc dependency (#805)
This is to fix an issue related to the most recent node 8.x.y versions.

Fixes #803
2017-11-13 22:55:41 -08:00
Nate Fischer
cd1aabab39 chore: set AVA options (#780)
This sets 2 AVA options:

 * `serial`: same behavior as the CLI flag, which this replaces
 * `powerAssert`: if an assert fails, it will inspect all objects involved in
   the failed assert. This causes readability issues if `t.falsy(shell.error())`
   breaks, since it inspects all of `shell` (which is way too large).

AVA options are a little easier to manage than CLI options (we only update one
place instead of 2 in `package.json`).
2017-10-12 23:23:09 -07:00
Nate Fischer
2ee83ebf74 refactor(test): update AVA and refactor tests (#760)
This updates tests for `AVA` 19.0.0+.

`AVA` 0.18.0 has a breaking change which changes the current working directory
for tests. As a result, we need to change 'resources' -> 'test/resources' (and
 similar path changes).

`AVA` 0.19.0 has a breaking change that all tests must run at least one assert.
This breaking change was already resolved by #746, so no change was necessary in
this PR.

This updates to `AVA` 0.21.0, since there are no other breaking changes.
2017-08-11 11:03:13 -07:00
Nate Fischer
38b57c8942 chore: add skipOnWin and skipOnUnix test helpers (#746)
This adds `skipOnWin` and `skipOnUnix` to help us manage our platform-dependent
tests. These methods give a nice warning message when we skip tests. We may also
consider adding warnings when running platform-dependent tests.

Part of the motivation for this is if we ever update to AVA v0.19. This version
requires at least one assertion per test case. While this could be disabled with
an AVA setting, we instead benefit from warnings for any case when we
unintentionally skip assertions.

This adds chalk as a dev dependency to enable colored messages.
2017-06-18 11:51:01 -07:00
Nate Fischer
f74e783890 chore: remove v0.12 and iojs support (#648)
Fixes #647
2017-06-06 21:10:27 -07:00
Nate Fischer
38645675f1 0.7.8 2017-06-06 21:01:21 -07:00
Nate Fischer
95638cc773 0.7.7 2017-03-08 22:37:03 -08:00
Nate Fischer
fb09c6aab8 chore: add codecov script to appveyor CI (#686)
Invoke codecov on appveyor builds too, so that we can get coverage for
Windows-specific lines of code.

Partial fix for #671
2017-03-05 10:25:44 -08:00
Nate Fischer
eb5230a53c chore: add codecov (#682)
* chore: add codecov

Add codecov to ShellJS

Partial fix for #671

* Add codecov badge to README
2017-03-04 17:53:37 -08:00
Nate Fischer
2d0428b1c9 Switch commands.json -> commands.js (#668)
WebPack has issues with importing JSON directly and using JavaScript
methods on it. For this reason, using the `.forEach()` method on the
imported JSON array caused a method-not-found error.

Instead, we can make this a real JavaScript array by keeping it in a
JavaScript file and exporting it as a field.

It should be noted that exporting it as `exports = [...]` does not work,
because Node won't actually interpret it as a JavaScript array (with
the required methods). So instead we can export it as
`exports.list = [...]` and access the `list` field to get the real
JavaScript array of command names.

Fixes #667
2017-02-28 01:34:51 -08:00
Brandon Freitag
2e29ba29e6 0.7.6 2017-01-08 14:28:27 -08:00
Nate Fischer
ac0ff873f1 refactor: add config.reset() and .resetForTesting() (#641)
Add .reset() and .resetForTesting() to shell.config and use .resetForTesting()
as a standard set-up for unit tests.
2017-01-07 22:40:38 -08:00
Nate Fischer
a3e622ba0d chore: set up test coverage (#638)
Use nyc for test coverage and ignore all nyc-related files in git & eslint.
This increases testing time (~35sec -> ~60sec on my 4-core machine).
2016-12-27 19:39:13 -08:00
Brandon Freitag
7fa4b995bf Finalize moving to ava (#630)
* Move ava-test/ directory to test/

* Remove unnecessary run-tests.js script

* Run only ava during npm test script
2016-12-20 11:27:02 -08:00
Nate Fischer
1548b3da00 refactor: list all commands in commands.json (#616)
* refactor: list all commands in commands.json

This also changes the order of commands in the docs, due to how I changed
the doc-generating script.

* fix lint error and alphabetize command list
2016-12-14 17:57:11 -08:00
Nate Fischer
ffb1cf3db9 chore: switch to files attribute from npmignore (#613)
Prefer the `files` attribute over `.npmignore` to minimize the bytes users
download when installing ShellJS. This cuts the size down from ~1.8M to ~1.2M.
2016-12-08 22:26:49 -08:00
Nate Fischer
81e2803c45 test: set up ava and move cd.js (#561)
* test: set up ava and move cd.js

Set up ava as the new test framework. Migrate the tests for the cd command to
use the ava framework.

* refactor: reorder imports, remove useless dep
2016-11-18 19:50:36 -08:00
Brandon Freitag
c6e4c40b5a Add Brandon Freitag to maintainers/contributors (#553) 2016-11-10 00:36:47 -08:00
Nathan Phillip Brink
3bc0852702 Get pipe tests running on Windows. (#550)
* Get pipe tests running on Windows.

I used the FIND command which ships with Windows as something to
pass data through.

The test checks that a POSIX-like find(1) exists and skips the tests
if this condition is true because Windows-provided FIND is incompatible
with find(1).

* Remove obvious comments.

Requested by @nfischer. I removed both the unix-specific and Windows
specific comments because I figure they both fall under being too
obvious based on being in the process.platform conditional.

* Make FIND usage cleaner and document it.

* Use shx grep to make pipe tests portable.

Discussed in #550. To test piping and its interaction with
real processes, a shellout is necessary. But on Windows,
you cannot rely on utilities like grep(1) being around.
Using shx, we can write portable code. Otherwise, the
tests have to be conditional on the platform and be
way more complicated.
2016-11-08 20:51:06 -08:00
Nate Fischer
1a15022f27 0.7.5 2016-10-26 22:50:10 -07:00
Nate Fischer
9eb9bf9773 0.7.4 2016-08-25 18:27:14 -07:00
Nate Fischer
2395214fee chore: switch to eslint (#504)
* chore: switch to eslint

* fix: works on older versions of NodeJS now

* chore: fix curly braces

* chore: fix indents and remove jshint references
2016-08-07 12:16:29 -07:00
Nate Fischer
cb8b6a7e11 0.7.3 2016-07-27 16:44:55 -07:00
Nate Fischer
dee29a07b2 0.7.2 2016-07-24 23:40:09 -07:00
Nate Fischer
2c80e2e02c 0.7.1 2016-07-22 15:25:03 -07:00
Nate Fischer
0bab3e9b47 chore: update release process (#459) 2016-06-20 10:06:27 -07:00
Nate Fischer
fbe7458ad2 chore: switch to shelljs-changelog (#460) 2016-06-17 11:22:38 -07:00
Nate Fischer
4134727490 chore: clarify message for when docs are not generated (#457) 2016-06-09 07:35:37 -07:00
Nate Fischer
2e87f14c07 chore: update jshint and move it to an npm script (#454) 2016-06-07 16:57:42 -07:00
Nate Fischer
36cc243efd chore(gendocs): add npm run gendocs command (#455) 2016-06-04 17:06:00 -07:00
Levi Thomason
87aaefa498 chore: setup changelog (#443)
* chore(changelog): add scripts

* docs(release): update release docs

* chore(editorconfig): add config

* docs(changelog): updated by levithomason
2016-05-16 21:03:26 -07:00
Nate Fischer
bce3a53bb1 chore: bump version (#429) 2016-04-25 14:37:14 -07:00
Nate Fischer
c4822ad20e Add shelljs and bash as keywords in package.json 2016-03-13 15:55:05 -07:00
Kenneth Powers
852abff910 Use rechoir and interpret for scripts. 2016-03-10 16:52:27 -08:00