Révision 3813

TXM/trunk/bundles/org.txm.groovy.core/src/groovy/org/txm/macro/files/MoveFileDirMacro.groovy (revision 3813)
1
// Copyright © 2022 ENS de Lyon
2
// Licensed under the terms of the GNU General Public License version 3 (http://www.gnu.org/licenses/gpl-3.0.html)
3
// @author sheiden
4

  
5
// STANDARD DECLARATIONS
6
package org.txm.macro.files
7

  
8
import org.kohsuke.args4j.*
9
import groovy.transform.Field
10
import org.txm.rcp.swt.widget.parameters.*
11

  
12
// BEGINNING OF PARAMETERS
13

  
14
@Field @Option(name="fromFolder", usage="dossier départ racine", widget="Folder", required=true, def="")
15
def fromFolder
16

  
17
@Field @Option(name="toFolder", usage="dossier arrivée", widget="Folder", required=true, def="")
18
def toFolder
19

  
20
@Field @Option(name="extensionRegex", usage="regex de l'extension des fichiers à modifier", widget="String", required=true, def='txt')
21
def extensionRegex
22

  
23
@Field @Option(name="findRegex", usage="regex de nom à chercher", widget="String", required=true, def='’')
24
def findRegex
25

  
26
@Field @Option(name="recurse", usage="traiter les sous-dossiers", widget="Boolean", required=true, def="false")
27
def recurse
28

  
29
@Field @Option(name="dryRun", usage="chaîne de remplacement", widget="Boolean", required=true, def="false")
30
def dryRun
31

  
32
// Open the parameters input dialog box
33
if (!ParametersDialog.open(this)) return
34

  
35
// END OF PARAMETERS
36

  
37
println "In $fromFolder..."
38

  
39
if (dryRun) {
40
  println "** dry run mode: no file will be moved."
41
}
42

  
43
nMove = 0
44

  
45
if (recurse) {
46

  
47
  fromFolder.eachFileRecurse(groovy.io.FileType.FILES) { file ->
48
  
49
	fullname = file.getName()
50
	idx = fullname.lastIndexOf(".")
51
	if (idx > 0) {
52
	
53
	  name = fullname.substring(0, idx)
54
	  ext = fullname.substring(idx+1, fullname.length())
55

  
56
	  if (ext ==~ extensionRegex && name ==~ findRegex) {
57
		
58
		newfile = new File(toFolder, fullname)
59
		println file.getAbsolutePath()
60
		println "->"
61
	println newfile.getAbsolutePath()
62

  
63
	if (!dryRun) {
64
	  file.renameTo(newfile)
65
		}
66
		nMove++
67
	  }
68
	}
69
  }
70
} else {
71

  
72
  fromFolder.eachFile(groovy.io.FileType.FILES) { file ->
73
  
74
	fullname = file.getName()
75
	idx = fullname.lastIndexOf(".")
76
	if (idx > 0) {
77
	
78
	  name = fullname.substring(0, idx)
79
	  ext = fullname.substring(idx+1, fullname.length())
80

  
81
	  if (ext ==~ extensionRegex && name ==~ findRegex) {
82
		
83
		newfile = new File(toFolder, fullname)
84
		println file.getAbsolutePath()
85
		println "->"
86
	println newfile.getAbsolutePath()
87

  
88
	if (!dryRun) {
89
	  file.renameTo(newfile)
90
		}
91
		nMove++
92
	  }
93
	}
94
  }
95
}
96

  
97
if (dryRun) {
98
  println nMove+" moves to do."
99
} else {
100
  println nMove+" moves done."
101
}
102

  
103
return 1

Formats disponibles : Unified diff