README.md
[![Maintainability](https://api.codeclimate.com/v1/badges/eb838a1bba6ef5fc178c/maintainability)](https://codeclimate.com/github/MrFSP/backend-project-lvl2/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/eb838a1bba6ef5fc178c/test_coverage)](https://codeclimate.com/github/MrFSP/backend-project-lvl2/test_coverage)
[![Build Status](https://travis-ci.org/MrFSP/backend-project-lvl2.svg?branch=master)](https://travis-ci.org/MrFSP/backend-project-lvl2)
[![Node.js CI](https://github.com/MrFSP/backend-project-lvl2/workflows/Node.js%20CI/badge.svg)](https://github.com/MrFSP/backend-project-lvl2/actions)
## [Проект Вычислитель отличий](https://ru.hexlet.io/professions/backend/projects/46) / [Профессия Бэкенд JavaScript (node.js)](https://ru.hexlet.io/professions/backend)
### Уровень: 2
### Цель
Второй проект является логическим развитием первого. Он захватывает большую часть синтаксических
возможностей js и использует более сложную архитектуру. Затрагиваемые темы:
* cli. В этом проекте вы научитесь создавать cli приложения так, как это делается в настоящей
жизни, с использованием специальных библиотек, занимающихся парсингом входных параметров,
валидацией и генерацией помощи.
* Форматы данных: json, yaml, ini. Кроме понимания самих форматов, вы так же научитесь
транслировать данные из js в эти форматы и обратно.
* Алгоритмическая подготовка. Вас ждет обработка и трансформация деревьев. Немного кода,
кипятящего мозг, никогда не помешает.
* Архитектурные принципы: Фасад, Адаптер. Вы познакомитесь и на практике реализуете одни
из самых распространенных подходов при организации кода.
* Полиморфизм
* Функциональное программирование
После прохождения проекта вы сможете легко настраивать свои собственные проекты,
подключать новые библиотеки, ориентироваться в структуре кода, а также получите базовые
навыки отладки. Вы прокачаете себя в использовании модулей js, работе с исполняемыми
файлами и опубликуете свой первый пакет в npm.
Красной нитью сквозь этот проект будет проходить автоматизированное тестирование, а в идеале —
разработка через тесты.
### Описание
В рамках данного проекта необходимо реализовать утилиту для поиска отличий
в конфигурационных файлах.
Возможности утилиты:
* Поддержка разных форматов
* Генерация отчета в виде plain text, pretty и json
### Установка
```sh
$ make install
```
### Запуск
```sh
$ gendiff pathToFile1 pathToFile2
```
### Демонстрации:
####
[![asciicast](https://asciinema.org/a/297754.svg)](https://asciinema.org/a/297754)
####
[![asciicast](https://asciinema.org/a/298205.svg)](https://asciinema.org/a/298205)
####
[![asciicast](https://asciinema.org/a/298226.svg)](https://asciinema.org/a/298226)