thrift IDL 生成代码的管理脚本
随着项目增多,thriftIDL生成代码的管理也越复杂。此工具用于生成thrift的代码,尽量使其脚本化,可配置,自动化。 无 #!/usr/bin/env php?php/** * 随着项目增多,thrift IDL 生成代码的管理也越复杂。 * 此工具用于生成 thrift 的代码,尽量使其脚本化,自
随着项目增多,thrift IDL 生成代码的管理也越复杂。此工具用于生成 thrift 的代码,尽量使其脚本化,可配置,自动化。
#!/usr/bin/env php <?php /** * 随着项目增多,thrift IDL 生成代码的管理也越复杂。 * 此工具用于生成 thrift 的代码,尽量使其脚本化,自动化。 * * 使用方法: * ./cthrift cms-exmaple ./cthrift.config.php * * cthrift.config.php 是个配置文件: <?php return array( 'thrift_command' => 'thrift --gen {gen} -out "{out}" "{idl}"', 'projects' => array( 'cms-exmaple' => array( 'gen' => 'php', // 代码目标语言,用于 thrift 的 --gen 选项 'out' => '/path/to/output', // 代码输出目录,用于 thrift 的 --out 选项 'idl_git_url' => 'https://git-url', // IDL 是否使用了 git 管理,如果设置,则自动 pull, // 例如 https://github.com/my/thrift-idl.git 'idl_git_pre' => '/src/master', // IDL 文件的 git URL 前缀。在本例中: // 假设 idl_git_url 为 https://github.com/my/thrift-idl.git // IDL 路径为 /path/to/cms.thrift,idl_root_path 为 /root/thrift/idl // 则 git 的全路径为 https://github.com/my/thrift-idl/src/master/path/to/cms.thrift // 对应的本地路径为 /root/thrift/idl/path/to/cms.thrift 'idl_root_path' => '/path/to/idl', // IDL 根目录,与 idls 拼接,如果有 git,此目录应当设置为 git 的根目录(含 .git 的目录) 'idls' => array( // IDL 所在的目录或文件 '/path/to/idl/1', '/path/to/idl/2', ), ), ), ); * * Author: https://github.com/heiing * Date: 2015-03-06T11:06+08:00 */ define("VERSION", "0.1.0"); function usage($self, $ln = PHP_EOL) { echo "Usage: {$self} project-name config-file [idl-git-url]{$ln}"; echo "project-name Project name{$ln}"; echo "config-file Config file path{$ln}"; echo "idl-git-url IDL git url{$ln}"; echo "{$ln}"; echo "config-file example: {$ln}"; echo "<?php{$ln}"; echo "{$ln}"; echo "return array({$ln}"; echo " 'thrift_command' => 'thrift --gen {gen} -out \"{out}\" \"{idl}\"',{$ln}"; echo " 'projects' => array({$ln}"; echo " 'cms-exmaple' => array({$ln}"; echo " 'gen' => 'php', // 代码目标语言,用于 thrift 的 --gen 选项{$ln}"; echo " 'out' => '/path/to/output', // 代码输出目录,用于 thrift 的 --out 选项{$ln}"; echo " 'idl_git_url' => 'https://git-url', // IDL 是否使用了 git 管理,如果设置,则自动 pull,{$ln}"; echo " // 例如 https://github.com/my/thrift-idl.git{$ln}"; echo " 'idl_git_pre' => '/src/master', // IDL 文件的 git URL 前缀。在本例中:{$ln}"; echo " // 假设 idl_git_url 为 https://github.com/my/thrift-idl.git{$ln}"; echo " // IDL 路径为 /path/to/cms.thrift,idl_root_path 为 /root/thrift/idl{$ln}"; echo " // 则 git 的全路径为 https://github.com/my/thrift-idl/src/master/path/to/cms.thrift{$ln}"; echo " // 对应的本地路径为 /root/thrift/idl/path/to/cms.thrift{$ln}"; echo " 'idl_root_path' => '/path/to/idl', // IDL 根目录,与 idls 拼接,如果有 git,此目录应当设置为 git 的根目录(含 .git 的目录){$ln}"; echo " 'idls' => array( // IDL 所在的目录或文件{$ln}"; echo " '/path/to/idl/1',{$ln}"; echo " '/path/to/idl/2',{$ln}"; echo " ),{$ln}"; echo " ),{$ln}"; echo " ),{$ln}"; echo ");{$ln}"; echo "// -------- end of config-file{$ln}"; echo "{$ln}"; echo "usage example:{$ln}"; echo "1. {$self} cms-example /root/cthrift/config.php{$ln}"; echo "2. {$self} cms-example /root/cthrift/config.php https://github.com/my/thrift-idl/src/master/cms.thrift{$ln}"; echo "{$ln}"; echo "GOOD LUCK{$ln}"; echo "{$ln}"; exit(1); } function error($message, $ln = PHP_EOL) { echo "Error: {$message}{$ln}"; exit(1); } function info($message, $ln = PHP_EOL) { echo "{$message}{$ln}"; } function config($name, $value = null) { static $pool = array(); if ($value === null) { return isset($pool[$name]) ? $pool[$name] : null; } $pool[$name] = $value; } function retend_config($name, $value) { if (!is_array($value) || is_numeric(implode('', array_keys($value)))) { return config($name, $value); } foreach ($value as $n => $v) { retend_config($name . '/' . $n, $v); } } function load_config() { $file = config('/config-file'); info('load config: ' . $file); if (!is_file($file)) { error('Config file not exists!'); } $configs = include $file; if (!isset($configs['projects'])) { error('Invalid config!'); } if (!isset($configs['projects'][config('/project-name')])) { error('Project not set!'); } foreach ($configs as $name => $value) { if (!is_array($value)) { config($name, $value); } else { retend_config($name, $value); } } } function do_command($cmd, $argv, $exit_on_error = true) { foreach ($argv as $name => $value) { $cmd = str_replace('{' . $name . '}', $value, $cmd); } info($cmd); $ret = 0; passthru($cmd, $ret); if ($ret !== 0 && $exit_on_error) { error('faild!'); } return $ret; } function process_project() { $pre = 'projects/' . config('/project-name'); $out = config("{$pre}/out"); if (null === ($cmd = config('thrift_command'))) { $cmd = 'thrift --gen {gen} ' . ($out ? '--out {out} ' : '') . ' {idl}'; } if (null === ($gen = config("{$pre}/gen"))) { error('gen not set!'); } if (null === ($path = config("{$pre}/idl_root_path"))) { error('idl_root_path not set!'); } if (!is_dir($path)) { error('idl_root_path not exists!'); } $path = rtrim($path, '/\\'); $git = rtrim(config("{$pre}/idl_git_url"), '/'); if (!empty($git)) { do_command("cd {$path}; git pull;", array(), true); } if (null !== ($url = config('/idl-git-url'))) { $git = (strtolower(substr($git, -4)) === '.git' ? substr($git, 0, -4) : $git) . config("{$pre}/idl_git_pre"); if ($git !== substr($url, 0, strlen($git))) { error('Invalid git url!'); } $idls = array(substr($url, strlen($git))); } else if (null === ($idls = config("{$pre}/idls")) || empty($idls)) { error('idls not set or empty!'); } foreach ($idls as $idl) { $idl = "{$path}{$idl}"; if (is_dir($idl)) { $idl_files = glob("{$idl}/*.thrift"); } else if (is_file($idl)) { $idl_files = array($idl); } else { info("Not Found: {$idl}"); continue; } foreach ($idl_files as $file) { do_command($cmd, array( 'gen' => $gen, 'out' => $out, 'idl' => $file, ), true); } } } function run($argv) { info("Thrift Creator " . VERSION); if (!isset($argv[2])) { usage($argv[0]); } config('/config-file', $argv[2]); config('/project-name', $argv[1]); if (isset($argv[3])) { config('/idl-git-url', $argv[3]); } load_config(); process_project(); info('DONE.'); } run($argv);

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Cutting ist ein Videobearbeitungstool mit umfassenden Bearbeitungsfunktionen, Unterstützung für variable Geschwindigkeit, verschiedenen Filtern und Schönheitseffekten sowie umfangreichen Ressourcen für die Musikbibliothek. In dieser Software können Sie Videos direkt bearbeiten oder Bearbeitungsskripte erstellen, aber wie geht das? In diesem Tutorial stellt der Redakteur die Methode zum Bearbeiten und Erstellen von Skripten vor. Produktionsmethode: 1. Klicken Sie, um die Bearbeitungssoftware auf Ihrem Computer zu öffnen, suchen Sie dann die Option „Erstellungsskript“ und klicken Sie zum Öffnen. 2. Geben Sie auf der kreativen Skriptseite den „Skripttitel“ ein und geben Sie dann in der Gliederung eine kurze Einführung in den Drehinhalt ein. 3. Wie kann ich die Option „Storyboard-Beschreibung“ in der Gliederung sehen?

