From 2b769d555619b4089a0b413a1aae4bd6b73bfd63 Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Mon, 11 Jan 2010 09:27:38 +0000 Subject: [PATCH] web: adapt drush commands to work in pipe mode --- web/drupal/modules/logger/logger.drush.inc | 62 ++++++++++++++++------ 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/web/drupal/modules/logger/logger.drush.inc b/web/drupal/modules/logger/logger.drush.inc index 8cd4ee5..2934552 100644 --- a/web/drupal/modules/logger/logger.drush.inc +++ b/web/drupal/modules/logger/logger.drush.inc @@ -7,18 +7,21 @@ function logger_drush_command() { $items = array(); - $items['logger create'] = array( - 'callback' => '_logger_create', + $items['logger create node'] = array( + 'callback' => '_logger_create_node', 'description' => 'Create a new sensor node entry.', 'arguments' => array( 'serial' => 'Sensor node serial number.', 'country' => 'Destination country.', 'uid' => 'User ID.', + ), + 'options' => array( + '--pipe' => 'Returns a space delimited list of created entries.', ), ); - $items['logger assign'] = array( - 'callback' => '_logger_assign', + $items['logger assign node'] = array( + 'callback' => '_logger_assign_node', 'description' => 'Assign a sensor node to a user.', 'arguments' => array( 'serial' => 'Sensor node serial number.', @@ -26,6 +29,22 @@ function logger_drush_command() { ), ); + $items['logger config meter'] = array( + 'callback' => '_logger_config_meter', + 'description' => 'Configure a specific meter.', + 'arguments' => array( + 'meter' => 'Meter ID.', + 'type' => 'Meter type.', + 'function' => 'Meter function.', + 'phase' => 'Meter phase. Only applicable in case of type = electricity.', + 'constant' => 'Meter constant. Only applicable in case of type = electricity.', + 'unit' => 'Meter unit.', + ), + 'options' => array( + '--pipe' => 'Returns ok.', + ), + ); + $items['logger alias'] = array( 'callback' => '_logger_alias', 'description' => 'Create aliases for meter/sensorIDs.', @@ -41,7 +60,7 @@ function logger_drush_command() { /** * Drush command callbacks. */ -function _logger_create($serial, $country ="", $uid = 0) { +function _logger_create_node($serial, $country ="", $uid = 0) { // guard against duplicating entries for the same S/N $count = db_result(db_query("SELECT COUNT(device) FROM {logger_devices} WHERE serial = %d", $serial)); if ($count > 0) { @@ -61,17 +80,14 @@ function _logger_create($serial, $country ="", $uid = 0) { $result = db_query("INSERT INTO {logger_devices} (device, serial, uid, sha, created, country) VALUES ('%s', %d, %d, '%s', %d, '%s')", $device, $serial, $uid, $sha, $created, $country); if (!$result) drush_set_error('LOGGER_CREATE_DEVICE_ENTRY', dt('Error creating a device entry for @device.', array('@device' => $device))); - if (!drush_get_error()) drush_log(dt('Successfully created the device/key: @device / @key for S/N: @serial', array('@device' => $device, '@key' => $sha, '@serial' => $serial)), 'ok'); + if (!drush_get_error()) { + drush_log(dt('Successfully created the device/key: @device / @key for S/N: @serial', array('@device' => $device, '@key' => $sha, '@serial' => $serial)), 'ok'); + $pipe[] .= 'DEVICE='.$device; + $pipe[] .= 'KEY='.$sha; + } // create an entry in the {logger_meters} table for ($i = 0; $i < 4; $i++) { - if ($i == 0) { - $type = 'electricity'; - } - else { - $type = 'undefined'; - } - $permissions = 62; $meter = md5(uniqid(rand(), TRUE)); $alias = md5(uniqid(rand(), TRUE)); @@ -83,7 +99,7 @@ function _logger_create($serial, $country ="", $uid = 0) { $path->alias_base = $path->root .'/alias/base/'; $path->alias_night = $path->root .'/alias/night/'; - $result = db_query("INSERT INTO {logger_meters} (meter, uid, device, created, type) VALUES ('%s', %d, '%s', %d, '%s')", $meter, $uid, $device, $created, $type); + $result = db_query("INSERT INTO {logger_meters} (meter, uid, device, created) VALUES ('%s', %d, '%s', %d)", $meter, $uid, $device, $created); $insert = db_query("INSERT INTO {logger_aliases} (alias, meter, permissions) VALUES ('%s', '%s', %d)", $alias, $meter, $permissions); if (!($result && $insert)) drush_set_error('LOGGER_CREATE_METER_ENTRY', dt('Error creating meter entry for @meter.', array('@meter' => $meter))); @@ -112,12 +128,19 @@ function _logger_create($serial, $country ="", $uid = 0) { } } - if (!drush_get_error()) drush_log(dt('Successfully created the meter: @meter with alias: @alias and type: @type', array('@meter' => $meter, '@alias' => $alias, '@type' => $type)), 'ok'); + if (!drush_get_error()) { + drush_log(dt('Successfully created the meter: @meter with alias: @alias and type: @type', array('@meter' => $meter, '@alias' => $alias, '@type' => $type)), 'ok'); + $pipe[] .= 'SENSOR'.$i.'='.$meter; + } } + + // Space delimited list for use by other scripts. Set the --pipe option. + drush_print_pipe(implode(' ', $pipe)); + } } -function _logger_assign($serial, $country, $uid) { +function _logger_assign_node($serial, $country, $uid) { // check the existence of S/N $device = db_result(db_query("SELECT device FROM {logger_devices} WHERE serial = %d", $serial)); if ($device == '') { @@ -135,6 +158,12 @@ function _logger_assign($serial, $country, $uid) { } +function _logger_config_meter($meter, $type, $function, $phase, $constant, $unit) { + $result = db_query("UPDATE {logger_meters} SET type = '%s', function = '%s', phase = %d, constant = %d, unit = '%s' WHERE meter = '%s'", $type, $function, $phase, $constant, $unit, $meter); + drush_log(dt('Successfully updated meter: @meter', array('@meter' => $result)), 'ok'); + drush_print_pipe('ok'); +} + function _logger_alias($meter = "", $permissions = 62) { if ($meter == "") { $result = db_query("SELECT meter FROM {logger_meters}"); @@ -158,4 +187,3 @@ function _logger_alias($meter = "", $permissions = 62) { } } } -