Comparison

tools/migration/prosody-migrator.lua @ 4235:899ffc1674b5

tools/migration/prosody-migrator.lua: Refactor store handler loading to report errors they throw
author Matthew Wild <mwild1@gmail.com>
date Tue, 05 Apr 2011 12:59:24 +0100
parent 4229:f15b4e9ba688
child 4239:69fe5fd861e7
comparison
equal deleted inserted replaced
4234:ce92aafc9c03 4235:899ffc1674b5
69 end 69 end
70 if not config[to_store] then 70 if not config[to_store] then
71 have_err = true; 71 have_err = true;
72 print("Error: Output store '"..to_store.."' not found in the config file."); 72 print("Error: Output store '"..to_store.."' not found in the config file.");
73 end 73 end
74 if not config[from_store].type then 74
75 have_err = true; 75 function load_store_handler(name)
76 print("Error: Input store type not specified in the config file"); 76 local store_type = config[name].type;
77 elseif not pcall(require, "migrator."..config[from_store].type) then 77 if not store_type then
78 have_err = true; 78 print("Error: "..name.." store type not specified in the config file");
79 print("Error: Unrecognised store type for '"..from_store.."': "..config[from_store].type); 79 return false;
80 else
81 local ok, err = pcall(require, "migrator."..store_type);
82 if not ok then
83 if package.loaded["migrator."..store_type] then
84 print(("Error: Failed to initialize '%s' store:\n\t%s")
85 :format(name, err));
86 else
87 print(("Error: Unrecognised store type for '%s': %s")
88 :format(from_store, store_type));
89 end
90 return false;
91 end
92 end
93 return true;
80 end 94 end
81 if not config[to_store].type then 95
82 have_err = true; 96 have_err = have_err or not(load_store_handler(from_store, "input") and load_store_handler(to_store, "output"));
83 print("Error: Output store type not specified in the config file");
84 elseif not pcall(require, "migrator."..config[to_store].type) then
85 have_err = true;
86 print("Error: Unrecognised store type for '"..to_store.."': "..config[to_store].type);
87 end
88 97
89 if have_err then 98 if have_err then
90 print(""); 99 print("");
91 print("Usage: "..arg[0].." FROM_STORE TO_STORE"); 100 print("Usage: "..arg[0].." FROM_STORE TO_STORE");
92 print("If no stores are specified, 'input' and 'output' are used."); 101 print("If no stores are specified, 'input' and 'output' are used.");