protected function filterCommands(array &$commands, int &$longestLength, string $namespace = null): void
    {
        $globalCommands = [];

        /** @var \Valkyrja\Console\Command $command */
        foreach ($commands as $key => $command) {
            $parts            = explode(':', $command->getName());
            $commandName      = $parts[1] ?? null;
            $commandNamespace = $commandName ? $parts[0] : 'global';

            // If there was a namespace passed to the command (commands
            // namespace)  and the namespace for this command doesn't match
            // what was passed then get rid of it so only commands in the
            // namespace are shown.
            if ($commandNamespace !== $namespace && null !== $namespace) {
                unset($commands[$key]);

                continue;
            }

            $longestLength = max(\strlen($command->getName()), $longestLength);

            // If this is a global namespaced command
            if ('global' === $commandNamespace) {
                // Set it in the global commands array so when we show the list
                // of commands global commands will be at the top
                $globalCommands[] = $command;

                // Unset from the commands list to avoid duplicates
                unset($commands[$key]);
            }
        }

        // Sort the global commands by name
        $this->sortCommands($globalCommands);
        // Sort the rest of the commands by name
        $this->sortCommands($commands);

        // Set the commands as the merged results of the global and other
        // commands with the global commands at the top of the list
        $commands = array_merge($globalCommands, $commands);
    }
protected function filterCommands(array &$commands, int &$longestLength, string $namespace = null): void
    {
        $globalCommands = [];

        /** @var \Valkyrja\Console\Command $command */
        foreach ($commands as $key => $command) {
            $parts            = explode(':', $command->getName());
            $commandName      = $parts[1] ?? null;
            $commandNamespace = $commandName ? $parts[0] : 'global';

            // If there was a namespace passed to the command (commands
            // namespace)  and the namespace for this command doesn't match
            // what was passed then get rid of it so only commands in the
            // namespace are shown.
            if ($commandNamespace !== $namespace && null !== $namespace) {
                unset($commands[$key]);

                continue;
            }

            $longestLength = max(\strlen($command->getName()), $longestLength);

            // If this is a global namespaced command
            if ('global' === $commandNamespace) {
                // Set it in the global commands array so when we show the list
                // of commands global commands will be at the top
                $globalCommands[] = $command;

                // Unset from the commands list to avoid duplicates
                unset($commands[$key]);
            }
        }

        // Sort the global commands by name
        $this->sortCommands($globalCommands);
        // Sort the rest of the commands by name
        $this->sortCommands($commands);

        // Set the commands as the merged results of the global and other
        // commands with the global commands at the top of the list
        $commands = array_merge($globalCommands, $commands);
    }
protected function filterCommands ( array & $ commands , int & $ longestLength , string $ namespace = null ) : void { $ globalCommands = [ ] ; /** @var \Valkyrja\Console\Command $command */ foreach ( $ commands as $ key => $ command ) { $ parts = explode ( ':' , $ command -> getName ( ) ) ; $ commandName = $ parts [ 1 ] ?? null ; $ commandNamespace = $ commandName ? $ parts [ 0 ] : 'global' ; // If there was a namespace passed to the command (commands // namespace)  and the namespace for this command doesn't match // what was passed then get rid of it so only commands in the // namespace are shown. if ( $ commandNamespace !== $ namespace && null !== $ namespace ) { unset ( $ commands [ $ key ] ) ; continue ; } $ longestLength = max ( \ strlen ( $ command -> getName ( ) ) , $ longestLength ) ; // If this is a global namespaced command if ( 'global' === $ commandNamespace ) { // Set it in the global commands array so when we show the list // of commands global commands will be at the top $ globalCommands [ ] = $ command ; // Unset from the commands list to avoid duplicates unset ( $ commands [ $ key ] ) ; } } // Sort the global commands by name $ this -> sortCommands ( $ globalCommands ) ; // Sort the rest of the commands by name $ this -> sortCommands ( $ commands ) ; // Set the commands as the merged results of the global and other // commands with the global commands at the top of the list $ commands = array_merge ( $ globalCommands , $ commands ) ; }
Filter the commands by type and name.

@param array  $commands      The commands
@param int    $longestLength The longest length
@param string $namespace     [optional] The namespace to show commands
for

@return void
Filter the commands by type and name .