Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.FinderMenu.commands.backup.doIt
FinderMenu.init ();
local (backupFolder = user.finderMenu.finderBackupFolder);
local (somethingDone = false);
local (count = 0);
<<on backupVisit (sourcePath)
<<if file.isFolder (sourcePath) <<we only backup folders
<<local (destPath = backupFolder + file.fileFromPath (sourcePath))
<<file.sureFolder (destPath) <<make sure the folder exists
<<
<<local (lastbackup = FinderMenu.commands.backup.mostRecentBackup (destPath))
<<local (backupname = "backup #" + (lastbackup + 1))
<<local (newFolder = destPath + backupname + ":")
<<file.newFolder (newFolder)
<<
<<fileloop (f in sourcePath) <<copy the files into the backup folder
<<if FinderMenu.commands.backup.getBackupNumber (f) == 0 <<don't copy a backup folder
<<local (fname = file.fileFromPath (f))
<<msg (backupname + ":" + fname)
<<file.copy (f, newFolder + fname)
<<count++
<<somethingDone = true
<<return (true)
if (backupFolder == "") or (not file.exists (backupFolder)) {
scriptError ("Use the Set Backup Path command to set your backup folder.")};
file.sureFolder (backupFolder); <<make sure it exists
local (sourcePath, flfolder, destPath, lastbackup, backupname, newFolder);
for sourcePath in FinderMenu.getSelectionList () {
flfolder = file.isFolder (sourcePath);
destPath = backupFolder + file.fileFromPath (sourcePath);
if not flfolder {
destPath = destPath + ":"};
file.sureFolder (destPath); <<make sure the folder exists
lastbackup = FinderMenu.commands.backup.mostRecentBackup (destPath);
backupname = "backup #" + (lastbackup + 1);
newFolder = destPath + backupname + ":";
file.newFolder (newFolder);
on dofile (f) {
local (fname = file.fileFromPath (f));
msg (backupname + ":" + fname);
file.copy (f, newFolder + fname);
count++};
if flfolder {
fileloop (f in sourcePath) { <<copy the files into the backup folder
if FinderMenu.commands.backup.getBackupNumber (f) == 0 { <<don't copy a backup folder
dofile (f)}}}
else {
dofile (sourcepath)};
somethingDone = true;
return (true)};
if somethingDone {
msg ("Backup finished at " + clock.now () + ".")}
else {
dialog.alert ("Select one or more folders before choosing this command.")};
Finder.bringToFront ();
return (true)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.