Wie führe ich eine .sh-Datei im Linux-System aus? In Linux-Systemen ist eine .sh-Datei eine Datei, die als Shell-Skript bezeichnet wird und zum Ausführen einer Reihe von Befehlen verwendet wird. Das Ausführen von .sh-Dateien ist ein sehr häufiger Vorgang. In diesem Artikel wird erläutert, wie .sh-Dateien in Linux-Systemen ausgeführt werden, und es werden spezifische Codebeispiele bereitgestellt. Methode 1: Verwenden Sie einen absoluten Pfad, um eine .sh-Datei auszuführen. Um eine .sh-Datei in einem Linux-System auszuführen, können Sie einen absoluten Pfad verwenden, um den Speicherort der Datei anzugeben. Im Folgenden sind die spezifischen Schritte aufgeführt: Öffnen Sie das Terminal

Was tun mit dem Bluescreen-Code 0x0000001? Der Bluescreen-Fehler ist ein Warnmechanismus, wenn ein Problem mit dem Computersystem oder der Hardware vorliegt. Der Code 0x0000001 weist normalerweise auf einen Hardware- oder Treiberfehler hin. Wenn Benutzer bei der Verwendung ihres Computers plötzlich auf einen Bluescreen-Fehler stoßen, geraten sie möglicherweise in Panik und sind ratlos. Glücklicherweise können die meisten Bluescreen-Fehler mit ein paar einfachen Schritten behoben werden. In diesem Artikel werden den Lesern einige Methoden zur Behebung des Bluescreen-Fehlercodes 0x0000001 vorgestellt. Wenn ein Bluescreen-Fehler auftritt, können wir zunächst versuchen, neu zu starten

