Sfoglia il codice sorgente

Added additional tripal_core drush functionality: tripal-chado-version, tripal-chadotable-desc, tripal-node-sync, tripal-node-clean

Lacey Sanderson 12 anni fa
parent
commit
5f7f5b1e42
1 ha cambiato i file con 174 aggiunte e 27 eliminazioni
  1. 174 27
      tripal_core/tripal_core.drush.inc

+ 174 - 27
tripal_core/tripal_core.drush.inc

@@ -13,10 +13,24 @@
  */
 function tripal_core_drush_help($command) {
   switch ($command) {
-    case 'drush:tripal-current-job':
-      return dt('Returns details about the currently running tripal job including percent complete.');
+    // Tripal Materialized Views
     case 'drush:tripal-update-mview':
       return dt('Updates the specified materialized view.');
+
+    // Tripal Jobs
+    case 'drush:tripal-launch-jobs':
+      return dt('Launches any Tripal jobs waiting in the queue.');
+    case 'drush:tripal-current-job':
+      return dt('Returns details about the currently running tripal job including percent complete.');
+    case 'drush:tripal-rerun-job':
+      return dt('Rerun any tripal job in the queue.');
+
+    // Chado-specific
+    case 'drush:tripal-chado-version':
+      return dt('Returns the current version of chado associated with this drupal site.');
+    case 'drush:tripal-chadotable-desc':
+      return dt('Returns the table description as specified in the Tripal Schema API for the supplied table.');
+
   }
 }
 
@@ -28,16 +42,9 @@ function tripal_core_drush_help($command) {
  */
 function tripal_core_drush_command() {
   $items = array();
-  $items['tripal-current-job'] = array(
-    'description' => dt('Returns details about the currently running tripal job including percent complete.'),
-    'arguments'   => array(
-    ),
-    'examples' => array(
-      'Standard example' => 'drush tripal-current-job',
-    ),
-    'aliases' => array('trpjob-cur'),
-  );
-  $items['tripal-update-mview'] = array(
+
+  // Materialized Views
+  $items['tripal-mview-update'] = array(
     // used by drush help
     'description' => dt('Updates the specified materialized view.'),
     'arguments' => array(
@@ -53,14 +60,25 @@ function tripal_core_drush_command() {
       'mview_id',
       'table_name'
     ),
-    'aliases' => array('trpmv-up')
+    'aliases' => array('trpmv-up', 'tripal-update-mview')
   );
-  $items['tripal-launch-jobs'] = array(
+
+  // Jobs
+  $items['tripal-jobs-current'] = array(
+    'description' => dt('Returns details about the currently running tripal job including percent complete.'),
+    'arguments'   => array(
+    ),
+    'examples' => array(
+      'Standard example' => 'drush tripal-jobs-current',
+    ),
+    'aliases' => array('trpjob-cur','tripal-current-job'),
+  );
+  $items['tripal-jobs-launch'] = array(
     // used by drush help
     'description' => dt('Lauches any jobs waiting in the queue.'),
     'examples' => array(
-      'Normal Job' => 'drush tripal-launch-jobs admin',
-      'Parallel Job' => 'drush tripal-launch-jobs admin --parallel=1'
+      'Normal Job' => 'drush tripal-jobs-launch admin',
+      'Parallel Job' => 'drush tripal-jobs-launch admin --parallel=1'
     ),
     'arguments' => array(
       'user' => dt('The Drupal username under which the job should be run.  The permissions for this user will be used.'),
@@ -68,27 +86,85 @@ function tripal_core_drush_command() {
     // supply options
     'options' => array(
       'parallel' => dt('Normally jobs are executed one at a time. But if you are certain no conflicts will occur with other currently running jobs you may set this argument to a value of 1 to make the job run in parallel with other running jobs.'),
-      'job_id' => dt('Provide a job_id to run a specific job. Only jobs that have not been run already can be used'),      
+      'job_id' => dt('Provide a job_id to run a specific job. Only jobs that have not been run already can be used'),
     ),
-    'aliases' => array('trpjob-run')
+    'aliases' => array('trpjob-run','tripal-launch-jobs')
   );
-  $items['tripal-rerun-job'] = array(
+  $items['tripal-jobs-rerun'] = array(
     // used by drush help
     'description' => dt('Rerun any job in the queue.'),
     'examples' => array(
-      'Normal Job' => 'drush tripal-rerun-job admin 2',
-      'Parallel Job' => 'drush tripal-rerun-job admin  2 --parallel=1'
+      'Normal Job' => 'drush tripal-jobs-rerun admin 2',
+      'Parallel Job' => 'drush tripal-jobs-rerun admin  2 --parallel=1'
     ),
     'arguments' => array(
       'user' => dt('The Drupal username under which the job should be run.  The permissions for this user will be used.'),
-      'job_id' => dt('The job ID to run.'),    
+      'job_id' => dt('The job ID to run.'),
     ),
     // supply options
     'options' => array(
       'parallel' => dt('Normally jobs are executed one at a time. But if you are certain no conflicts will occur with other currently running jobs you may set this argument to a value of 1 to make the job run in parallel with other running jobs.'),
     ),
-    'aliases' => array('trpjob-rerun')
+    'aliases' => array('trpjob-rerun','tripal-rerun-job')
+  );
+
+  // Chado-specific
+  $items['tripal-chado-version'] = array(
+    // used by drush help
+    'description' => dt('Returns the current version of chado associated with this drupal site.'),
+    'arguments' => array(
+    ),
+    'examples' => array(
+      'Standard Example' => 'drush tripal-chado-version',
+    ),
+    'aliases' => array('trpchado-ver')
+  );
+  $items['tripal-chadotable-desc'] = array(
+    // used by drush help
+    'description' => dt('Returns the table description as specified in the Tripal Schema API for the supplied table.'),
+    'arguments' => array(
+      'table_name' => dt('The name of the chado table.'),
+    ),
+    'examples' => array(
+      'By Table Name' => 'drush tripal-chadotable-desc --table_name=feature'
+    ),
+    // supply options
+    'options' => array(
+      'section' => dt('Only return the specified section of the schema table description. Possible sections include: description, fields, primary key, unique keys, foreign keys, indexes, referring_tables.'),
+    ),
+    'aliases' => array('trpschema-tbl')
+  );
+
+  // Tripal Node-Module Specific
+  $items['tripal-node-sync'] = array(
+    // used by drush help
+    'description' => dt('Sync\'s chado records with drupal creating nodes for the given chado-centric module.'),
+    'arguments' => array(
+      'module' => dt('The name of the chado-centric module to sync.'),
+    ),
+    'examples' => array(
+      'By Module' => 'drush tripal-node-sync feature'
+    ),
+    // supply options
+    'options' => array(
+    ),
+    'aliases' => array('trpnode-sync')
+  );
+  $items['tripal-node-clean'] = array(
+    // used by drush help
+    'description' => dt('Clean-up orphaned Drupal nodes and chado records.'),
+    'arguments' => array(
+      'module' => dt('The name of the chado-centric module to clean-up.'),
+    ),
+    'examples' => array(
+      'By Table Name' => 'drush tripal-node-clean feature'
+    ),
+    // supply options
+    'options' => array(
+    ),
+    'aliases' => array('trpnode-cln')
   );
+
   return $items;
 }
 
@@ -106,10 +182,10 @@ function drush_tripal_core_tripal_launch_jobs($username) {
     $user = user_load(array('name' => $username));
   }
   else {
-    drush_print('ERROR: Please provide a username for running this job.'); 
+    drush_print('ERROR: Please provide a username for running this job.');
     return;
   }
-  
+
   if ($parallel) {
     drush_print("Tripal Job Launcher (in parallel)");
     drush_print("Running as user '$username'");
@@ -130,11 +206,12 @@ function drush_tripal_core_tripal_launch_jobs($username) {
  * NOTE: The following code is executed when drush 'trpjob-run' or 'drush tripal-launch-jobs' is called
  */
 function drush_tripal_core_tripal_rerun_job($username, $job_id) {
-  
+
   $new_job_id = tripal_jobs_rerun($job_id, FALSE);
   drush_tripal_core_tripal_launch_jobs($username, $new_job_id);
- 
+
 }
+
 /**
  * Prints details about the current running job
  *
@@ -201,3 +278,73 @@ function drush_tripal_core_tripal_update_mview() {
     drush_set_error('Update failed.');
   }
 }
+
+/**
+ * Returns the current version of chado
+ */
+function drush_tripal_core_tripal_chado_version() {
+  $version = tripal_core_get_chado_version();
+  drush_print('Current Chado Version: '.$version);
+}
+
+/**
+ * Returns the Tripal Schema API Description of the given table
+ *
+ * @param $table_name
+ *  The name of the table to return the description of
+ */
+function drush_tripal_core_tripal_chadotable_desc($table_name) {
+  $section = drush_get_option('section');
+
+  drush_print("Schema API Description for $table_name:");
+  $desc = tripal_core_get_chado_table_schema($table_name);
+
+  if (!empty($section)) {
+    drush_print("$section = ".print_r($desc[$section],TRUE));
+  }
+  else {
+    drush_print(print_r($desc,TRUE));
+  }
+}
+
+/**
+ * Sync's chado records with drupal creating nodes for the given chado-centric module.
+ *
+ * @param $module
+ *  The name of a module with nodes associated with it. For example, feature
+ */
+function drush_tripal_core_tripal_node_sync($module) {
+  switch($module) {
+    case 'analysis':
+      call_user_func('tripal_analysis_sync_analyses');
+      break;
+    case 'feature':
+      call_user_func('tripal_feature_sync_features');
+      break;
+    case 'featuremap':
+      call_user_func('tripal_featuremap_sync_featuremaps');
+      break;
+    case 'library':
+      call_user_func('tripal_library_sync_libraries');
+      break;
+    case 'organism':
+      call_user_func('tripal_organism_sync_organisms');
+      break;
+    case 'project':
+      call_user_func('tripal_project_sync_all_projects');
+      break;
+    case 'stock':
+      call_user_func('tripal_stock_sync_stocks');
+      break;
+  }
+}
+
+/**
+ * Clean-up orphaned Drupal nodes and chado records.
+ *
+ * @param $module
+ *  The name of a module with nodes associated with it. For example, feature
+ */
+function drush_tripal_core_tripal_node_clean($module) {
+  tripal_core_clean_orphaned_nodes($module, 0);
+}