@Override
 protected List<FrameworkCommand> getFrameworkCommandsInternal() {
   try {
     return YiiScript.forPhpModule(phpModule, true).getCommands(phpModule);
   } catch (InvalidPhpExecutableException ex) {
     Exceptions.printStackTrace(ex);
   }
   return null;
 }
 @Override
 public void runCommand(CommandDescriptor commandDescriptor, Runnable postExecution) {
   String[] commands = commandDescriptor.getFrameworkCommand().getCommands();
   String[] commandParams = commandDescriptor.getCommandParams();
   List<String> params = new ArrayList<String>(commands.length + commandParams.length);
   params.addAll(Arrays.asList(commands));
   params.addAll(Arrays.asList(commandParams));
   try {
     YiiScript.forPhpModule(phpModule, false).runCommand(phpModule, params, postExecution);
   } catch (InvalidPhpExecutableException ex) {
     UiUtils.invalidScriptProvided(ex.getLocalizedMessage(), YiiScript.OPTIONS_SUB_PATH);
   }
 }
 @Override
 protected String getOptionsPath() {
   return YiiScript.getOptionsPath();
 }