ignore-sync
Version:
a CLI tool to build and sync *ignore files across files and repositories
36 lines (26 loc) • 889 B
JavaScript
import { LINE_BREAK } from '../constants.js'
const prependRelativePath = (pattern, relativeDir) => {
if (pattern.startsWith('!')) {
return '!' + prependRelativePath(pattern.slice(1), relativeDir)
}
if (pattern.startsWith('/')) {
return [relativeDir, pattern.slice(1)].join('/')
}
if (pattern.includes('/') && pattern.indexOf('/') !== pattern.length - 1) {
return [relativeDir, pattern].join('/')
}
return [relativeDir, '**', pattern].join('/')
}
export default function formatRelativeIgnoreFile(fileContent, relativeDir) {
const splittedFileContent = fileContent.split(LINE_BREAK)
const edittedFileContent = splittedFileContent.map((line) => {
if (!line.trim()) {
return line
}
if (line.startsWith('#')) {
return line
}
return prependRelativePath(line, relativeDir)
})
return edittedFileContent.join(LINE_BREAK)
}