diff --git a/baas/dup_calls.js b/baas/dup_calls.js
index 522f47397492fdf54b4e39dfc16e427840e92053..1fe9ce673b35a44485ab0d109c0e93029d8314ff 100644
--- a/baas/dup_calls.js
+++ b/baas/dup_calls.js
@@ -149,20 +149,33 @@ function load_timeview() {
call_duplicity("timeview", get_backup_set(), false);
}
+function array_to_str(args) {
+ var str = "";
+ for(var i = 0; i < args.length; i++) {
+ str += args[i] + " ";
+ }
+ return str;
+}
function call_duplicity(mode, backup_set, force) {
+ toggle_error(false, "");
var win_cmd = "";
+ var args = [];
+
if(process.platform == 'win32') {
win_cmd = build_win_commands();
+ args.push(win_cmd, DUPLICITY_PATH);
} else {
set_envs();
}
- var args = [];
switch(mode) {
case "backup":
- args = [backup_set.backup_type, // full | incremental
- backup_set.local_dir,
- "swift://" + backup_set.container];
+ var local_dir = (process.platform == "win32") ?
+ get_unix_path(backup_set.local_dir) :
+ backup_set.local_dir;
+ args.push(backup_set.backup_type, // full | incremental
+ local_dir,
+ "swift://" + backup_set.container);
args.push("--exclude-device-files");
args.push("--num-retries", "2");
@@ -187,7 +200,10 @@ function call_duplicity(mode, backup_set, force) {
} else {
local_dir = $("#res-directory").html();
}
- args = ["swift://" + container_name, local_dir];
+ if(process.platform == "win32") {
+ local_dir = get_unix_path(local_dir);
+ }
+ args.push("swift://" + container_name, local_dir);
if(timestamp) args.push("--time", timestamp);
if(file_to_restore) args.push("--file-to-restore",
@@ -197,12 +213,12 @@ function call_duplicity(mode, backup_set, force) {
case "status":
case "timeview":
- args = ["collection-status", "swift://" + backup_set.container];
+ args.push("collection-status", "swift://" + backup_set.container);
break;
case "remove":
var time = $("#remove-all").val();
- args = ["remove-older-than", time,
- "swift://" + backup_set.container];
+ args.push("remove-older-than", time,
+ "swift://" + backup_set.container);
break;
default:
break;
@@ -210,6 +226,9 @@ function call_duplicity(mode, backup_set, force) {
var log_file = path.join(BAAS_LOG_DIR, "dup_" +
new Date().toISOString() + ".log");
+ if(process.platform == "win32") {
+ log_file = get_unix_path(log_file);
+ }
args.push("--log-file", log_file);
if(backup_set) {
args.push("--ssl-cacert-file", clouds[backup_set.cloud].cert);
@@ -220,7 +239,14 @@ function call_duplicity(mode, backup_set, force) {
if(force) args.push("--force");
// call duplicity
- var wProcess = spawn(DUPLICITY_PATH, args);
+ var wProcess = null;
+ if(process.platform == "win32") {
+ var args_str = array_to_str(args);
+ wProcess = spawn(CYGWIN_BASH, ["-c", args_str]);
+ } else {
+ wProcess = spawn(DUPLICITY_PATH, args);
+ }
+
$("html,body").animate(
{scrollTop: $("#msg").offset().top}, "slow");