Ga naar de inhoud

API

Rudel\Rudel is een statische facade. Elke methode op deze pagina is een publieke statische methode van die klasse.

PHP
use Rudel\Rudel;

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

Levenscyclusmethoden die tabellen klonen of verwijderen (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) vereisen een actief WordPress-verzoek met $wpdb. Als ze worden aangeroepen nadat Rudel::init() buiten WordPress is uitgevoerd, genereren ze een RuntimeException. Zie Zelfstandig gebruik.

Runtimecontext

Deze methoden beschrijven het huidige verzoek. Buiten een sandbox retourneren ze false of null.

Methode Geeft terug
is_sandbox(): bool true wanneer het huidige verzoek binnen een sandbox wordt uitgevoerd
id(): ?string de huidige sandbox-ID
path(): ?string de huidige sandboxmap
engine(): ?string overlay binnen een sandbox
table_prefix(): ?string het tabelvoorvoegsel van de sandbox, bijvoorbeeld wp_b65338d_
url(): ?string de sandbox URL; overlay-sandboxes delen de host-URL
exit_url(): string de host-URL
is_email_disabled(): bool true wanneer uitgaande e-mail voor het verzoek is geblokkeerd
log_path(): ?string {sandbox directory}/debug.log
version(): ?string de geïnstalleerde versie van Rudel
cli_command(): string de rootopdracht van WP-CLI, rudel tenzij RUDEL_CLI_COMMAND is ingesteld

Rudel::context(): array

Geeft al het bovenstaande terug in één 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

Geeft hetzelfde runtime-overzicht terug als wp rudel status, als array: bootstrapstatus, huidige sandbox, sandboxmap en aantal sandboxes, de waarden van rudel_config en of automatisering is ingepland.

Sandboxrecords

Sandboxes worden teruggegeven als Rudel\Environment-objecten. Handige alleen-lezen eigenschappen zijn onder meer id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix en clone_source. Methoden zijn onder meer is_protected(), get_url(), get_table_prefix(), get_size() en to_array().

Rudel::all(): array

Geeft elke sandbox terug als een array van Environment-objecten. Accepteert geen filters.

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

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

Laadt één sandbox op basis van ID, of geeft null terug.

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

Rudel::environments_dir(): string

Geeft de map terug waarin de sandboxmappen staan.

Levenscyclus

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

Maakt een sandbox aan en geeft deze terug. De ID wordt gegenereerd op basis van de naam plus vier hexadecimale tekens.

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

Opties:

Sleutel Betekenis
theme themaslug die naar de sandbox wordt gekopieerd; standaard het actieve thema van de host
clone_from ID van een bestaande sandbox om te klonen in plaats van de host
owner, purpose vrije metadata
labels array of kommagescheiden tekenreeks
protected true om de sandbox uit te sluiten van opruiming
ttl_days vervaldatum ten opzichte van het aanmaaktijdstip
expires_at expliciet tijdstip van verval
template een label dat in het record wordt opgeslagen; hiermee wordt geen opgeslagen sjabloon geladen
site_options optienamen en scalaire waarden die naar de optietabel van de sandbox worden geschreven
skip_limits true om max_sandboxes en max_disk_mb te omzeilen

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

Maakt een sandbox aan en kloont vervolgens $remote_url daarin. Accepteert de opties create() plus name (standaard de repositorynaam) en type (theme of plugin). Geeft [ 'environment' => Environment, 'git' => [...] ] terug. Een mislukte kloonactie draait het aanmaken van de sandbox niet terug; de fout wordt teruggegeven in git.error. Zie Git.

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

Werkt de levenscyclusmetadata bij en geeft de vernieuwde sandbox terug. Geaccepteerde sleutels zijn onder meer owner, labels, purpose, protected, ttl_days (relatief ten opzichte van nu), expires_at, clear_expiry, name en site_options.

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

Rudel::destroy( string $id ): bool

Verwijdert de sandboxtabellen, de sandboxmap en gekoppelde worktrees, en verwijdert het record. Geeft false terug als de ID niet bestaat. Er wordt niet gecontroleerd op bescherming: ook beschermde sandboxes worden vernietigd.

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

Past het beleid voor verval, leeftijd en inactiviteit toe. Opties: dry_run (bool), max_age_days en max_idle_days (overschrijven rudel_config wanneer deze niet nul is). Geeft removed, skipped, errors en reasons terug (ID naar expired, age, idle of protected). Zie Opruiming.

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

Verwijdert sandboxes waarvan de gekoppelde Git-worktreebranches zijn samengevoegd met de standaardbranch van de repository. Optie: dry_run.

Rudel::touch_current_environment(): void

Registreert activiteit (last_used_at) voor de huidige sandbox. Rudel roept dit aan bij elk sandboxverzoek.

Logboeken

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

Geeft de laatste regels van het sandbox-debug.log terug als path, exists, empty, total_lines en lines.

Rudel::clear_log( string $id ): array

Leegt het sandbox-debug.log en geeft path, existed en cleared terug.

Momentopnamen

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

Maakt een momentopname en geeft de metadata terug (name, created_at, sandbox_id).

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

Zet een momentopname terug. Met de standaardinstelling auto_snapshot_before_restore slaat Rudel eerst een pre-restore-...-momentopname op.

Rudel::snapshots( string $id ): array

Geeft metadata van momentopnamen weer, nieuwste eerst. Zie Momentopnamen.

Sjablonen

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

Opgeslagen sjablonen zijn uitsluitend bestandskopieën. Geen API of opdracht maakt een sandbox op basis daarvan aan. Zie Sjablonen.

Git

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

Commit en pusht een checkout in de sandboxmap naar de branch rudel/{id}. $remote_url en $subdir gebruiken standaard de waarden die in de sandbox zijn opgeslagen. Geeft de commit-SHA terug, of null als er niets is gewijzigd.

Automatisering

  • Rudel::run_automation(): array voert de ingeplande automatiseringstaken nu uit.
  • Rudel::run_scheduled_cleanup(): array doet hetzelfde.

Zie Automatisering.

Hooks en opdrachtencatalogus

  • Rudel::hooks(): array geeft de gedocumenteerde hookcatalogus terug, gerangschikt op hooknaam. Zie Hooks.
  • Rudel::cli_command_map(): array geeft een serialiseerbare beschrijving terug van elke wp rudel-opdracht en de PHP-methode erachter.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array zet één geparseerde opdracht om in een uitvoeringsplan zonder deze uit te voeren.
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 meeste plannen gebruiken het transport php. logs --follow wordt omgezet in een shell-plan dat tail -f uitvoert.

Zelfstandige initialisatie

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

Richt de facade op een directe MySQL-verbinding voor gebruik buiten WordPress. $context accepteert 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 maakt de Rudel-tabellen aan voor de actieve verbinding.
  • Rudel::reset(): void wist de zelfstandige verbinding en de gecachte status.