You are here

d3.drush.inc in d3.js 7

Contains functionality needed for drush integration.

File

d3.drush.inc
View source
<?php

/**
 * @file
 * Contains functionality needed for drush integration.
 */

/**
 * Implements hook_drush_command().
 */
function d3_drush_command() {
  $items = array();
  $items['d3'] = array(
    'description' => 'Create a new custom d3 library',
    'arguments' => array(
      'name' => 'The human readable name of your d3 library.',
      'machine_name' => 'The machine name of your d3 library.',
    ),
    'required-arguments' => 1,
    'options' => array(
      'name' => 'The human readable name of your d3 library.',
      'machine_name' => 'The machine name of your d3 library.',
      'description' => 'Library description for info file. (Shown in drush libraries-list)',
    ),
  );
  return $items;
}

/**
 * Create a d3 custom library from the template.
 */
function drush_d3($machine_name, $name = NULL) {
  if (!isset($name)) {
    $name = drush_get_option('name');
  }
  $description = drush_get_option('description');
  if (empty($description)) {
    $description = 'D3 visualization library';
  }
  $library_path = 'sites/all/libraries';
  if ($path = drush_get_option('path')) {
    $library_path = drush_trim_path($path);
  }
  $library_path = drush_normalize_path(drush_get_context('DRUSH_DRUPAL_ROOT') . '/' . $library_path . '/' . 'd3.' . $machine_name);
  $template_path = drush_normalize_path(drush_get_context('DRUSH_DRUPAL_ROOT') . '/' . drupal_get_path('module', 'd3') . '/libraries/template');
  drush_op('drush_copy_dir', $template_path, $library_path);
  $info_file = $library_path . '/d3.' . $machine_name . '.libraries.info';
  drush_op('rename', $library_path . '/template.libraries.info', $info_file);

  // Replace data in the .info file.
  drush_op('d3_file_str_replace', $info_file, array(
    '[library name]',
    '[library description]',
    '[machine name]',
  ), array(
    $name,
    $description,
    $machine_name,
  ));

  // Replace the machine name in the main js file.
  drush_op('d3_file_str_replace', $library_path . '/template.js', array(
    '[machine name]',
  ), array(
    $machine_name,
  ));
  drush_op('rename', $library_path . '/template.css', $library_path . '/' . $machine_name . '.css');
  drush_op('rename', $library_path . '/template.js', $library_path . '/' . $machine_name . '.js');
}
function d3_file_str_replace($file_path, $find, $replace) {
  $file_path = drush_normalize_path($file_path);
  $contents = file_get_contents($file_path);
  $contents = str_replace($find, $replace, $contents);
  file_put_contents($file_path, $contents);
}

Functions

Namesort descending Description
d3_drush_command Implements hook_drush_command().
d3_file_str_replace
drush_d3 Create a d3 custom library from the template.