MDL-37046 behat: CLI tool
[moodle.git] / admin / tool / behat / cli / util.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * CLI script
19  *
20  * @package    tool_behat
21  * @copyright  2012 David MonllaĆ³
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 define('CLI_SCRIPT', true);
27 require(__DIR__ . '/../../../../config.php');
28 require_once($CFG->libdir . '/clilib.php');
29 require_once($CFG->dirroot . '/' . $CFG->admin . '/tool/behat/locallib.php');
31 // now get cli options
32 list($options, $unrecognized) = cli_get_params(
33     array(
34         'help            '   => false,
35         'stepsdefinitions'   => false,
36         'buildconfigfile'    => false,
37         'runtests'           => false
38     ),
39     array(
40         'h' => 'help'
41     )
42 );
44 $help = "
45 Behat tool
47 Ensure the user who executes the action has permissions over behat installation
49 Options:
50 --stepsdefinitions   Displays the available steps definitions
51 --buildconfigfile    Updates the Moodle components config file
52 --runtests           Runs the tests
54 -h, --help     Print out this help
56 Example from Moodle root directory:
57 \$ php admin/tool/behat/cli/util --stepsdefinitions
58 ";
60 if (!empty($options['help'])) {
61     echo $help;
62     exit(0);
63 }
65 if ($unrecognized) {
66     $unrecognized = implode("\n  ", $unrecognized);
67     cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
68 }
70 $commands = array('stepsdefinitions', 'buildconfigfile', 'runtests');
71 foreach ($commands as $command) {
72     if (isset($options[$command])) {
73         $action = $command;
74     }
75 }
77 if (!$action) {
78     mtrace('No command selected');
79     echo $help;
80     exit(0);
81 }
83 call_user_func('tool_behat::' . $action);
85 mtrace(get_string('finished', 'tool_behat'));