#!/usr/bin/env perl

use strict;
use warnings;

use File::Basename qw(basename);
use File::Spec;
use FindBin qw($Bin);

my $command = basename($0);
my $core = File::Spec->catfile( $Bin, '_dashboard-core' );
exec { $^X } $^X, $core, $command, @ARGV;
die "Unable to exec $core for $command: $!";

__END__

=pod

=head1 NAME

restart - private built-in command wrapper for Developer Dashboard

=head1 SYNOPSIS

  dashboard restart

=head1 DESCRIPTION

This private helper is staged under F<~/.developer-dashboard/cli/dd/> so the
public C<dashboard> entrypoint can stay a thin switchboard.

=for comment FULL-POD-DOC START

=head1 PURPOSE

This staged helper exposes C<dashboard restart>, which restarts the web listener and coordinated collectors for the current runtime.

=head1 WHY IT EXISTS

It exists because runtime restart is a built-in operational command, but the switchboard should stage a helper while the runtime manager owns pid handling, port waits, and collector coordination.

=head1 WHEN TO USE

Use this file when changing restart CLI flags or the handoff into the runtime lifecycle manager.

=head1 HOW TO USE

Users run C<dashboard restart> with any host, port, or worker overrides. The staged helper forwards that request into the private runtime, which stops the current runtime processes and starts them again in the right order.

=head1 WHAT USES IT

It is used by operators restarting the local service, by integration smoke that verifies runtime lifecycle behavior, and by runtime manager tests.

=head1 EXAMPLES

Example 1:

  dashboard restart

Run the public built-in command path that stages or re-enters this helper.

Example 2:

  ~/.developer-dashboard/cli/dd/restart --help

Inspect the staged helper directly after C<dashboard init> or helper extraction has populated the home runtime.

Example 3:

  prove -lv t/05-cli-smoke.t t/30-dashboard-loader.t

Rerun the focused staged-helper and thin-loader tests after changing helper dispatch behavior.

Example 4:

  prove -lr t

Verify that the helper still behaves correctly inside the complete repository suite.


=for comment FULL-POD-DOC END

=cut
