https://github.com/pdronenko/gendiff-utility
gendiff CLI utility
https://github.com/pdronenko/gendiff-utility
cli cli-utility diff ini json yaml
Last synced: 8 months ago
JSON representation
gendiff CLI utility
- Host: GitHub
- URL: https://github.com/pdronenko/gendiff-utility
- Owner: pdronenko
- Created: 2019-03-04T05:03:17.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T17:14:19.000Z (about 3 years ago)
- Last Synced: 2025-05-30T14:40:32.972Z (9 months ago)
- Topics: cli, cli-utility, diff, ini, json, yaml
- Language: JavaScript
- Homepage:
- Size: 1020 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# gendiff CLI utility
[](https://codeclimate.com/github/pdronenko/project-lvl2-s439/maintainability)
[](https://travis-ci.org/pdronenko/gendiff-utility)
gendiff CLI utility, which compares two configuration files and shows a difference.
##
In this project, focus was on test-driven development (**TDD**, **Jest**). I got acquainted with parsing of **JSON/YAML/INI** formats, also learned how to work with the file system through **Node.js**. To build diffs between files, I used an **AST-tree**. Also actively used type dispatch.
В этом проекте основной упор был сделан на разработку через тестирование (**TDD**, **Jest**). Познакомился с парсингом форматов **JSON/YAML/INI**, так же научился работать с файловой системой через **Node.js**. Для построения дифов между файлами использовал **AST-дерево**. Так же активно использовал диспетчеризацию по типу.
## Setup
```sh
$ npm install -g gendiff-pdronenko
```
## Run utility
```sh
$ gendiff [options]
```
## Examples
### Plain format
```sh
$ gendiff -f plain before.ini after.ini
Property 'common.setting2' was removed
Property 'common.setting3' was updated. From true to [complex value]
Property 'common.setting6.ops' was added with value: vops
Property 'common.follow' was added with value: false
Property 'common.setting4' was added with value: blah blah
Property 'common.setting5' was added with value: [complex value]
Property 'group1.baz' was updated. From bas to bars
Property 'group1.nest' was updated. From [complex value] to str
Property 'group2' was removed
Property 'group3' was added with value: [complex value]
```
### Visual format
```sh
$ gendiff -f visual before.ini after.ini
{
common: {
setting1: Value 1
- setting2: 200
- setting3: true
+ setting3: {
key: value
}
setting6: {
key: value
+ ops: vops
}
+ follow: false
+ setting4: blah blah
+ setting5: {
key5: value5
}
}
group1: {
- baz: bas
+ baz: bars
foo: bar
- nest: {
key: value
}
+ nest: str
}
- group2: {
abc: 12345
}
+ group3: {
fee: 100500
}
}
```
### JSON format
```sh
$ gendiff -f json before.ini after.ini
[{"type":"nested","key":"common","children":[{"type":"unchanged","key":"setting1","value":"Value 1"},{"type":"deleted","key":"setting2","value":"200"},{"type":"changed","key":"setting3","addedValue":{"key":"value"},"deletedValue":true},{"type":"nested","key":"setting6","children":[{"type":"unchanged","key":"key","value":"value"},{"type":"added","key":"ops","value":"vops"}]},{"type":"added","key":"follow","value":false},{"type":"added","key":"setting4","value":"blah blah"},{"type":"added","key":"setting5","value":{"key5":"value5"}}]},{"type":"nested","key":"group1","children":[{"type":"changed","key":"baz","addedValue":"bars","deletedValue":"bas"},{"type":"unchanged","key":"foo","value":"bar"},{"type":"changed","key":"nest","addedValue":"str","deletedValue":{"key":"value"}}]},{"type":"deleted","key":"group2","value":{"abc":"12345"}},{"type":"added","key":"group3","value":{"fee":"100500"}}]
```
## Video of install and run gendiff utility