예제 #1
0
파일: patch.php 프로젝트: cjbayliss/alloc
    apply_patch(ALLOC_MOD_DIR . "patches/patch-00053-alla.php");
}
// Apply all patches
if ($_REQUEST["apply_patches"]) {
    foreach ($abc123_files as $abc123_file) {
        $abc123_f = ALLOC_MOD_DIR . "patches/" . $abc123_file;
        if (!in_array($abc123_file, $abc123_applied_patches)) {
            apply_patch($abc123_f);
        }
    }
    // Apply a single patch
} else {
    if ($_REQUEST["apply_patch"] && $_REQUEST["patch_file"]) {
        $abc123_f = ALLOC_MOD_DIR . "patches/" . $_REQUEST["patch_file"];
        if (!in_array($abc123_file, $abc123_applied_patches)) {
            apply_patch($abc123_f);
        }
    } else {
        if ($_REQUEST["remove_patch"] && $_REQUEST["patch_file"]) {
            $abc123_f = ALLOC_MOD_DIR . "patches/" . $_REQUEST["patch_file"];
            $q = prepare("INSERT INTO patchLog (patchName, patchDesc, patchDate) \n                VALUES ('%s','%s','%s')", $_REQUEST["patch_file"], "Patch not applied.", date("Y-m-d H:i:s"));
            $db = new db_alloc();
            $db->query($q);
        }
    }
}
$abc123_applied_patches = get_applied_patches();
foreach ($abc123_files as $abc123_file) {
    if (!in_array($abc123_file, $abc123_applied_patches)) {
        $abc123_incomplete = true;
    }
        rmdir($tmp_patch);
        return true;
    } else {
        echo "\nFailed to update, see the patches here for the full diff:\n{$tmp_patch}\n";
        return false;
    }
}
/**
 * Replaces '"$package_name": "$old"' with '"$package_name": "$new"' in $composer_file
 */
function composer_replace_version($composer_file, $package_name, $old, $new)
{
    $composer = file_get_contents($composer_file);
    $composer = str_replace('"' . $package_name . '": "' . $old . '"', '"' . $package_name . '": "' . $new . '"', $composer);
    file_put_contents($composer_file, $composer);
}
$composer = load_composer($composer_file, $package_name);
$version_local = $composer['replace'][$package_name];
update_remote($remote_name, $remote);
$remote_tags = current_remote_tags($remote_name);
$version_remote = array_keys($remote_tags);
$version_remote = $version_remote[count($version_remote) - 1];
if ($version_remote != $version_local) {
    if (apply_patch($remote_tags[$version_local], $remote_tags[$version_remote])) {
        composer_replace_version($composer_file, $package_name, $version_local, $version_remote);
        $message = "Updated remote {$remote_name} from {$version_local} to {$version_remote}";
        exec("git add '{$composer_file}'");
        exec("git commit -m '{$message}'");
        echo "\n{$message}\n";
    }
}