L'esempio seguente è la creazione di una macro in WinCvs 2.0 e permette di selezionare uno o più file da una directory e copiarli in un' altra mantenendo il path iniziale.
Potrebbe essere utile per creare un pacchetto di file.
Ecco come fare:
- chiudere eventualmente WinCvs se aperto;
- creare il file AddFileToDirTest.py nella directory ".../wincvs/Macros";
- copiare il codice qui sotto;
- modificare eventualmente i path o parametri all'interno della macro;
- riavviare WinCvs (ricordarsi di avere python installato sul pc e aver fatto riferimento nelle impostazioni sulla dll di python);
- selezionare i file da copiare;
- selezionare la macro AddFileToDirTest.
# start copy here
from cvsgui.Macro import *
from cvsgui.CvsEntry import *
from cvsgui.ColorConsole import *
import cvsgui.App, os.path, os
import string
import copy
import shutil
class AddFileToDirTest(Macro):
def __init__(self):
Macro.__init__(self, "AddFileToDirTest", MACRO_SELECTION, 0, "Add File To Dir Test")
def CreaDirectory(self,dirFile):
if not os.path.isdir(dirFile):
os.makedirs(dirFile)
print "- directory created: " + dirFile
def OnCmdUI(self, cmdui):
sel = cvsgui.App.GetSelection()
isOnlyExistingFiles = len(sel) > 0
for s in sel:
if not s.IsFile() or s.IsMissing():
isOnlyExistingFiles = 0
break
cmdui.Enable(isOnlyExistingFiles)
if isOnlyExistingFiles:
cmdui.SetText("Add File selected to Directory")
else:
cmdui.SetText("Click on file to select")
def Run(self):
print "* Add file in progress... *"
#+--------- start set here--------+
#example directory root: c:\temp\test
pathComuneDoveCopiareIFile ="c:\\" + "temp" + "\\"
nomeDirectoryComuneATuttiIProgetti="test" #insert the name into common directory
#+--------- stop set here --------+
sel = cvsgui.App.GetSelection()
paths = []
for s in sel:
paths.append(s.GetFullName())
nomeFile=os.path.split(s.GetFullName())
dir = os.path.dirname(os.path.commonprefix(paths))
print "- directory selected: ", dir
where = dir.find(nomeDirectoryComuneATuttiIProgetti)
dirReplace = dir[(where):]
dirDaCreare= pathComuneDoveCopiareIFile + dirReplace
self.CreaDirectory(dirDaCreare)
for s in sel:
paths.append(s.GetFullName())
nomeFile=os.path.split(s.GetFullName())
pathDoveCopiare = dirDaCreare + "\\" + nomeFile[1]
print "- copy file in:" + pathDoveCopiare
shutil.copyfile(s.GetFullName(), pathDoveCopiare)
print "-- filename copied: " + nomeFile[1]
print "* End elaboration *"
AddFileToDirTest()
# end copy here
Un esempio in questa figura: