public PBXFileReference(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
public XCProject(string filePath) : this() { if (!System.IO.Directory.Exists(filePath)) { Debug.LogWarning("Path does not exists."); return; } if (filePath.EndsWith(".xcodeproj")) { //Debug.Log( "Opening project " + filePath ); this.projectRootPath = Path.GetDirectoryName(filePath); this.filePath = filePath; } else { //Debug.Log( "Looking for xcodeproj files in " + filePath ); string[] projects = System.IO.Directory.GetDirectories(filePath, "*.xcodeproj"); if (projects.Length == 0) { Debug.LogWarning("Error: missing xcodeproj file"); return; } this.projectRootPath = filePath; this.filePath = projects[0]; } // Convert to absolute this.projectRootPath = Path.GetFullPath(this.projectRootPath); projectFileInfo = new FileInfo(Path.Combine(this.filePath, "project.pbxproj")); StreamReader sr = projectFileInfo.OpenText(); string contents = sr.ReadToEnd(); sr.Close(); PBXParser parser = new PBXParser(); _datastore = parser.Decode(contents); if (_datastore == null) { throw new System.Exception("Project file not found at file path " + filePath); } if (!_datastore.ContainsKey("objects")) { Debug.Log("Errore " + _datastore.Count); return; } _objects = (PBXDictionary)_datastore["objects"]; modified = false; _rootObjectKey = (string)_datastore["rootObject"]; if (!string.IsNullOrEmpty(_rootObjectKey)) { // _rootObject = (PBXDictionary)_objects[ _rootObjectKey ]; _project = new PBXProject(_rootObjectKey, (PBXDictionary)_objects[_rootObjectKey]); // _rootGroup = (PBXDictionary)_objects[ (string)_rootObject[ "mainGroup" ] ]; _rootGroup = new PBXGroup(_rootObjectKey, (PBXDictionary)_objects[_project.mainGroupID]); } else { Debug.LogWarning("error: project has no root object"); _project = null; _rootGroup = null; } }
// public PBXDictionary<PBXBuildPhase> GetBuildPhase( string buildPhase ) // { // switch( buildPhase ) { // case "PBXFrameworksBuildPhase": // return (PBXDictionary<PBXBuildPhase>)frameworkBuildPhases; // case "PBXResourcesBuildPhase": // return (PBXDictionary<PBXBuildPhase>)resourcesBuildPhases; // case "PBXShellScriptBuildPhase": // return (PBXDictionary<PBXBuildPhase>)shellScriptBuildPhases; // case "PBXSourcesBuildPhase": // return (PBXDictionary<PBXBuildPhase>)sourcesBuildPhases; // case "PBXCopyFilesBuildPhase": // return (PBXDictionary<PBXBuildPhase>)copyBuildPhases; // default: // return default(T); // } // } public PBXDictionary AddFile(string filePath, PBXGroup parent = null, string tree = "SOURCE_ROOT", bool createBuildFiles = true, bool weak = false) { PBXDictionary results = new PBXDictionary(); string absPath = string.Empty; if (Path.IsPathRooted(filePath)) { absPath = filePath; // Debug.Log( "Is rooted: " + absPath ); } else if (tree.CompareTo("SDKROOT") != 0) { absPath = Path.Combine(Application.dataPath.Replace("Assets", ""), filePath); // Debug.Log( "RElative: " + absPath ); } if (!(File.Exists(absPath) || Directory.Exists(absPath)) && tree.CompareTo("SDKROOT") != 0) { Debug.Log("Missing file: " + absPath + " > " + filePath); return(results); } else if (tree.CompareTo("SOURCE_ROOT") == 0 || tree.CompareTo("GROUP") == 0) { System.Uri fileURI = new System.Uri(absPath); System.Uri rootURI = new System.Uri((projectRootPath + "/.")); filePath = rootURI.MakeRelativeUri(fileURI).ToString(); } // else { // tree = "<absolute>"; // Debug.Log( "3: " + filePath ); // } // Debug.Log( "Add file result path: " + filePath ); if (parent == null) { parent = _rootGroup; } // TODO: Aggiungere controllo se file già presente PBXFileReference fileReference = GetFile(System.IO.Path.GetFileName(filePath)); if (fileReference != null) { // Debug.Log( "File già presente." ); return(null); } fileReference = new PBXFileReference(filePath, (TreeEnum)System.Enum.Parse(typeof(TreeEnum), tree)); parent.AddChild(fileReference); fileReferences.Add(fileReference); results.Add(fileReference.guid, fileReference); //Create a build file for reference if (!string.IsNullOrEmpty(fileReference.buildPhase) && createBuildFiles) { // PBXDictionary<PBXBuildPhase> currentPhase = GetBuildPhase( fileReference.buildPhase ); PBXBuildFile buildFile; switch (fileReference.buildPhase) { case "PBXFrameworksBuildPhase": foreach (KeyValuePair <string, PBXFrameworksBuildPhase> currentObject in frameworkBuildPhases) { buildFile = new PBXBuildFile(fileReference, weak); buildFiles.Add(buildFile); currentObject.Value.AddBuildFile(buildFile); } if (!string.IsNullOrEmpty(absPath) && File.Exists(absPath) && tree.CompareTo("SOURCE_ROOT") == 0) { //Debug.LogError(absPath); string libraryPath = Path.Combine("$(SRCROOT)", Path.GetDirectoryName(filePath)); this.AddLibrarySearchPaths(new PBXList(libraryPath)); } else if (!string.IsNullOrEmpty(absPath) && Directory.Exists(absPath) && absPath.EndsWith(".framework") && tree.CompareTo("GROUP") == 0) // Annt: Add framework search path for FacebookSDK { string frameworkPath = Path.Combine("$(SRCROOT)", Path.GetDirectoryName(filePath)); this.AddFrameworkSearchPaths(new PBXList(frameworkPath)); } break; case "PBXResourcesBuildPhase": foreach (KeyValuePair <string, PBXResourcesBuildPhase> currentObject in resourcesBuildPhases) { buildFile = new PBXBuildFile(fileReference, weak); buildFiles.Add(buildFile); currentObject.Value.AddBuildFile(buildFile); } break; case "PBXShellScriptBuildPhase": foreach (KeyValuePair <string, PBXShellScriptBuildPhase> currentObject in shellScriptBuildPhases) { buildFile = new PBXBuildFile(fileReference, weak); buildFiles.Add(buildFile); currentObject.Value.AddBuildFile(buildFile); } break; case "PBXSourcesBuildPhase": foreach (KeyValuePair <string, PBXSourcesBuildPhase> currentObject in sourcesBuildPhases) { buildFile = new PBXBuildFile(fileReference, weak); buildFiles.Add(buildFile); currentObject.Value.AddBuildFile(buildFile); } break; case "PBXCopyFilesBuildPhase": foreach (KeyValuePair <string, PBXCopyFilesBuildPhase> currentObject in copyBuildPhases) { buildFile = new PBXBuildFile(fileReference, weak); buildFiles.Add(buildFile); currentObject.Value.AddBuildFile(buildFile); } break; case null: Debug.LogWarning("fase non supportata null"); break; default: Debug.LogWarning("fase non supportata def"); return(null); } } // Debug.Log( "Results " + results.Count + " - " ); // foreach( KeyValuePair<string, object> obj in results ){ // Debug.Log( obj.Key + " - " + obj.Value.GetType().Name ); // } return(results); // def add_file(self, f_path, parent=None, tree='SOURCE_ROOT', create_build_files=True, weak=False): // results = [] // // abs_path = '' // // if os.path.isabs(f_path): // abs_path = f_path // // if not os.path.exists(f_path): // return results // elif tree == 'SOURCE_ROOT': // f_path = os.path.relpath(f_path, self.source_root) // else: // tree = '<absolute>' // // if not parent: // parent = self.root_group // elif not isinstance(parent, PBXGroup): // # assume it's an id // parent = self.objects.get(parent, self.root_group) // // file_ref = PBXFileReference.Create(f_path, tree) // parent.add_child(file_ref) // results.append(file_ref) // # create a build file for the file ref // if file_ref.build_phase and create_build_files: // phases = self.get_build_phases(file_ref.build_phase) // // for phase in phases: // build_file = PBXBuildFile.Create(file_ref, weak=weak) // // phase.add_build_file(build_file) // results.append(build_file) // // if abs_path and tree == 'SOURCE_ROOT' and os.path.isfile(abs_path)\ // and file_ref.build_phase == 'PBXFrameworksBuildPhase': // // library_path = os.path.join('$(SRCROOT)', os.path.split(f_path)[0]) // // self.add_library_search_paths([library_path], recursive=False) // // for r in results: // self.objects[r.id] = r // // if results: // self.modified = True // // return results }
public PBXBuildFile(string guid, PBXDictionary dictionary) : base(guid, dictionary) { // Debug.Log( "constructor child" ); }
public PBXGroup(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
// private T Convert<T>( PBXDictionary dictionary ) // { // if( dictionary.ContainsKey( "isa" ) ){ //// ((string)dictionary["isa"]).CompareTo( // Type targetType = Type.GetType( (string)dictionary["isa"] ); // if( targetType.IsSubclassOf( typeof(PBXObject) ) ) { // Debug.Log( "ok" ); // T converted = (T)Activator.CreateInstance( targetType ); // return converted; // } // else { // Debug.Log( "Warning: unknown PBX type: " + targetType.Name ); // return default(T); // } // // } // return default(T); // // } private PBXDictionary ParseDictionary() { SkipWhitespaces(); PBXDictionary dictionary = new PBXDictionary(); string keyString = string.Empty; object valueObject = null; bool complete = false; while (!complete) { switch (NextToken()) { case END_OF_FILE: Debug.Log("Error: reached end of file inside a dictionary: " + index); complete = true; break; case DICTIONARY_ITEM_DELIMITER_TOKEN: keyString = string.Empty; valueObject = null; break; case DICTIONARY_END_TOKEN: keyString = string.Empty; valueObject = null; complete = true; break; case DICTIONARY_ASSIGN_TOKEN: valueObject = ParseValue(); dictionary.Add(keyString, valueObject); break; default: StepBackward(); keyString = ParseValue() as string; break; } } return(dictionary); }
public PBXBuildPhase(string guid, PBXDictionary dictionary) : base(guid, dictionary) { // Debug.Log( "constructor " + GetType().Name ); }
public PBXObject() { _data = new PBXDictionary(); _data[ISA_KEY] = this.GetType().Name; _guid = GenerateGuid(); }
public PBXProject(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
public PBXContainerItemProxy(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
public PBXReferenceProxy(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
public PBXNativeTarget(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
public XCBuildConfiguration(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }
public bool SetWeakLink(bool weak = false) { PBXDictionary settings = null; PBXList attributes = null; if (!_data.ContainsKey(SETTINGS_KEY)) { if (weak) { attributes = new PBXList(); attributes.Add(WEAK_VALUE); settings = new PBXDictionary(); settings.Add(ATTRIBUTES_KEY, attributes); _data[SETTINGS_KEY] = settings; } return(true); } settings = _data[SETTINGS_KEY] as PBXDictionary; if (!settings.ContainsKey(ATTRIBUTES_KEY)) { if (weak) { attributes = new PBXList(); attributes.Add(WEAK_VALUE); settings.Add(ATTRIBUTES_KEY, attributes); return(true); } else { return(false); } } else { attributes = settings[ATTRIBUTES_KEY] as PBXList; } if (weak) { attributes.Add(WEAK_VALUE); } else { attributes.Remove(WEAK_VALUE); } settings.Add(ATTRIBUTES_KEY, attributes); this.Add(SETTINGS_KEY, settings); return(true); }
public bool AddCompilerFlag(string flag) { if (!_data.ContainsKey(SETTINGS_KEY)) { _data[SETTINGS_KEY] = new PBXDictionary(); } if (!((PBXDictionary)_data[SETTINGS_KEY]).ContainsKey(COMPILER_FLAGS_KEY)) { ((PBXDictionary)_data[SETTINGS_KEY]).Add(COMPILER_FLAGS_KEY, flag); return(true); } string[] flags = ((string)((PBXDictionary)_data[SETTINGS_KEY])[COMPILER_FLAGS_KEY]).Split(' '); foreach (string item in flags) { if (item.CompareTo(flag) == 0) { return(false); } } ((PBXDictionary)_data[SETTINGS_KEY])[COMPILER_FLAGS_KEY] = (string.Join(" ", flags) + " " + flag); return(true); // def add_compiler_flag(self, flag): // k_settings = 'settings' // k_attributes = 'COMPILER_FLAGS' // // if not self.has_key(k_settings): // self[k_settings] = PBXDict() // // if not self[k_settings].has_key(k_attributes): // self[k_settings][k_attributes] = flag // return True // // flags = self[k_settings][k_attributes].split(' ') // // if flag in flags: // return False // // flags.append(flag) // // self[k_settings][k_attributes] = ' '.join(flags) }
// XCBuildConfigurationList buildConfigurations; // bool defaultConfigurationIsVisible = false; // string defaultConfigurationName; public XCConfigurationList(string guid, PBXDictionary dictionary) : base(guid, dictionary) { }