forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			92 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import { existsSync, renameSync, readFileSync, writeFileSync } from "fs" | ||
|  | import SmallLicense from "../src/Models/smallLicense" | ||
|  | 
 | ||
|  | /** | ||
|  |  * Script to move/rename image files | ||
|  |  * Useful after downloading images from wikimedia commons | ||
|  |  * Apart from moving the image files, this will also update the license file | ||
|  |  * | ||
|  |  * This will NOT update any images in the theme | ||
|  |  */ | ||
|  | 
 | ||
|  | function main(args: string[]) { | ||
|  |     // Check if the correct number of arguments are passed
 | ||
|  |     if (args.length != 2) { | ||
|  |         console.log("Usage: moveImage.ts oldPath newPath") | ||
|  |         console.log("You passed in the arguments: " + args.join(",")) | ||
|  |         console.log("Example: npx vite-node scripts/moveImage.ts images/old.jpg images/new.jpg") | ||
|  |         return | ||
|  |     } | ||
|  |     const [oldPath, newPath] = args | ||
|  | 
 | ||
|  |     // Check if the oldPath exists
 | ||
|  |     if (!existsSync(oldPath)) { | ||
|  |         console.log("The oldPath does not exist: " + oldPath) | ||
|  |         return | ||
|  |     } | ||
|  | 
 | ||
|  |     // Move file
 | ||
|  |     renameSync(oldPath, newPath) | ||
|  | 
 | ||
|  |     // If it exists also move the .license file
 | ||
|  |     const oldLicensePath = oldPath + ".license" | ||
|  |     if (existsSync(oldLicensePath)) { | ||
|  |         const newLicensePath = newPath + ".license" | ||
|  |         renameSync(oldLicensePath, newLicensePath) | ||
|  |     } | ||
|  | 
 | ||
|  |     console.log("Moved file from " + oldPath + " to " + newPath) | ||
|  | 
 | ||
|  |     // Open license_info.json in the same directory as the old file
 | ||
|  |     const licensePath = oldPath.replace(/\/[^/]+$/, "/license_info.json") | ||
|  |     if (!existsSync(licensePath)) { | ||
|  |         console.log( | ||
|  |             "The license file does not exist: " + | ||
|  |                 licensePath + | ||
|  |                 ". Skipping writing to license file." | ||
|  |         ) | ||
|  |         return | ||
|  |     } | ||
|  | 
 | ||
|  |     // Read license file
 | ||
|  |     const licenseFile = readFileSync(licensePath, "utf8") | ||
|  |     const licenseInfo = JSON.parse(licenseFile) as SmallLicense[] | ||
|  | 
 | ||
|  |     // Find correct license item
 | ||
|  |     const licenseItem = licenseInfo.find((item) => item.path === oldPath.replace(/.*\//, "")) | ||
|  | 
 | ||
|  |     // Filter out license item
 | ||
|  |     const newLicenseInfo = licenseInfo.filter((item) => item.path !== oldPath.replace(/.*\//, "")) | ||
|  |     const newLicenseFile = JSON.stringify(newLicenseInfo, null, 2) | ||
|  | 
 | ||
|  |     // Write new license file
 | ||
|  |     writeFileSync(licensePath, newLicenseFile) | ||
|  | 
 | ||
|  |     // Look for a license_info.json file in the new path
 | ||
|  |     const newLicensePath = newPath.replace(/\/[^/]+$/, "/license_info.json") | ||
|  |     if (!existsSync(newLicensePath) && licenseItem) { | ||
|  |         console.log("License file doesn't exist yet, creating new one: " + newLicensePath) | ||
|  | 
 | ||
|  |         // Create new license item
 | ||
|  |         const newLicenseItem = licenseItem | ||
|  |         newLicenseItem.path = newPath.replace(/.*\//, "") | ||
|  | 
 | ||
|  |         // Create file
 | ||
|  |         writeFileSync(newLicensePath, JSON.stringify([newLicenseItem], null, 2)) | ||
|  |     } else if (licenseItem) { | ||
|  |         console.log("Appending to existing license file: " + newLicensePath) | ||
|  | 
 | ||
|  |         // Create new license item
 | ||
|  |         const newLicenseItem = licenseItem | ||
|  |         newLicenseItem.path = newPath.replace(/.*\//, "") | ||
|  | 
 | ||
|  |         // Append to existing file
 | ||
|  |         const newLicenseFile = readFileSync(newLicensePath, "utf8") | ||
|  |         const newLicenseInfo = JSON.parse(newLicenseFile) as SmallLicense[] | ||
|  |         newLicenseInfo.push(newLicenseItem) | ||
|  |         writeFileSync(newLicensePath, JSON.stringify(newLicenseInfo, null, 2)) | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | main(process.argv.slice(2)) |