https://github.com/putoutjs/git-status-porcelain
🏺Parse git status --porcelain output with a pleasure.
https://github.com/putoutjs/git-status-porcelain
git javascript nodejs porcelain status
Last synced: about 2 months ago
JSON representation
🏺Parse git status --porcelain output with a pleasure.
- Host: GitHub
- URL: https://github.com/putoutjs/git-status-porcelain
- Owner: putoutjs
- Created: 2019-09-23T16:23:19.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-21T09:46:03.000Z (over 1 year ago)
- Last Synced: 2025-01-12T22:35:39.414Z (10 months ago)
- Topics: git, javascript, nodejs, porcelain, status
- Language: JavaScript
- Homepage:
- Size: 26.4 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
Awesome Lists containing this project
README
# Porcelain [![License][LicenseIMGURL]][LicenseURL] [![NPM version][NPMIMGURL]][NPMURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Coverage][CoverageIMGURL]][CoverageURL]
[NPMURL]: https://npmjs.org/package/@putout/git-status-porcelain "npm"
[NPMIMGURL]: https://img.shields.io/npm/v/@putout/git-status-porcelain.svg?style=flat&longCache=true
[BuildStatusURL]: https://github.com/putoutjs/git-status-porcelain/actions?query=workflow%3A%22Node+CI%22 "Build Status"
[BuildStatusIMGURL]: https://github.com/putoutjs/git-status-porcelain/workflows/Node%20CI/badge.svg
[LicenseURL]: https://tldrlegal.com/license/mit-license "MIT License"
[LicenseIMGURL]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat&longCache=true
[CoverageURL]: https://coveralls.io/github/coderaiser/git-status-porcelain?branch=master
[CoverageIMGURL]: https://coveralls.io/repos/coderaiser/git-status-porcelain/badge.svg?branch=master&service=github
Parse `git status --porcelain` output with a pleasure.
## Install
```
npm i @putout/git-status-porcelain
```
## How to use?
`porcelain` can be used in simpified mode, when you just need names of modified files (`added`, `deleted`, works as well):
```js
const porcelain = require('@putout/git-status-porcelain');
porcelain({
modified: true,
untracked: true,
});
// returns
[
'README.md',
'1.js',
];
```
But you can break `porcelain` into pieces as well 😉:
```js
const porcelain = require('@putout/git-status-porcelain');
const {
run,
parse,
pick,
getNames,
} = porcelain;
// run 'git status --porcelain'
const stdout = run();
// returns
' M README.md\n?? 1.js\n';
const files = parse(stdout);
// returns
[{
name: 'README.md',
mode: ' M ',
}, {
name: '1.js',
mode: '?',
}];
const modifiedFiles = pick(files, {
modified: true,
untracked: false,
deleted: false,
added: false,
renamed: false,
unstaged: false,
});
// returns
[{
name: 'README.md',
mode: ' M ',
}];
getNames(modifiedFiles);
// returns
['README.md'];
```
## License
MIT