final public function getCLIArguments()

in src/shipit/phase/ShipItPhaseRunner.php [110:139]


  final public function getCLIArguments(): vec<ShipItCLIArgument> {
    $args = $this->getBasicCLIArguments();
    foreach ($this->phases as $phase) {
      $args = Vec\concat($args, $phase->getCLIArguments());
    }

    // Check for correctness
    foreach ($args as $arg) {
      $description = Shapes::idx($arg, 'description');
      $replacement = Shapes::idx($arg, 'replacement');
      $handler = Shapes::idx($arg, 'write');
      $name = $arg['long_name'];

      invariant(
        !($description !== null && $replacement !== null),
        '--%s is documented and deprecated',
        $name,
      );

      invariant(
        !(
          $handler !== null && !($description !== null || $replacement !== null)
        ),
        '--%s does something, and is undocumented',
        $name,
      );
    }

    return $args;
  }