@@ -35,6 +35,7 @@ protected function configure()
3535 ->setName ('server:status ' )
3636 ->setDefinition (array (
3737new InputOption ('pidfile ' ,null , InputOption::VALUE_REQUIRED ,'PID file ' ),
38+ new InputOption ('filter ' ,null , InputOption::VALUE_REQUIRED ,'The value to display (one of port, host, or address) ' ),
3839 ))
3940 ->setDescription ('Outputs the status of the local web server for the given address ' )
4041 ;
@@ -47,10 +48,28 @@ protected function execute(InputInterface $input, OutputInterface $output)
4748 {
4849$ io =new SymfonyStyle ($ input ,$ outputinstanceof ConsoleOutputInterface ?$ output ->getErrorOutput () :$ output );
4950$ server =new WebServer ();
50- if ($ server ->isRunning ($ input ->getOption ('pidfile ' ))) {
51- $ io ->success (sprintf ('Web server still listening on http://%s ' ,$ server ->getAddress ($ input ->getOption ('pidfile ' ))));
51+ if ($ filter =$ input ->getOption ('filter ' )) {
52+ if ($ server ->isRunning ($ input ->getOption ('pidfile ' ))) {
53+ list ($ host ,$ port ) =explode (': ' ,$ address =$ server ->getAddress ($ input ->getOption ('pidfile ' )));
54+ if ('address ' ===$ filter ) {
55+ $ output ->write ($ address );
56+ }elseif ('host ' ===$ filter ) {
57+ $ output ->write ($ host );
58+ }elseif ('port ' ===$ filter ) {
59+ $ output ->write ($ port );
60+ }else {
61+ throw new \InvalidArgumentException (sprintf ('"%s" is not a valid filter. ' ,$ filter ));
62+ }
63+ }else {
64+ return 1 ;
65+ }
5266 }else {
53- $ io ->warning ('No web server is listening. ' );
67+ if ($ server ->isRunning ($ input ->getOption ('pidfile ' ))) {
68+ $ io ->success (sprintf ('Web server still listening on http://%s ' ,$ server ->getAddress ($ input ->getOption ('pidfile ' ))));
69+ }else {
70+ $ io ->warning ('No web server is listening. ' );
71+ return 1 ;
72+ }
5473 }
5574 }
5675}