protected function initPhingProperties(Project $project) { // Apply all file properties, then all non-file properties $properties = new Properties(); foreach ($this->fileProps as $key => $value) { $properties->put($key, $value); } foreach ($this->customProps as $key => $value) { $properties->put($key, $value); } // Then swap out placeholder values foreach ($properties->getProperties() as $key => $value) { $value = ProjectConfigurator::replaceProperties($project, $value, $properties->getProperties()); $project->setProperty($key, $value); } }
/** * Setup/initialize Phing environment from commandline args. * * @param array $args commandline args passed to phing shell. * * @throws ConfigurationException * * @return void */ public function execute($args) { self::$definedProps = new Properties(); $this->searchForThis = null; // 1) First handle any options which should always // Note: The order in which these are executed is important (if multiple of these options are specified) if (in_array('-help', $args) || in_array('-h', $args)) { $this->printUsage(); return; } if (in_array('-version', $args) || in_array('-v', $args)) { $this->printVersion(); return; } if (in_array('-diagnostics', $args)) { Diagnostics::doReport(new PrintStream(self::$out)); return; } // 2) Next pull out stand-alone args. // Note: The order in which these are executed is important (if multiple of these options are specified) if (false !== ($key = array_search('-quiet', $args, true)) || false !== ($key = array_search('-q', $args, true))) { self::$msgOutputLevel = Project::MSG_WARN; unset($args[$key]); } if (false !== ($key = array_search('-emacs', $args, true)) || false !== ($key = array_search('-e', $args, true))) { $this->emacsMode = true; unset($args[$key]); } if (false !== ($key = array_search('-verbose', $args, true))) { self::$msgOutputLevel = Project::MSG_VERBOSE; unset($args[$key]); } if (false !== ($key = array_search('-debug', $args, true))) { self::$msgOutputLevel = Project::MSG_DEBUG; unset($args[$key]); } if (false !== ($key = array_search('-silent', $args, true)) || false !== ($key = array_search('-S', $args, true))) { $this->silent = true; unset($args[$key]); } // 3) Finally, cycle through to parse remaining args // $keys = array_keys($args); // Use keys and iterate to max(keys) since there may be some gaps $max = $keys ? max($keys) : -1; for ($i = 0; $i <= $max; $i++) { if (!array_key_exists($i, $args)) { // skip this argument, since it must have been removed above. continue; } $arg = $args[$i]; if ($arg == "-logfile") { try { // see: http://phing.info/trac/ticket/65 if (!isset($args[$i + 1])) { $msg = "You must specify a log file when using the -logfile argument\n"; throw new ConfigurationException($msg); } else { $logFile = new PhingFile($args[++$i]); $out = new FileOutputStream($logFile); // overwrite self::setOutputStream($out); self::setErrorStream($out); self::$isLogFileUsed = true; } } catch (IOException $ioe) { $msg = "Cannot write on the specified log file. Make sure the path exists and you have write permissions."; throw new ConfigurationException($msg, $ioe); } } elseif ($arg == "-buildfile" || $arg == "-file" || $arg == "-f") { if (!isset($args[$i + 1])) { $msg = "You must specify a buildfile when using the -buildfile argument."; throw new ConfigurationException($msg); } else { $this->buildFile = new PhingFile($args[++$i]); } } elseif ($arg == "-listener") { if (!isset($args[$i + 1])) { $msg = "You must specify a listener class when using the -listener argument"; throw new ConfigurationException($msg); } else { $this->listeners[] = $args[++$i]; } } elseif (StringHelper::startsWith("-D", $arg)) { // Evaluating the property information // // Checking whether arg. is not just a switch, and next arg. does not starts with switch identifier if ('-D' == $arg && !StringHelper::startsWith('-', $args[$i + 1])) { $name = $args[++$i]; } else { $name = substr($arg, 2); } $value = null; $posEq = strpos($name, "="); if ($posEq !== false) { $value = substr($name, $posEq + 1); $name = substr($name, 0, $posEq); } elseif ($i < count($args) - 1 && !StringHelper::startsWith("-D", $args[$i + 1])) { $value = $args[++$i]; } self::$definedProps->setProperty($name, $value); } elseif ($arg == "-logger") { if (!isset($args[$i + 1])) { $msg = "You must specify a classname when using the -logger argument"; throw new ConfigurationException($msg); } else { $this->loggerClassname = $args[++$i]; } } elseif ($arg == "-inputhandler") { if ($this->inputHandlerClassname !== null) { throw new ConfigurationException("Only one input handler class may be specified."); } if (!isset($args[$i + 1])) { $msg = "You must specify a classname when using the -inputhandler argument"; throw new ConfigurationException($msg); } else { $this->inputHandlerClassname = $args[++$i]; } } elseif ($arg == "-propertyfile") { if (!isset($args[$i + 1])) { $msg = "You must specify a filename when using the -propertyfile argument"; throw new ConfigurationException($msg); } else { $p = new Properties(); $p->load(new PhingFile($args[++$i])); foreach ($p->getProperties() as $prop => $value) { $this->setProperty($prop, $value); } } } elseif ($arg == "-longtargets") { self::$definedProps->setProperty('phing.showlongtargets', 1); } elseif ($arg == "-projecthelp" || $arg == "-targets" || $arg == "-list" || $arg == "-l" || $arg == "-p") { // set the flag to display the targets and quit $this->projectHelp = true; } elseif ($arg == "-find") { // eat up next arg if present, default to build.xml if ($i < count($args) - 1) { $this->searchForThis = $args[++$i]; } else { $this->searchForThis = self::DEFAULT_BUILD_FILENAME; } } elseif (substr($arg, 0, 1) == "-") { // we don't have any more args self::printUsage(); self::$err->write(PHP_EOL); throw new ConfigurationException("Unknown argument: " . $arg); } else { // if it's no other arg, it may be the target array_push($this->targets, $arg); } } // if buildFile was not specified on the command line, if ($this->buildFile === null) { // but -find then search for it if ($this->searchForThis !== null) { $this->buildFile = $this->_findBuildFile(self::getProperty("user.dir"), $this->searchForThis); } else { $this->buildFile = new PhingFile(self::DEFAULT_BUILD_FILENAME); } } try { // make sure buildfile (or buildfile.dist) exists if (!$this->buildFile->exists()) { $distFile = new PhingFile($this->buildFile->getAbsolutePath() . ".dist"); if (!$distFile->exists()) { throw new ConfigurationException("Buildfile: " . $this->buildFile->__toString() . " does not exist!"); } $this->buildFile = $distFile; } // make sure it's not a directory if ($this->buildFile->isDirectory()) { throw new ConfigurationException("Buildfile: " . $this->buildFile->__toString() . " is a dir!"); } } catch (IOException $e) { // something else happened, buildfile probably not readable throw new ConfigurationException("Buildfile: " . $this->buildFile->__toString() . " is not readable!"); } $this->readyToRun = true; }
protected function getFilesToExecute() { $map = new Properties(); try { $map->load($this->getSqlDbMap()); } catch (IOException $ioe) { throw new BuildException("Cannot open and process the sqldbmap!"); } $databases = array(); foreach ($map->getProperties() as $sqlfile => $database) { if (!isset($databases[$database])) { $databases[$database] = array(); } // We want to make sure that the base schemas // are inserted first. if (strpos($sqlfile, "schema.sql") !== false) { // add to the beginning of the array array_unshift($databases[$database], $sqlfile); } else { // add to the end of the array array_push($databases[$database], $sqlfile); } } return $databases; }
/** * Output the properties as xml output. * * @param Properties $props the properties to save * @param OutputStream $os the output stream to write to (Note this gets closed) * * @throws BuildException */ protected function xmlSaveProperties(Properties $props, OutputStream $os) { $doc = new DOMDocument('1.0', 'UTF-8'); $doc->formatOutput = true; $rootElement = $doc->createElement(self::$PROPERTIES); $properties = $props->getProperties(); ksort($properties); foreach ($properties as $key => $value) { $propElement = $doc->createElement(self::$PROPERTY); $propElement->setAttribute(self::$ATTR_NAME, $key); $propElement->setAttribute(self::$ATTR_VALUE, $value); $rootElement->appendChild($propElement); } try { $doc->appendChild($rootElement); $os->write($doc->saveXML()); } catch (IOException $ioe) { throw new BuildException("Unable to write XML file", $ioe); } }
$properties_handle = new Properties(); foreach ($properties_handle->messages as $key => $value) { echo "<script type='text/javascript'>alert('{$value}');</script>"; } foreach ($properties_handle->errors as $key => $value) { echo "<script type='text/javascript'>alert('Error: {$value}');</script>"; } $html_creator = new HtmlCreator(); $status = $server_handle->getStatus($server_name); $jar_properties = $server_handle->getProperties(); $jars = $server_handle->getJars(); $jar = $jar_properties['jar']; $xms = $html_creator->createInput("xms_prop", $jar_properties['xms']); $xmx = $html_creator->createInput("xmx_prop", $jar_properties['xmx']); $jar_selector = $html_creator->createSelector($jars, $jar, 'jar_prop', True, 'width:175px'); $properties = $properties_handle->getProperties(); $gamemode = ["0" => "0 - Survival", "1" => "1 - Creative", "2" => "2 - Adventure", "3" => "3 - Spectator"]; $gamemode_selector = $html_creator->createSelector($gamemode, $properties['gamemode'], 'gamemode', False, 'width:175px'); $difficulty = ["0" => "0 - Peaceful", "1" => "1 - Easy", "2" => "2 - Normal", "3" => "3 - Hard"]; $difficulty_selector = $html_creator->createSelector($difficulty, $properties['difficulty'], 'difficulty', False, 'width:175px'); $online = ["true" => "True", "false" => "False"]; $online_selector = $html_creator->createSelector($online, $properties['online-mode'], 'online-mode', False, 'width:175px'); ?> <script type="text/javascript"> function stopRKey(evt) { var evt = (evt) ? evt : ((event) ? event : null); var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); if ((evt.keyCode == 13) && (node.type=="text")) {return false;} }