add tests and append tag
This commit is contained in:
parent
3dc64b4b47
commit
e7f4ded272
@ -103,6 +103,15 @@ export default class finder {
|
|||||||
return listOfTags
|
return listOfTags
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static removeTagInProperties(properties, tagName) {
|
||||||
|
|
||||||
|
let foundTagNameIndex = properties.tags.indexOf(tagName)
|
||||||
|
if (foundTagNameIndex) {
|
||||||
|
delete properties.tags[foundTagNameIndex]
|
||||||
|
}
|
||||||
|
return properties
|
||||||
|
}
|
||||||
|
|
||||||
static cleanSpaces (inputString) {
|
static cleanSpaces (inputString) {
|
||||||
return inputString.trim().replace(/ *g/, ' ')
|
return inputString.trim().replace(/ *g/, ' ')
|
||||||
}
|
}
|
||||||
|
42
index.mjs
42
index.mjs
@ -8,8 +8,8 @@
|
|||||||
--------------------- */
|
--------------------- */
|
||||||
import fs from 'node-fs'
|
import fs from 'node-fs'
|
||||||
import minimist from 'minimist'
|
import minimist from 'minimist'
|
||||||
import log from 'loglevel';
|
import log from 'loglevel'
|
||||||
import path from "node:path";
|
import path from 'node:path'
|
||||||
/** ---------------------
|
/** ---------------------
|
||||||
custom utilities and configuration
|
custom utilities and configuration
|
||||||
--------------------- */
|
--------------------- */
|
||||||
@ -21,8 +21,6 @@ import {
|
|||||||
} from './testFunctions.mjs'
|
} from './testFunctions.mjs'
|
||||||
import finder from './finder.mjs'
|
import finder from './finder.mjs'
|
||||||
|
|
||||||
import exiftool from "node-exiftool";
|
|
||||||
|
|
||||||
let mini_arguments
|
let mini_arguments
|
||||||
|
|
||||||
log.setLevel(rangement_instance.log_level)
|
log.setLevel(rangement_instance.log_level)
|
||||||
@ -61,7 +59,8 @@ function renameFile(originalFileName, fileMixedNewName) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function makeFileNameFromProperties(fileProperties) {
|
|
||||||
|
export function makeFileNameFromProperties (fileProperties) {
|
||||||
|
|
||||||
let tagPlace = ''
|
let tagPlace = ''
|
||||||
log.info('fileProperties.tags', fileProperties.tags)
|
log.info('fileProperties.tags', fileProperties.tags)
|
||||||
@ -74,18 +73,18 @@ function makeFileNameFromProperties(fileProperties) {
|
|||||||
+ ' '
|
+ ' '
|
||||||
+ (rangement_instance.keepFreeText ? fileProperties.freeText : '')
|
+ (rangement_instance.keepFreeText ? fileProperties.freeText : '')
|
||||||
+ tagPlace
|
+ tagPlace
|
||||||
+ fileProperties.extension;
|
+ fileProperties.extension
|
||||||
|
|
||||||
if (rangement_instance.replaceUnderscoreWithSpaces) {
|
if (rangement_instance.replaceUnderscoreWithSpaces) {
|
||||||
newName = newName.replace('_', ' ')
|
newName = newName.replace('_', ' ')
|
||||||
}
|
}
|
||||||
|
|
||||||
newName = newName.replace(' ', '')
|
newName = finder.cleanSpaces(newName)
|
||||||
|
|
||||||
return newName
|
return newName
|
||||||
}
|
}
|
||||||
|
|
||||||
let otherRenames = [];
|
let otherRenames = []
|
||||||
|
|
||||||
function shouldWeChangeName (structureForFile) {
|
function shouldWeChangeName (structureForFile) {
|
||||||
log.info(' ______ shouldWeChangeName ', structureForFile.fileNameOriginal)
|
log.info(' ______ shouldWeChangeName ', structureForFile.fileNameOriginal)
|
||||||
@ -106,6 +105,7 @@ function shouldWeChangeName(structureForFile) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* guess file name on one file which is not a directory
|
* guess file name on one file which is not a directory
|
||||||
* @param fullPath
|
* @param fullPath
|
||||||
@ -118,7 +118,7 @@ function guessFileNameOnOnefile(fullPath) {
|
|||||||
if (err) {
|
if (err) {
|
||||||
log.error('échec fichier', err)
|
log.error('échec fichier', err)
|
||||||
log.error('ce fichier n existe pas: ', fullPath)
|
log.error('ce fichier n existe pas: ', fullPath)
|
||||||
return;
|
return
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
let structureForFile = finder.destructurateFileName(fullPath)
|
let structureForFile = finder.destructurateFileName(fullPath)
|
||||||
@ -152,17 +152,15 @@ function guessFileNameOnOnefile(fullPath) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let expandedFileList = []
|
let expandedFileList = []
|
||||||
let cwd = path.dirname(process.cwd()) + '/' + path.basename(process.cwd());
|
let cwd = path.dirname(process.cwd()) + '/' + path.basename(process.cwd())
|
||||||
console.log('cwd', cwd)
|
console.log('cwd', cwd)
|
||||||
|
|
||||||
function guessFileNameOnAllFilesFromArguments () {
|
function guessFileNameOnAllFilesFromArguments () {
|
||||||
|
|
||||||
|
|
||||||
// parcourir les fichiers
|
// parcourir les fichiers
|
||||||
log.debug('liste des fichiers', mini_arguments._)
|
log.debug('liste des fichiers', mini_arguments._)
|
||||||
let fileList = mini_arguments._
|
let fileList = mini_arguments._
|
||||||
|
|
||||||
|
|
||||||
// test file exists
|
// test file exists
|
||||||
fileList.forEach(fullPath => {
|
fileList.forEach(fullPath => {
|
||||||
// parcourir les dossiers
|
// parcourir les dossiers
|
||||||
@ -176,37 +174,36 @@ function guessFileNameOnAllFilesFromArguments() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function readSubdirectories (baseDir) {
|
function readSubdirectories (baseDir) {
|
||||||
const newGlob = baseDir;
|
const newGlob = baseDir
|
||||||
fs.readdir(baseDir, (err, files) => {
|
fs.readdir(baseDir, (err, files) => {
|
||||||
if (err) throw err;
|
if (err) throw err
|
||||||
|
|
||||||
console.log('readSubdirectories - files', files)
|
console.log('readSubdirectories - files', files)
|
||||||
files.forEach((subDirOrFile) => {
|
files.forEach((subDirOrFile) => {
|
||||||
const newFullPath = cwd +'/'+ subDirOrFile;
|
const newFullPath = cwd + '/' + subDirOrFile
|
||||||
|
|
||||||
if (fs.existsSync(newFullPath)) {
|
if (fs.existsSync(newFullPath)) {
|
||||||
const s = fs.statSync(newFullPath);
|
const s = fs.statSync(newFullPath)
|
||||||
|
|
||||||
if (s.isFile()) {
|
if (s.isFile()) {
|
||||||
expandedFileList.push(cwd + '/' + subDirOrFile)
|
expandedFileList.push(cwd + '/' + subDirOrFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function isFolderOrFile (fileName) {
|
function isFolderOrFile (fileName) {
|
||||||
// const stat = fs.statSync(cwd + '/' + fileName);
|
// const stat = fs.statSync(cwd + '/' + fileName);
|
||||||
const stat = fs.statSync( fileName);
|
const stat = fs.statSync(fileName)
|
||||||
|
|
||||||
if (stat.isDirectory()) {
|
if (stat.isDirectory()) {
|
||||||
let fileList = readSubdirectories(fileName);
|
let fileList = readSubdirectories(fileName)
|
||||||
console.log('fileList in directory ', fileName, '\n', fileList)
|
console.log('fileList in directory ', fileName, '\n', fileList)
|
||||||
if (fileList) {
|
if (fileList) {
|
||||||
expandedFileList.push(...fileList)
|
expandedFileList.push(...fileList)
|
||||||
}
|
}
|
||||||
}
|
} else if (stat.isFile()) {
|
||||||
else if (stat.isFile()) {
|
|
||||||
expandedFileList.push(cwd + '/' + fileName)
|
expandedFileList.push(cwd + '/' + fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,7 +212,6 @@ parseArguments()
|
|||||||
|
|
||||||
guessFileNameOnAllFilesFromArguments()
|
guessFileNameOnAllFilesFromArguments()
|
||||||
|
|
||||||
|
|
||||||
// run tests
|
// run tests
|
||||||
if (rangement_instance.enableTestsLocally) {
|
if (rangement_instance.enableTestsLocally) {
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import finder from '../finder.mjs'
|
import finder from '../finder.mjs'
|
||||||
|
import { makeFileNameFromProperties } from '../index'
|
||||||
|
import { expect } from '@jest/globals'
|
||||||
|
|
||||||
describe('detection in file name', () => {
|
describe('detection in file name', () => {
|
||||||
|
|
||||||
@ -52,21 +54,69 @@ describe('modification in file name', () => {
|
|||||||
)
|
)
|
||||||
.toBe('mon texte ajouté à la fin du texte libre')
|
.toBe('mon texte ajouté à la fin du texte libre')
|
||||||
})
|
})
|
||||||
xtest('should replace text in file name', () => {
|
test('should replace text in file name', () => {
|
||||||
|
let searchString = 'vacances', replaceString = 'machin'
|
||||||
|
let replacedString = finder.searchAndReplaceInFileName(searchString, replaceString, fileNameOriginal)
|
||||||
|
expect(
|
||||||
|
replacedString
|
||||||
|
)
|
||||||
|
.toBe('mon texte -- famille machin plage.jpg')
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
xdescribe('modifications with tags', () => {
|
describe('modifications with tags', () => {
|
||||||
|
|
||||||
xtest('should add tag in file name', () => {
|
let fileNameOriginal = 'mon nom sans aucun tag.jpg'
|
||||||
|
let properties = finder.destructurateFileName(fileNameOriginal)
|
||||||
|
|
||||||
|
test('should have no tag in file properties', () => {
|
||||||
|
expect(
|
||||||
|
properties.tags
|
||||||
|
)
|
||||||
|
.toStrictEqual([])
|
||||||
|
|
||||||
})
|
})
|
||||||
xtest('should remove tag in file name', () => {
|
test('should list existing tags in file name', () => {
|
||||||
|
let fileNameOriginal = 'mon nom -- carte bidule.jpg'
|
||||||
|
let otherProperties = finder.destructurateFileName(fileNameOriginal)
|
||||||
|
|
||||||
|
expect(
|
||||||
|
otherProperties.tags
|
||||||
|
)
|
||||||
|
.toStrictEqual(['carte','bidule'])
|
||||||
|
|
||||||
})
|
})
|
||||||
xtest('should remove and add tags in file name', () => {
|
test('should add tag in file name', () => {
|
||||||
|
|
||||||
|
let newTag = 'illustration'
|
||||||
|
let newName = finder.addTagInFileName(newTag, fileNameOriginal)
|
||||||
|
|
||||||
|
expect(newName)
|
||||||
|
.toBe('mon nom sans aucun tag -- illustration.jpg')
|
||||||
|
|
||||||
|
let otherProperties = finder.destructurateFileName(newName)
|
||||||
|
expect(
|
||||||
|
otherProperties.tags
|
||||||
|
)
|
||||||
|
.toStrictEqual(['illustration'])
|
||||||
|
|
||||||
|
expect(
|
||||||
|
makeFileNameFromProperties(otherProperties)
|
||||||
|
)
|
||||||
|
.toBe('mon nom sans aucun tag -- illustration.jpg')
|
||||||
|
})
|
||||||
|
test('should remove tag in file name', () => {
|
||||||
|
|
||||||
|
let fileNameOriginal = 'mon nom avec un tag -- voyages.jpg'
|
||||||
|
// let properties = finder.destructurateFileName(fileNameOriginal)
|
||||||
|
// expect(properties.tags).toStrictEqual(['voyages'])
|
||||||
|
|
||||||
|
let newProperties = finder.removeTagInProperties(properties, 'voyages')
|
||||||
|
expect(newProperties.tags).toStrictEqual([])
|
||||||
|
})
|
||||||
|
|
||||||
|
xtest('should remove with minus prefix and add tags in file name at the same time', () => {
|
||||||
|
|
||||||
})
|
})
|
||||||
})
|
})
|
Loading…
Reference in New Issue
Block a user