function xcvs_init($argc, $argv)
{
    $this_file = array_shift($argv);
    // argv[0]
    $config_file = array_shift($argv);
    // argv[1]
    if ($argc < 2) {
        xcvs_help($this_file, STDERR);
        exit(3);
    }
    // Load the configuration file and bootstrap Drupal.
    if (!file_exists($config_file)) {
        fwrite(STDERR, "Error: failed to load configuration file.\n");
        exit(4);
    }
    include_once $config_file;
    // Do a full Drupal bootstrap.
    xcvs_bootstrap($xcvs);
    $repository = versioncontrol_get_repository($xcvs['repo_id']);
    if (!isset($repository)) {
        fwrite(STDERR, "The repository corresponding to the configured repo id could not be loaded.\n");
        exit(1);
    }
    // Set the Drupal base path, so that url() returns a proper URL.
    global $base_url;
    $base_url = DRUPAL_SITE;
    // Do the export!
    fwrite(STDOUT, versioncontrol_export_accounts($repository));
    exit(0);
}
function xcvs_init($argc, $argv)
{
    $this_file = array_shift($argv);
    // argv[0]
    $config_file = array_shift($argv);
    // argv[1]
    $passwd_file = array_shift($argv);
    // argv[2]
    if ($argc < 3) {
        xcvs_help($this_file, STDERR);
        exit(3);
    }
    $passwd_file_new = $passwd_file . '.new';
    // Load the configuration file and bootstrap Drupal.
    if (!file_exists($config_file)) {
        fwrite(STDERR, $this_file . ": Failed to load configuration file.\n");
        exit(4);
    }
    require_once $config_file;
    // Do a full Drupal bootstrap.
    xcvs_bootstrap($xcvs);
    $repository = versioncontrol_get_repository($xcvs['repo_id']);
    if (!isset($repository)) {
        fwrite(STDERR, $this_file . ": The repository for the configured repo id could not be loaded.\n");
        exit(5);
    }
    // Set the Drupal base path, so that url() returns a proper URL.
    global $base_url;
    $base_url = DRUPAL_SITE;
    // Retrieve the file contents, and write them to the new file.
    $output = versioncontrol_export_accounts($repository);
    if (!file_put_contents($passwd_file_new, $output)) {
        fwrite(STDERR, $this_file . ": Writing to new passwd file failed!\n");
        exit(6);
    }
    // Rename the file.
    if (!rename($passwd_file_new, $passwd_file)) {
        fwrite(STDERR, $this_file . ": Renaming new passwd file failed!\n");
        exit(7);
    }
    exit(0);
}
示例#3
0
function xgit_bootstrap()
{
    global $xgit;
    // Add $drupal_path to current value of the PHP include_path.
    set_include_path(get_include_path() . PATH_SEPARATOR . $xgit['drupal_path']);
    if (empty($_ENV['GIT_DRUPAL_UID'])) {
        fwrite(STDERR, "Error: No environment variable 'GIT_DRUPAL_UID' set or it is empty.\n");
        exit(VERSIONCONTROL_GIT_ERROR_NO_UID);
    }
    $xgit['uid'] = $_ENV['GIT_DRUPAL_UID'];
    chdir($xgit['drupal_path']);
    // Bootstrap Drupal so we can use drupal functions to access the databases, etc.
    if (!file_exists('./includes/bootstrap.inc')) {
        fwrite(STDERR, "Error: failed to load Drupal's bootstrap.inc file.\n");
        exit(VERSIONCONTROL_GIT_ERROR_FAILED_BOOTSTRAP);
    }
    // Set up the multisite directory if necessary.
    if ($xgit['multisite_directory']) {
        $_SERVER['HTTP_HOST'] = $xgit['multisite_directory'];
        // Set a dummy script name, so the multisite configuration
        // file search will always trigger.
        $_SERVER['SCRIPT_NAME'] = '/foo';
    }
    require_once './includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    // Overwrite db_prefix if this is a simpletest run.
    if (isset($GLOBALS['simpletest_db_prefix'])) {
        $GLOBALS['db_prefix'] = $GLOBALS['simpletest_db_prefix'];
    }
    require_once drupal_get_path('module', 'versioncontrol_git') . '/versioncontrol_git.module';
    require_once drupal_get_path('module', 'versioncontrol_git') . '/versioncontrol_git.log.inc';
    $xgit['repo'] = versioncontrol_get_repository($xgit['repo_id']);
    if (!isset($_ENV['GIT_DIR'])) {
        xgit_help($this_file, STDERR);
        exit(VERSIONCONTROL_GIT_ERROR_NO_GIT_DIR);
    }
    $xgit['git_dir'] = $_ENV['PWD'];
    if (empty($xgit['repo'])) {
        $message = "Error: git repository with id '%s' does not exist.\n";
        fwrite(STDERR, sprintf($message, $xgit['repo_id']));
        exit(VERSIONCONTROL_GIT_ERROR_NO_REPOSITORY);
    }
}