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");