void UpdateUserType(NSObjectTypeInfo type) { if (userClasses.Add(type.ObjCName)) { xcodeProjectDirty = true; } //FIXME: types dep on other types on project, need better regeneration skipping //FilePath target = outputDir.Combine (type.ObjCName + ".h"); //if (File.Exists (target) && File.GetLastWriteTime (target) >= type.DefinedIn.Max (f => File.GetLastWriteTime (f))) // return; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } type.GenerateObjcType(outputDir); string headerFlag = outputDir.Combine(type.ObjCName + ".h.modified"); if (File.Exists(headerFlag)) { File.SetLastWriteTime(headerFlag, DateTime.Now); } else { File.WriteAllText(headerFlag, ""); } }
public static XcodeSyncObjcBackJob UpdateType(NSObjectTypeInfo type, string designerFile) { return(new XcodeSyncObjcBackJob() { DesignerFile = designerFile, Type = type, }); }
public static XcodeSyncObjcBackJob NewType(NSObjectTypeInfo type, string relativePath) { return(new XcodeSyncObjcBackJob() { RelativePath = relativePath, IsFreshlyAdded = true, Type = type, }); }
void UpdateUserType(NSObjectTypeInfo type) { if (userClasses.Add(type.ObjCName)) { xcodeProjectDirty = true; } FilePath target = outputDir.Combine(type.ObjCName + ".h"); if (File.Exists(target) && File.GetLastWriteTime(target) >= type.DefinedIn.Max(f => File.GetLastWriteTime(f))) { return; } if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } typeTracker.GenerateObjcType(type, outputDir); }
void UpdateUserType(NSObjectTypeInfo type) { if (userClasses.Add(type.ObjCName)) { xcodeProjectDirty = true; } //FIXME: types dep on other types on project, need better regeneration skipping //FilePath target = outputDir.Combine (type.ObjCName + ".h"); //if (File.Exists (target) && File.GetLastWriteTime (target) >= type.DefinedIn.Max (f => File.GetLastWriteTime (f))) // return; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } type.GenerateObjcType(outputDir); string fullH = outputDir.Combine(type.ObjCName + ".h"); trackedFiles[fullH] = File.GetLastWriteTime(fullH); }
void ScanForAddedFiles(XcodeSyncBackContext ctx, HashSet <string> knownFiles, string directory, string relativePath) { foreach (var file in Directory.EnumerateFiles(directory)) { if (file.EndsWith("~") || file.EndsWith(".m")) { continue; } if (knownFiles.Contains(file)) { continue; } if (file.EndsWith(".h")) { NSObjectTypeInfo parsed = NSObjectInfoService.ParseHeader(file); ctx.TypeSyncJobs.Add(XcodeSyncObjcBackJob.NewType(parsed, relativePath)); } else { FilePath original, relative; if (relativePath != null) { relative = new FilePath(Path.Combine(relativePath, Path.GetFileName(file))); } else { relative = new FilePath(Path.GetFileName(file)); } original = ctx.Project.BaseDirectory.Combine(relative); ctx.FileSyncJobs.Add(new XcodeSyncFileBackJob(original, relative, true)); } } foreach (var dir in Directory.EnumerateDirectories(directory)) { string relative; // Ignore *.xcodeproj directories and any directories named DerivedData at the toplevel if (dir.EndsWith(".xcodeproj") || (relativePath == null && Path.GetFileName(dir) == "DerivedData")) { continue; } if (relativePath != null) { relative = Path.Combine(relativePath, Path.GetFileName(dir)); } else { relative = Path.GetFileName(dir); } ScanForAddedFiles(ctx, knownFiles, dir, relative); } }
public XcodeSyncedType(NSObjectTypeInfo type, string[] frameworks) { Frameworks = frameworks; Type = type; }