Upgraded code to be compatible with latest OpenDroneMap changes, added preliminary support for enum options

pull/6/head
Piero Toffanin 2017-03-29 14:50:57 -04:00
rodzic f981c402f2
commit 74ecbcc0cc
4 zmienionych plików z 27 dodań i 5 usunięć

Wyświetl plik

@ -22,6 +22,8 @@ import imp
import argparse import argparse
import json import json
sys.path.append(sys.argv[2])
imp.load_source('context', sys.argv[2] + '/opendm/context.py') imp.load_source('context', sys.argv[2] + '/opendm/context.py')
odm = imp.load_source('config', sys.argv[2] + '/opendm/config.py') odm = imp.load_source('config', sys.argv[2] + '/opendm/config.py')

Wyświetl plik

@ -397,14 +397,14 @@ module.exports = class Task{
return result; return result;
}, {}); }, {});
runnerOptions["project-path"] = fs.realpathSync(this.getProjectFolderPath()); runnerOptions["project-path"] = fs.realpathSync(Directories.data);
runnerOptions["pmvs-num-cores"] = os.cpus().length; runnerOptions["pmvs-num-cores"] = os.cpus().length;
if (this.gpcFiles.length > 0){ if (this.gpcFiles.length > 0){
runnerOptions.gcp = fs.realpathSync(path.join(this.getGpcFolderPath(), this.gpcFiles[0])); runnerOptions.gcp = fs.realpathSync(path.join(this.getGpcFolderPath(), this.gpcFiles[0]));
} }
this.runningProcesses.push(odmRunner.run(runnerOptions, (err, code, signal) => { this.runningProcesses.push(odmRunner.run(runnerOptions, this.uuid, (err, code, signal) => {
if (err){ if (err){
this.setStatus(statusCodes.FAILED, {errorMessage: `Could not start process (${err.message})`}); this.setStatus(statusCodes.FAILED, {errorMessage: `Could not start process (${err.message})`});
finished(err); finished(err);

Wyświetl plik

@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"use strict"; "use strict";
let odmRunner = require('./odmRunner'); let odmRunner = require('./odmRunner');
let assert = require('assert'); let assert = require('assert');
let logger = require('./logger');
let odmOptions = null; let odmOptions = null;
@ -84,6 +85,20 @@ module.exports = {
value = false; value = false;
} }
// If 'choices' is specified, try to convert it to array
if (values.choices){
try{
values.choices = JSON.parse(values.choices.replace(/'/g, '"')); // Convert ' to "
}catch(e){
logger.warn(`Cannot parse choices: ${values.choices}`);
}
}
if (Array.isArray(values.choices)){
type = "string"; // TODO: change to enum
domain = values.choices;
}
help = help.replace(/\%\(default\)s/g, value); help = help.replace(/\%\(default\)s/g, value);
// In the end, all values must be converted back // In the end, all values must be converted back
@ -186,7 +201,9 @@ module.exports = {
validate: function(){ validate: function(){
return true; // All strings/paths are fine return true; // All strings/paths are fine
} }
} }
// TODO: handle enum
]; ];
let checkDomain = function(domain, value){ let checkDomain = function(domain, value){

Wyświetl plik

@ -25,7 +25,8 @@ let logger = require('./logger');
module.exports = { module.exports = {
run: function(options, done, outputReceived){ run: function(options, projectName, done, outputReceived){
assert(projectName !== undefined, "projectName must be specified");
assert(options["project-path"] !== undefined, "project-path must be defined"); assert(options["project-path"] !== undefined, "project-path must be defined");
let command = [path.join(config.odm_path, "run.py")]; let command = [path.join(config.odm_path, "run.py")];
@ -43,6 +44,8 @@ module.exports = {
} }
} }
command.push(projectName);
logger.info(`About to run: python ${command.join(" ")}`); logger.info(`About to run: python ${command.join(" ")}`);
if (config.test){ if (config.test){
@ -102,7 +105,7 @@ module.exports = {
// Launch // Launch
let childProcess = spawn("python", [path.join(__dirname, "..", "helpers", "odmOptionsToJson.py"), let childProcess = spawn("python", [path.join(__dirname, "..", "helpers", "odmOptionsToJson.py"),
"--project-path", config.odm_path]); "--project-path", config.odm_path, "bogusname"]);
let output = []; let output = [];
childProcess childProcess