Пример #1
0
 /// <summary>
 ///   Executes the task.
 /// </summary>
 protected override void ExecuteTask()
 {
     XibCompiler compiler = new XibCompiler();
     compiler.Logger = new ExecutionLogger(this);
     if (!compiler.Compile(this.XibFile.ToString(), this.ToDirectory.ToString()))
     {
         throw new BuildException(Resources.XibCompilationFailed);
     }
 }
Пример #2
0
 /// <summary>
 ///   Compiles the XIB files.
 /// </summary>
 /// <param name = 'monitor'>The progress monitor.</param>
 /// <param name = 'project'>The project.</param>
 /// <param name = 'maker'>The bundle maker.</param>
 /// <param name = 'result'>The build result.</param>
 public static void CompileXIBFiles(IProgressMonitor monitor, MonobjcProject project, BundleMaker maker, BuildResult result)
 {
     XibCompiler xibCompiler = new XibCompiler ();
     IEnumerable<FilePair> files = project.GetIBFiles (Constants.InterfaceDefinition, maker.ResourcesFolder);
     if (files == null || files.Count() == 0) {
         return;
     }
     List<FilePair> pairs = new List<FilePair> (files);
     monitor.BeginTask (GettextCatalog.GetString ("Compiling XIB files..."), files.Count ());
     foreach (FilePair pair in pairs) {
         monitor.Log.WriteLine (GettextCatalog.GetString ("Compiling {0}", pair.Source.ToRelative (project.BaseDirectory)));
         xibCompiler.Logger = new BuildLogger (pair.Source, monitor, result);
         xibCompiler.Compile (pair.Source, pair.DestinationDir);
         monitor.Step (1);
     }
     monitor.EndTask ();
 }
Пример #3
0
        /// <summary>
        ///   Embeds the XIB files.
        /// </summary>
        /// <param name = 'monitor'>The progress monitor.</param>
        /// <param name = 'project'>The project.</param>
        /// <param name = 'maker'>The bundle maker.</param>
        /// <param name = 'result'>The build result.</param>
        public static void EmbedXIBFiles(IProgressMonitor monitor, MonobjcProject project, BuildResult result)
        {
            XibCompiler xibCompiler = new XibCompiler ();
            IEnumerable<FilePair> files = project.GetIBFiles (Constants.EmbeddedInterfaceDefinition, null);
            if (files == null || files.Count() == 0) {
                return;
            }

            monitor.BeginTask (GettextCatalog.GetString ("Embed XIB files..."), files.Count ());
            foreach (FilePair pair in files) {
                // If the destination file is a place-holder, change its dates
                FileInfo sourceInfo = new FileInfo (pair.Source);
                FileInfo destInfo = new FileInfo (pair.Destination);
                if (destInfo.Length == 0) {
                    DateTime dateTime = sourceInfo.CreationTime.Subtract (new TimeSpan (0, 0, 1));
                    File.SetCreationTime (pair.Destination, dateTime);
                    File.SetLastAccessTime (pair.Destination, dateTime);
                    File.SetLastWriteTime (pair.Destination, dateTime);
                }

                FilePath relativeFile = pair.Source.ToRelative (project.BaseDirectory);
                monitor.Log.WriteLine (GettextCatalog.GetString ("Compiling {0}", relativeFile));
                xibCompiler.Logger = new BuildLogger (pair.Source, monitor, result);
                xibCompiler.Compile (pair.Source, pair.DestinationDir);

                monitor.Step (1);
            }
            monitor.EndTask ();
        }
Пример #4
0
        /// <summary>
        ///   Executes the task.
        /// </summary>
        public override bool Execute()
        {
            List<ITaskItem> files = new List<ITaskItem> ();
            List<ITaskItem> directories = new List<ITaskItem> ();

            this.Log.LogMessage ("XibFile       : {0}", "" + this.XibFile);
            this.Log.LogMessage ("XibFiles      : {0}", "" + this.XibFiles);
            this.Log.LogMessage ("ToDirectory   : {0}", "" + this.ToDirectory);
            this.Log.LogMessage ("ToDirectories : {0}", "" + this.ToDirectories);

            if (this.XibFile != null && this.ToDirectory != null) {
                files.Add (this.XibFile);
                directories.Add (this.ToDirectory);
            } else if (this.XibFiles != null && this.ToDirectory != null) {
                files.AddRange (this.XibFiles);
                for (int i = 0; i < files.Count; i++) {
                    directories.Add (this.ToDirectory);
                }
            } else if (this.XibFiles != null && this.ToDirectories != null) {
                files.AddRange (this.XibFiles);
                directories.AddRange (this.ToDirectories);
            } else if (this.XibFile == null && this.XibFiles == null) {
                return true;
            } else {
                return true;
            }

            this.Log.LogMessage ("Processing {0} files to {1} folders", files.Count, directories.Count);

            if (files.Count == 0) {
                return true;
            }

            if (files.Count != directories.Count) {
                this.Log.LogError (Resources.XibCompilationFailed);
                return false;
            }

            XibCompiler compiler = new XibCompiler ();
            compiler.Logger = new ExecutionLogger (this);

            for (int i = 0; i < files.Count; i++) {
                String file = files [i].ItemSpec;
                String dest = directories [i].ItemSpec;
                String parent = Path.GetDirectoryName (file);
                dest = Path.Combine (dest, parent);

                if (!compiler.Compile (file, dest)) {
                    this.Log.LogError (Resources.XibCompilationFailed);
                    return false;
                }
            }

            return true;
        }