protected int compile()

in flex-compiler-oem/src/main/java/flex2/tools/flexbuilder/BuilderLibrary.java [105:372]


	protected int compile(boolean incremental)
	{
		//File dumpConfigFile = null;
		OEMConfiguration config = null;
		
        // step over special-cased configuration options:
        //     FlexBuilder exposes some compiler options as UI (such as a checkbox for accessibility)
        //     and other compiler options like -help have no meaning when used in FB (since you press F1...)
        //     FB serialzes these and gives it to us as a commandline in OEMConfiguration.extra
        //     So we need to parse those...
		if (c != null)
		{
			String[] args = c.extra;
			if (args != null && args.length > 0)
			{
				config = (OEMConfiguration) c.configuration;
				if (config != null)
				{
					ConfigurationBuffer cfgbuf = OEMUtil.getCompcConfigurationBuffer(OEMUtil.getLogger(getLogger(), null), resolver, args);
					if (cfgbuf == null)
					{
						return -1;
					}
					
					List positions = cfgbuf.getPositions();
					for (int i = 0, length = positions.size(); i < length; i++)
					{
						Object[] a = (Object[]) positions.get(i);
						String var = (String) a[0];		
						
						if ("link-report".equals(var))
						{
							config.keepLinkReport(true);
						}
						else if ("compiler.debug".equals(var))
						{
							try
							{
								String value = cfgbuf.peekSimpleConfigurationVar(var);
								String debugPassword = cfgbuf.peekSimpleConfigurationVar("debug-password");
								if ("true".equals(value))
								{
									config.enableDebugging(true, debugPassword);
								}
								else if ("false".equals(value))
								{
									config.enableDebugging(false, debugPassword);
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("compiler.verbose-stacktraces".equals(var))
						{
							try
							{
								String value = cfgbuf.peekSimpleConfigurationVar(var);
								if ("true".equals(value))
								{
									config.enableVerboseStacktraces(true);
								}
								else if ("false".equals(value))
								{
									config.enableVerboseStacktraces(false);
								}
							}
							catch (ConfigurationException ex)
							{
							}							
						}
						else if ("compiler.accessible".equals(var))
						{
							try
							{
								String value = cfgbuf.peekSimpleConfigurationVar(var);
								if ("true".equals(value))
								{
									config.enableAccessibility(true);
								}
								else if ("false".equals(value))
								{
									config.enableAccessibility(false);
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("compiler.strict".equals(var))
						{
							try
							{
								String value = cfgbuf.peekSimpleConfigurationVar(var);
								if ("true".equals(value))
								{
									config.enableStrictChecking(true);
								}
								else if ("false".equals(value))
								{
									config.enableStrictChecking(false);
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("help".equals(var))
						{
							// do nothing
						}
						else if ("output".equals(var))
						{
							try
							{
								String isDirectory = cfgbuf.peekSimpleConfigurationVar("directory");
								String value = cfgbuf.peekSimpleConfigurationVar(var);
								if ("true".equals(isDirectory))
								{
									setDirectory(new File(value));
								}
								else
								{
									setOutput(new File(value));
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("size-report".equals(var))
						{
							config.keepSizeReport(true);
						}
						else if ("directory".equals(var))
						{
							// do nothing
						}
						else if ("version".equals(var))
						{
							// do nothing
						}
						else if ("include-classes".equals(var))
						{
							try
							{
								List l = cfgbuf.peekConfigurationVar(var);
								for (int j = 0, len = l == null ? 0 : l.size(); j < len; j++)
								{
									ConfigurationValue val = (ConfigurationValue) l.get(j);
									List valArgs = val.getArgs();
									for (int k = 0, size = valArgs == null ? 0 : valArgs.size(); k < size; k++)
									{
										this.addComponent((String) valArgs.get(k));
									}
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("include-file".equals(var))
						{
							try
							{
								List l = cfgbuf.peekConfigurationVar(var);
								for (int j = 0, len = l == null ? 0 : l.size(); j < len; j++)
								{
									ConfigurationValue val = (ConfigurationValue) l.get(j);
									List valArgs = val.getArgs();
									this.addArchiveFile((String) valArgs.get(0), new File((String) valArgs.get(1))); 
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("include-namespaces".equals(var))
						{
							try
							{
								List l = cfgbuf.peekConfigurationVar(var);
								for (int j = 0, len = l == null ? 0 : l.size(); j < len; j++)
								{
									ConfigurationValue val = (ConfigurationValue) l.get(j);
									List valArgs = val.getArgs();
									for (int k = 0, size = valArgs == null ? 0 : valArgs.size(); k < size; k++)
									{
										try
										{
											this.addComponent(new URI((String) valArgs.get(k)));
										}
										catch (URISyntaxException ex)
										{
											ex.printStackTrace();
										}
									}
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("include-resource-bundles".equals(var))
						{
							try
							{
								List l = cfgbuf.peekConfigurationVar(var);
								for (int j = 0, len = l == null ? 0 : l.size(); j < len; j++)
								{
									ConfigurationValue val = (ConfigurationValue) l.get(j);
									List valArgs = val.getArgs();
									for (int k = 0, size = valArgs == null ? 0 : valArgs.size(); k < size; k++)
									{
										this.addResourceBundle((String) valArgs.get(k));
									}
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
						else if ("include-sources".equals(var))
						{
							try
							{
								List l = cfgbuf.peekConfigurationVar(var);
								for (int j = 0, len = l == null ? 0 : l.size(); j < len; j++)
								{
									ConfigurationValue val = (ConfigurationValue) l.get(j);
									List valArgs = val.getArgs();
									for (int k = 0, size = valArgs == null ? 0 : valArgs.size(); k < size; k++)
									{
										this.addComponent(new File((String) valArgs.get(k)));
									}
								}
							}
							catch (ConfigurationException ex)
							{
							}
						}
					}

					config.setConfiguration(OEMUtil.trim(args, cfgbuf, excludes));
					// c.extra = null;
				}
			}
		}
		
		int result = super.compile(incremental);
		
		/*
		if (dumpConfigFile != null && config != null && config.cfgbuf != null)
		{
            try
            {
                String text = OEMUtil.formatConfigurationBuffer(config.cfgbuf);
            	FileUtil.writeFile(dumpConfigFile.getAbsolutePath(), text);
            }
            catch (Exception ex)
            {
            	ex.printStackTrace();
            }
		}
		*/
		
		return result;
	}