{ $console->writeln("usage:")->writeln(" \$ curl setup.goodby.org/<vendor-name>/<package-name> | sh")->writeln("")->writeln(" vendor-name : Your github account name.")->writeln(" a-z, 0-9 and dash(-) is available.")->writeln(" package-name : Your github repository name.")->writeln(" a-z, 0-9 and dash(-) is available.")->writeln("")->writeln("example:")->writeln(" \$ curl setup.goodby.org/alice-brown/csv-parser | sh"); } $console = new Console(); if (isset($_SERVER['REQUEST_URI']) === false) { show_help($console); $console->quit(); } $pathinfo = trim($_SERVER['REQUEST_URI'], '/'); if (!preg_match('#^(?P<vendor_name>[^/]+)/(?P<package_name>[^/]+)$#', $pathinfo, $matches)) { $console->writeln("Invalid request."); show_help($console); $console->quit(); } $vendorName = new Name($matches['vendor_name']); $packageName = new Name($matches['package_name']); if ($vendorName->isValid() === false) { $console->writeln("Invalid vendor name: " . $vendorName->getName()); show_help($console); $console->quit(); } if ($packageName->isValid() === false) { $console->writeln("Invalid package name: " . $packageName->getName()); show_help($console); $console->quit(); } $substitutionMap = array('__vendor-name__' => $vendorName->asDashed(), '__vendor_name__' => $vendorName->asLowerSnake(), '__VENDOR_NAME__' => $vendorName->asUpperSnake(), '__VendorName__' => $vendorName->asCamel(), '__package-name__' => $packageName->asDashed(), '__package_name__' => $packageName->asLowerSnake(), '__PACKAGE_NAME__' => $packageName->asUpperSnake(), '__PackageName__' => $packageName->asCamel()); $commands = file_get_contents(__DIR__ . '/setup.sh'); $commands = str_replace(array_keys($substitutionMap), array_values($substitutionMap), $commands); $console->execute($commands); $console->quit();