mirror of
https://github.com/knex/knex.git
synced 2025-07-24 17:31:01 +00:00
86 lines
2.6 KiB
JavaScript
Executable File
86 lines
2.6 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
|
|
// Directory constants
|
|
const scriptDirectory = __dirname
|
|
const repoDirectory = path.join(scriptDirectory, '..')
|
|
const libDirectory = path.join(repoDirectory, 'lib')
|
|
|
|
const helpText = `
|
|
Helper script to update lib/.gitignore for all .js files from .ts files.
|
|
|
|
update_gitignore_for_tsc_output.js COMMAND
|
|
|
|
COMMAND:
|
|
run: Update lib/.gitignore file.
|
|
help: Print this menu.
|
|
|
|
NOTES FOR USAGE:
|
|
1. This script is tested to work on Ubuntu 18.04 LTS.
|
|
`
|
|
|
|
const gitignoreHeader = `# DO NOT EDIT, GENERATED BY: scripts/update_gitignore_for_tsc_output.js
|
|
|
|
# Do not include tsc generated type definitions
|
|
**/*.d.ts
|
|
|
|
# Do not include tsc source maps
|
|
**/*.js.map
|
|
|
|
# Do not include .js files from .ts files
|
|
`
|
|
|
|
function main(cliCommand) {
|
|
if (cliCommand === 'run') {
|
|
console.log('Generating lib/.gitignore ...')
|
|
|
|
// Find all .ts files in lib/
|
|
const directoriesToProcess = [libDirectory]
|
|
const tsFiles = []
|
|
while (directoriesToProcess.length > 0) {
|
|
const directory = directoriesToProcess.pop()
|
|
if (!fs.existsSync(directory)) {
|
|
throw new Error("Directory doesn't exist:", directory)
|
|
}
|
|
|
|
const files = fs.readdirSync(directory)
|
|
files.forEach((file) => {
|
|
const filename = path.join(directory, file)
|
|
const stat = fs.lstatSync(filename)
|
|
if (stat.isDirectory()) {
|
|
directoriesToProcess.push(filename)
|
|
} else if (filename.endsWith('.ts') && !filename.endsWith('.d.ts')) {
|
|
tsFiles.push(filename)
|
|
console.log('Found .ts file:', filename)
|
|
}
|
|
})
|
|
}
|
|
|
|
// Get paths of .js files to ignore
|
|
const jsFilesToIgnore = tsFiles.map((filepath) => {
|
|
// Cuts off `${libDirectory}/`
|
|
const relativeTsPath = filepath.slice(libDirectory.length + 1)
|
|
// Swaps .ts for .js file ending
|
|
const relativeJsPath = relativeTsPath.slice(0, relativeTsPath.length - 3) + '.js'
|
|
return relativeJsPath
|
|
})
|
|
const jsFilesToIgnoreString = jsFilesToIgnore.join('\n')
|
|
const libGitignorePath = path.join(libDirectory, '.gitignore')
|
|
fs.writeFileSync(libGitignorePath, gitignoreHeader + jsFilesToIgnoreString + '\n')
|
|
console.log('DONE')
|
|
} else if (['help', '--help', '-h', undefined].includes(cliCommand)) {
|
|
console.log(helpText)
|
|
} else {
|
|
console.log(`Unsupported command: ${cliCommand}`)
|
|
console.log("Try running with 'help' to see supported commands.")
|
|
process.exit(1)
|
|
}
|
|
}
|
|
|
|
// Main script logic
|
|
const cliCommand = process.argv[2]
|
|
// Start the bash app's main function
|
|
main(cliCommand)
|