микро-фреймворк для командных приложений для обработки данных в php или python? - PullRequest
0 голосов
/ 07 марта 2019

Вот то, что я использую для создания приложений командной строки php для обработки данных.

Эти приложения не являются веб-приложениями, они запускаются в командной строке для обработки некоторых данных.

Из-запо причине Legacy, я использую Laravel php framework.

Поэтому я использую Laravel "Artisan Development" для создания пользовательских команд, а затем запускаю команды, используя

php artisan ...

Laravel для веб-приложения, но сейчас я использую только его ремесленные команды.Кажется излишним, что для этой цели я устанавливаю полную версию Laravel Framework.

Но я не смог найти хороший php микро-фреймворк специально для построения командного приложения.

Мои вопросы

  • Как и Lumen, микро-фреймворк Laravel для API, есть ли у вас какой-нибудь микро-фреймворк laravel / php для команд, который вы можете порекомендовать?
  • Или есть ли какие-либо микро-фреймворки Python?для командных приложений вы можете порекомендовать?Я погуглил, "Клик" рекомендуется.Какие-нибудь рамки еще?

Спасибо!

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Я сделал эту маленькую библиотеку,

https://github.com/ArtisticPhoenix/Cli

Вы можете использовать ее или получить вдохновение от нее, в основном это обертка вокруг getopt()

http://php.net/manual/en/function.getopt.php

getopt - получает параметры из списка аргументов командной строки

Вы также можете получить его в composer:

"require" : {
    "evo/cli" : "~1.0"
}

Базовое использованиекак это:

$Cli = Cli::getInstance();
$Cli->setArgument('h', 'help', 'Show this help document');
//... other arguments 
if($Cli->getArgument('h')) $Cli->printHelpDoc(); //exits

и т. д.

Вы даже можете сделать это из файла конфигурации PHP, который просто помещается в setArgument() ~ в основном.

//config.php
return [
         [
           'shortName' => 'h',
           'longName' => 'help',
           'doc' => 'Show this help document'
         ]
      ];

Тогда

  //cli.php

  $config = require 'config.php';

  $Cli = Cli::getInstance();
  $Cli->fromConfig($config);

  if($Cli->getArgument('h')) $Cli->printHelpDoc(); //exits

Вы также можете выполнить динамическую проверку входных аргументов следующим образом (с закрытием):

    $Cli->setArgument('f', 'foo', 'This is just foo, and must always be foo', [
        'accept' => function($shortName, $value){
            if($value == 'foo') return true;
            return false;
        }
    ]);

Выше просто возвращает логическое значение, если значениехорошо это или нет.Если вы вернете false, это выдаст исключение и т. Д. Вы также можете сделать требуемый аргумент следующим образом:

   $Cli->setArgument('i', 'input', 'This is input that requires a value', [
       'requireValue' => true
   ]);

И, конечно, вы можете объединить эти 2.

Есть некоторая документацияна странице Github.У него есть несколько небольших зависимостей, просто общие вещи, которые я люблю использовать повторно (все в композиторе).Вместе это менее 1000 строк кода.Может быть, 20 или 30 Кб.

1 голос
/ 07 марта 2019

Для Python я определенно рекомендую Нажмите . Она стала библиотекой Python для создания инструментов командной строки. Он написан / поддерживается автором Flask (в настоящее время № 5 самых популярных репозиториев Python на GitHub). Я использую Click все время при создании инструментов командной строки. В нем есть все, что нужно большинству людей.

Не уверен, каково ваше определение микро-фреймворка, но Click не имеет внешних зависимостей и занимает ок. 500 КБ (включая файлы .pyc) при установке. Кроме того, на самом деле не требуется никаких шаблонов для настройки и начала использования. Поэтому я бы назвал это микро-фреймворком.

...