Gå til indhold

API

Rudel\Rudel er en statisk facade. Alle metoder på denne side er offentlige statiske metoder i den klasse.

PHP
use Rudel\Rudel;

if ( Rudel::is_sandbox() ) {
    error_log( 'Running in sandbox ' . Rudel::id() );
}

Livscyklusmetoder, der kloner eller fjerner tabeller (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()), kræver en aktiv WordPress-anmodning med $wpdb. De udløser en RuntimeException, hvis de kaldes efter Rudel::init() uden for WordPress. Se Selvstændig brug.

Runtimekontekst

Disse metoder beskriver den aktuelle anmodning. Uden for en sandbox returnerer de false eller null.

Metode Returnerer
is_sandbox(): bool true, når den aktuelle anmodning kører i en sandbox
id(): ?string det aktuelle sandbox-id
path(): ?string den aktuelle sandbox-mappe
engine(): ?string overlay i en sandbox
table_prefix(): ?string sandboxens tabelpræfiks, for eksempel wp_b65338d_
url(): ?string sandboxens URL; overlay-sandboxes deler værtens URL
exit_url(): string værtens URL
is_email_disabled(): bool true, når udgående mail er blokeret for anmodningen
log_path(): ?string {sandbox directory}/debug.log
version(): ?string den installerede version af Rudel
cli_command(): string rodkommandoen for WP-CLI, rudel, medmindre RUDEL_CLI_COMMAND er angivet

Rudel::context(): array

Returnerer alt ovenstående i ét array:

PHP
[
    'is_sandbox'     => true,
    'id'             => 'alpha-3be7',
    'path'           => '/var/www/html/wp-content/rudel-environments/alpha-3be7',
    'engine'         => 'overlay',
    'table_prefix'   => 'wp_b65338d_',
    'url'            => 'http://localhost/',
    'exit_url'       => 'http://localhost/',
    'email_disabled' => true,
    'log_path'       => '/var/www/html/wp-content/rudel-environments/alpha-3be7/debug.log',
    'version'        => '0.10.0',
    'cli_command'    => 'rudel',
]

Rudel::status(): array

Returnerer det samme runtime-resumé som wp rudel status i et array: bootstrapstatus, den aktuelle sandbox, sandboxmappen og antallet af sandboxes, værdierne for rudel_config samt om automatisering er planlagt.

Sandbox-poster

Sandboxes returneres som Rudel\Environment-objekter. Nyttige skrivebeskyttede egenskaber omfatter id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix og clone_source. Metoder omfatter is_protected(), get_url(), get_table_prefix(), get_size() og to_array().

Rudel::all(): array

Returnerer hver sandbox som et array af Environment-objekter. Der kan ikke angives filtre.

PHP
foreach ( Rudel::all() as $sandbox ) {
    echo $sandbox->id . ' ' . $sandbox->status . "\n";
}

Rudel::get( string $id ): ?Environment

Indlæser en sandbox efter id eller returnerer null.

PHP
$sandbox = Rudel::get( 'alpha-3be7' );

Rudel::environments_dir(): string

Returnerer mappen, der indeholder sandbox-mapperne.

Livscyklus

Rudel::create( string $name, array $options = [] ): Environment

Opretter en sandbox og returnerer den. Id'et genereres ud fra navnet plus fire hexadecimale tegn.

PHP
$sandbox = Rudel::create( 'alpha', [
    'theme'    => 'twentytwentyfour',
    'owner'    => 'dennis',
    'labels'   => [ 'qa', 'agent' ],
    'ttl_days' => 7,
] );

Indstillinger:

Nøgle Betydning
theme temaskriden, der skal kopieres til sandboxen; standarden er værtens aktive tema
clone_from id på en eksisterende sandbox, der skal klones i stedet for værten
owner, purpose fritekstmetadata
labels array eller kommasepareret streng
protected true for at undtage sandboxen fra oprydning
ttl_days udløbstid regnet fra oprettelsestidspunktet
expires_at eksplicit tidsstempel for udløb
template en etiket gemt på posten; den indlæser ikke en gemt skabelon
site_options indstillingsnavne og skalarværdier, der skrives til sandboxens indstillingstabel
skip_limits true for at omgå max_sandboxes og max_disk_mb

Rudel::create_from_git( string $remote_url, array $options = [] ): array

