aboutsummaryrefslogtreecommitdiffstats
path: root/data/defscript
diff options
context:
space:
mode:
Diffstat (limited to 'data/defscript')
-rw-r--r--data/defscript/classes.kvs61
-rw-r--r--data/defscript/default.kvs1
2 files changed, 62 insertions, 0 deletions
diff --git a/data/defscript/classes.kvs b/data/defscript/classes.kvs
new file mode 100644
index 000000000..cfc9eb039
--- /dev/null
+++ b/data/defscript/classes.kvs
@@ -0,0 +1,61 @@
+# Default classes file
+
+# A helper class for installing files and generating an uninstallation alias on the fly
+class(installer,object)
+{
+ constructor()
+ {
+ $$->%iNumFiles = 0
+ }
+
+ copyFiles($0 = source dir, $1 = file regexp, $2 = target dir)
+ {
+ if($0 == "")
+ {
+ echo "[Installer] Error: the first argument of copyFiles must be a source directory"
+ halt
+ }
+
+ if($1 == "")
+ {
+ echo "[Installer] Error: the second argument of copyFiles must be a file name or file regexp"
+ halt
+ }
+
+ if($2 == "")
+ {
+ echo "[Installer] Error: the third argument of copyFiles must be a destination directory"
+ halt
+ }
+
+ if($file.exists($0))
+ {
+ %files[] = $file.ls($0,f,$1)
+ if($length(%files[]))
+ {
+ file.mkdir $2
+ foreach(%file,%files[])
+ {
+ $$->%lFiles[$$->%iNumFiles] = $str.replace($file.fixpath("$2/%file"),"\\\\","\\")
+ $$->%iNumFiles++;
+ file.copy -o "$0/%file" "$2/%file"
+ }
+ }
+ }
+ }
+
+ generateUninstallAlias($0 = alias name)
+ {
+ %c = "alias($0)$lf"
+ %c .= "{$lf"
+ if($$->%iNumFiles > 0)
+ {
+ foreach(%file,$$->%lFiles[])
+ {
+ %c .= " file.remove \"%file\"$lf";
+ }
+ }
+ %c .= "}"
+ eval %c
+ }
+};
diff --git a/data/defscript/default.kvs b/data/defscript/default.kvs
index fb270da6d..8968c4084 100644
--- a/data/defscript/default.kvs
+++ b/data/defscript/default.kvs
@@ -16,6 +16,7 @@ include "aliases.kvs" %mypath
include "events.kvs" %mypath
include "popups.kvs" %mypath
include "toolbars.kvs" %mypath
+include "classes.kvs" %mypath
#
# Set the default spam words...(for the anti-spam) detector