Chris@0: setValidator([Utils::class, 'validateRequired']); Chris@0: $questions['machine_name'] = new Question('Module machine name'); Chris@0: $questions['machine_name']->setValidator([Utils::class, 'validateMachineName']); Chris@0: return $questions; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns default questions for plugin generators. Chris@0: * Chris@0: * @return \Symfony\Component\Console\Question\Question[] Chris@0: * Array of default questions. Chris@0: */ Chris@0: public static function defaultPluginQuestions() { Chris@0: $questions = Utils::defaultQuestions(); Chris@0: $questions['plugin_label'] = new Question('Plugin label', 'Example'); Chris@0: $questions['plugin_label']->setValidator([Utils::class, 'validateRequired']); Chris@0: $questions['plugin_id'] = new Question('Plugin ID', [Utils::class, 'defaultPluginId']); Chris@0: $questions['plugin_id']->setValidator([Utils::class, 'validateMachineName']); Chris@0: return $questions; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns extension root. Chris@0: * Chris@0: * @return string|bool Chris@0: * Extension root directory or false if it was not found. Chris@0: */ Chris@0: public static function getExtensionRoot($directory) { Chris@0: $extension_root = FALSE; Chris@0: for ($i = 1; $i <= 5; $i++) { Chris@0: $info_file = $directory . '/' . basename($directory) . '.info'; Chris@0: if (file_exists($info_file) || file_exists($info_file . '.yml')) { Chris@0: $extension_root = $directory; Chris@0: break; Chris@0: } Chris@0: $directory = dirname($directory); Chris@0: } Chris@0: return $extension_root; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Removes a given number of lines from the beginning of the string. Chris@0: */ Chris@0: public static function removeHeader($content, $header_size) { Chris@0: return implode("\n", array_slice(explode("\n", $content), $header_size)); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Return the user's home directory. Chris@0: */ Chris@0: public static function getHomeDirectory() { Chris@0: return isset($_SERVER['HOME']) ? $_SERVER['HOME'] : getenv('HOME'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Replaces all tokens in a given string with appropriate values. Chris@0: * Chris@0: * @param string $text Chris@0: * A string potentially containing replaceable tokens. Chris@0: * @param array $data Chris@0: * An array where keys are token names and values are replacements. Chris@0: * Chris@0: * @return string Chris@0: * Text with tokens replaced. Chris@0: */ Chris@0: public static function tokenReplace($text, array $data) { Chris@0: $tokens = []; Chris@0: foreach ($data as $var_name => $var) { Chris@0: if (is_string($var)) { Chris@0: $tokens['{' . $var_name . '}'] = $var; Chris@0: } Chris@0: } Chris@0: return str_replace(array_keys($tokens), array_values($tokens), $text); Chris@0: } Chris@0: Chris@0: }