Opretter en sandbox og kloner derefter $remote_url ind i den. Accepterer indstillingerne for create() plus name (standard er arkivets navn) og type (theme eller plugin). Returnerer [ 'environment' => Environment, 'git' => [...] ]. En mislykket kloning ruller ikke sandboxen tilbage; fejlen returneres i git.error. Se Git.

Rudel::update( string $id, array $changes ): Environment

Opdaterer livscyklusmetadata og returnerer den opdaterede sandbox. Accepterede nøgler omfatter owner, labels, purpose, protected, ttl_days (regnet fra nu), expires_at, clear_expiry, name og site_options.

PHP
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );

Rudel::destroy( string $id ): bool

Fjerner sandboxens tabeller, sletter dens mappe og tilknyttede worktrees og sletter posten. Returnerer false, hvis id'et ikke findes. Beskyttelsen kontrolleres ikke: beskyttede sandboxes slettes også.

Rudel::cleanup( array $options = [] ): array

Kører politikken for udløb, alder og inaktivitet. Indstillinger: dry_run (bool), max_age_days og max_idle_days (tilsidesætter rudel_config, når værdien ikke er nul). Returnerer removed, skipped, errors og reasons (id til expired, age, idle eller protected). Se Oprydning.

Rudel::cleanup_merged( array $options = [] ): array

Fjerner sandboxes, hvis tilknyttede Git-worktree-grene er flettet ind i arkivets standardgren. Indstilling: dry_run.

Rudel::touch_current_environment(): void

Registrerer aktivitet (last_used_at) for den aktuelle sandbox. Rudel kalder den ved hver sandbox-anmodning.

Logfiler

Rudel::read_log( string $id, int $lines = 50 ): array

Returnerer de sidste linjer i sandboxens debug.log som path, exists, empty, total_lines og lines.

Rudel::clear_log( string $id ): array

Tømmer sandboxens debug.log og returnerer path, existed og cleared.

Snapshots

Rudel::snapshot( string $id, string $name ): array

Opretter et snapshot og returnerer dets metadata (name, created_at, sandbox_id).

Rudel::restore( string $id, string $name ): void

Gendanner et snapshot. Med standardindstillingen auto_snapshot_before_restore gemmer Rudel først et pre-restore-...-snapshot.

Rudel::snapshots( string $id ): array

Viser snapshotmetadata med det nyeste først. Se Snapshots.

Skabeloner

  • Rudel::save_template( string $id, string $name, string $description = '' ): array
  • Rudel::templates(): array
  • Rudel::delete_template( string $name ): bool

Gemte skabeloner er kun filkopier. Ingen API eller kommando opretter en sandbox ud fra en skabelon. Se Skabeloner.

Git

Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string

Committer og pusher en checkout i sandboxmappen til grenen rudel/{id}. $remote_url og $subdir bruger som standard værdierne gemt i sandboxen. Returnerer commit-SHA'en eller null, hvis intet er ændret.

Automatisering

  • Rudel::run_automation(): array kører de planlagte automatiseringsopgaver nu.
  • Rudel::run_scheduled_cleanup(): array gør det samme.

Se Automatisering.

Hooks og kommandokatalog

  • Rudel::hooks(): array returnerer det dokumenterede hook-katalog med hooknavne som nøgler. Se Hooks.
  • Rudel::cli_command_map(): array returnerer en serialiserbar beskrivelse af hver wp rudel-kommando og metoden PHP bag den.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array omdanner én fortolket kommando til en udførelsesplan uden at køre den.
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

De fleste planer bruger transporten php. logs --follow opløses til en shell-plan, der kører tail -f.

Selvstændig initialisering

Rudel::init( Connection $connection, array $context = [] ): void

Retter facaden mod en direkte MySQL-forbindelse til brug uden for WordPress. $context accepterer environments_dir.

PHP
use Rudel\Connection;
use Rudel\Rudel;

Rudel::init(
    new Connection( '127.0.0.1', 'wordpress', 'root', 'root', 'wp_' ),
    [ 'environments_dir' => '/var/www/html/wp-content/rudel-environments' ]
);
  • Rudel::ensure_schema(): void opretter Rudel-tabellerne for den aktive forbindelse.
  • Rudel::reset(): void rydder den selvstændige forbindelse og den cachede tilstand.