Conflicter (adapter, force, bail)

The Conflicter is a module that can be used to detect conflict between files. Each Generator file system helpers pass files through this module to make sure they don't break a user file.

When a potential conflict is detected, we prompt the user and ask them for confirmation before proceeding with the actual write.

new Conflicter (adapter, force, bail)

Parameters:
Name Type Description
adapter TerminalAdapter

The generator adapter

force Boolean

When set to true, we won't check for conflict. (the conflicter become a passthrough)

bail Boolean

When set to true, we will abort on first conflict. (used for testing reproducibility)

Properties:
Name Type Description
force Boolean

same as the constructor argument

Methods

_detectConflict (file) → {Boolean}

Detect conflicts between file contents at filepath with the contents passed to the function

If filepath points to a folder, we'll always return true.

Based on detect-conflict module

Parameters:
Name Type Description
file Object

File object respecting this interface: { path, contents }

Returns:
Boolean -

true if there's a conflict, false otherwise.

_printDiff (file)

Print the file differences to console

Parameters:
Name Type Description
file Object

File object respecting this interface: { path, contents }

checkForCollision (filepath, contents, callback)

Add a file to conflicter queue

Parameters:
Name Type Description
filepath String

File destination path

contents String

File new contents

callback function

callback to be called once we know if the user want to proceed or not.

collision (file, cb)

Check if a file conflict with the current version on the user disk

A basic check is done to see if the file exists, if it does:

  1. Read its content from fs
  2. Compare it with the provided content
  3. If identical, mark it as is and skip the check
  4. If diverged, prepare and show up the file collision menu
Parameters:
Name Type Description
file Object

File object respecting this interface: { path, contents }

cb function

Callback receiving a status string ('identical', 'create', 'skip', 'force')

resolve (cb)

Process the potential conflict queue and ask the user to resolve conflict when they occur

The user is presented with the following options:

  • Y Yes, overwrite
  • n No, do not overwrite
  • a All, overwrite this and all others
  • x Exit, abort
  • d Diff, show the differences between the old and the new
  • h Help, show this help
Parameters:
Name Type Description
cb function

Callback once every conflict are resolved. (note that each file can specify it's own callback. See #checkForCollision() )