UNPKG

lint-staged

Version:
119 lines (100 loc) 3.25 kB
import { GIT_ERROR, TASK_ERROR } from './messages.js' import { FailOnChangesError, GitError, RestoreOriginalStateError, RestoreUnstagedChangesError, TaskError, } from './symbols.js' export const getInitialState = ({ failOnChanges = false, hideAll = false, hideUnstaged = false, hidePartiallyStaged = !(hideAll || hideUnstaged), quiet = false, revert = true, } = {}) => { const initialState = { backupHash: null, errors: new Set([]), shouldFailOnChanges: failOnChanges, hasFilesToHide: null, output: [], quiet, shouldBackup: null, shouldHideAll: hideAll, shouldHideUnstaged: hideUnstaged, shouldHidePartiallyStaged: hidePartiallyStaged, shouldRevert: revert, unstagedDiffSha256: null, unstagedPatch: null, } if (initialState.shouldHideAll) { initialState.shouldHideUnstaged = false // becomes redundant initialState.shouldHidePartiallyStaged = false // becomes redundant } else if (initialState.shouldHideUnstaged) { initialState.shouldHidePartiallyStaged = false // becomes redundant } return initialState } export const shouldHidePartiallyStagedFiles = (ctx) => ctx.shouldHidePartiallyStaged && ctx.hasFilesToHide export const shouldRestoreUnstagedChanges = (ctx) => (ctx.shouldHideAll || ctx.shouldHideUnstaged || ctx.shouldHidePartiallyStaged) && ctx.hasFilesToHide export const shouldRestoreUntrackedFiles = (ctx) => !!ctx.shouldHideAll export const updateIndexSkipped = (ctx) => { // Always apply back unstaged modifications when skipping revert or backup if (!ctx.shouldRevert || !ctx.shouldBackup) return false // Should be skipped in case of git errors if (ctx.errors.has(GitError)) { return GIT_ERROR } // Should be skipped when tasks fail if (ctx.errors.has(TaskError)) { return TASK_ERROR } } export const restoreUnstagedChangesSkipped = (ctx) => { // Should be skipped in case of git errors if (ctx.errors.has(GitError)) { return GIT_ERROR } // When complete reverting to original state is skipped, // we can still restore unstaged changes to make it easier // to do manually. if (!ctx.shouldRevert) { false } // Should be skipped when tasks fail if (ctx.errors.has(TaskError)) { return TASK_ERROR } } export const restoreOriginalStateEnabled = (ctx) => !!ctx.shouldRevert && !!ctx.shouldBackup && (ctx.errors.has(FailOnChangesError) || ctx.errors.has(TaskError) || ctx.errors.has(RestoreUnstagedChangesError)) export const restoreOriginalStateSkipped = (ctx) => { // Should be skipped in case of unknown git errors if (ctx.errors.has(GitError) && !ctx.errors.has(RestoreUnstagedChangesError)) { return GIT_ERROR } } export const cleanupEnabled = (ctx) => ctx.shouldBackup export const cleanupSkipped = (ctx) => { // "--fail-on-changes" was used, so we shouldn't drop the backup stash if (ctx.errors.has(FailOnChangesError) && !ctx.shouldRevert) { return true } // Should be skipped in case of unknown git errors if (restoreOriginalStateSkipped(ctx)) { return GIT_ERROR } // Should be skipped when reverting to original state fails if (ctx.errors.has(RestoreOriginalStateError)) { return GIT_ERROR } }