Fermats letzter Satz steht kurz davor, von der KI erobert zu werden? Und das Bedeutsamste an der ganzen Sache ist, dass der letzte Satz von Fermat, den die KI gerade lösen wird, genau dazu dient, zu beweisen, dass KI nutzlos ist. Früher gehörte die Mathematik zum Bereich der reinen menschlichen Intelligenz; heute wird dieses Gebiet von fortschrittlichen Algorithmen entschlüsselt und mit Füßen getreten. Bild Der letzte Satz von Fermat ist ein „berüchtigtes“ Rätsel, das Mathematikern seit Jahrhunderten Rätsel aufgibt. Es wurde 1993 bewiesen, und jetzt haben Mathematiker einen großen Plan: den Beweis mithilfe von Computern nachzubilden. Sie hoffen, dass etwaige logische Fehler in dieser Version des Beweises durch einen Computer überprüft werden können. Projektadresse: https://github.com/riccardobrasca/flt

Titel: Erfahren Sie mehr über PyCharm: Eine effiziente Möglichkeit, Projekte zu löschen. In den letzten Jahren wurde Python als leistungsstarke und flexible Programmiersprache von immer mehr Entwicklern bevorzugt. Bei der Entwicklung von Python-Projekten ist es entscheidend, eine effiziente integrierte Entwicklungsumgebung zu wählen. Als leistungsstarke integrierte Entwicklungsumgebung stellt PyCharm Python-Entwicklern viele praktische Funktionen und Tools zur Verfügung, darunter das schnelle und effiziente Löschen von Projektverzeichnissen. Im Folgenden konzentrieren wir uns auf die Verwendung von delete in PyCharm

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung, die eine Fülle von Entwicklungstools und Umgebungskonfigurationen bietet und es Entwicklern ermöglicht, Code effizienter zu schreiben und zu debuggen. Bei der Verwendung von PyCharm für die Python-Projektentwicklung müssen wir manchmal das Projekt in eine ausführbare EXE-Datei packen, um es auf einem Computer auszuführen, auf dem keine Python-Umgebung installiert ist. In diesem Artikel wird erläutert, wie Sie mit PyCharm ein Projekt in eine ausführbare EXE-Datei konvertieren, und es werden spezifische Codebeispiele aufgeführt. Kopf

Wenn Sie ein Gerät aus der Ferne programmieren müssen, hilft Ihnen dieser Artikel. Wir teilen Ihnen die besten Universal-Fernbedienungscodes von GE für die Programmierung aller Geräte mit. Was ist eine GE-Fernbedienung? GEUniversalRemote ist eine Fernbedienung, mit der mehrere Geräte wie Smart-TVs, LG, Vizio, Sony, Blu-ray, DVD, DVR, Roku, AppleTV, Streaming-Media-Player und mehr gesteuert werden können. GEUniversal-Fernbedienungen gibt es in verschiedenen Modellen mit unterschiedlichen Merkmalen und Funktionen. GEUniversalRemote kann bis zu vier Geräte steuern. Top-Universalfernbedienungscodes zum Programmieren auf jedem Gerät GE-Fernbedienungen werden mit einer Reihe von Codes geliefert, die es ihnen ermöglichen, mit verschiedenen Geräten zu arbeiten. Sie können

Wir haben dieses Windows PowerShell-Skript-Tutorial für Anfänger entwickelt, egal ob Sie ein Technikbegeisterter oder ein Profi sind, der seine Skriptfähigkeiten verbessern möchte. Wenn Sie keine Vorkenntnisse in PowerShell-Skripting haben, beginnt dieser Artikel mit den Grundlagen und ist auf Sie zugeschnitten. Wir helfen Ihnen, die Installationsschritte für eine PowerShell-Umgebung zu meistern und führen Sie durch die wichtigsten Konzepte und Funktionen von PowerShell-Skripten. Wenn Sie bereit sind, mehr über PowerShell-Skripting zu erfahren, begeben wir uns gemeinsam auf diese spannende Lernreise! Was ist WindowsPowerShell? PowerShell ist ein von Microsoft entwickeltes hybrides Befehlssystem
