private static int CompareBuildDefs(BuildDef x, BuildDef y) { if (x == null) { if (y == null) { return(0); } else { return(-1); } } else { if (y == null) { return(1); } else { return((x.path + @"\" + x.name).ToLowerInvariant().CompareTo((y.path + @"\" + y.name).ToLowerInvariant())); } } }
public BuildDef LoadBuild(string directory) { var buildDef = BuildDef.LoadBuildDef(directory); if (buildDef != null) { updateFrame = true; buildDefs.Add(buildDef); } return(buildDef); }
public static BuildDef LoadBuildDef(string directory) { var fullFileName = directory + Path.DirectorySeparatorChar + "build.xml"; if (File.Exists(fullFileName)) { var buildDef = new BuildDef(); buildDef.InitWatcher(directory); if (LoadBuildDef(buildDef, directory) != null) { // Begin watching. buildDef.watcher.EnableRaisingEvents = true; return(buildDef); } } return(null); }
public static async Task PopulateBuildDefinitionList(string project = "SDK_v4") { // Documentation: https://docs.microsoft.com/en-us/rest/api/azure/devops/build/definitions/list?view=azure-devops-rest-5.0 try { //string restUrl = String.Format("https://{0}/{1}/{2}/_apis/build/definitions?api-version=5.0", buildDomain, organization, project); string restUrl = String.Format("https://{0}/{1}/{2}/_apis/build/definitions?includeAllProperties=true&api-version=5.0", buildDomain, organization, project); using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add( new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String( System.Text.ASCIIEncoding.ASCII.GetBytes( string.Format("{0}:{1}", "", personalAccessToken)))); using (HttpResponseMessage response = await client.GetAsync(restUrl)) { response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject json = JObject.Parse(responseBody); //Object json = JsonParser.Deserialize(responseBody); foreach (JObject o in json.Last.First) { BuildDef bd = new BuildDef(); bd.id = int.Parse(o["id"].ToString()); bd.name = o["name"].ToString(); bd.path = o["path"].ToString(); definitionList.Add(bd); } } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } definitionList.Sort(CompareBuildDefs); }
public static BuildDef LoadBuildDef(BuildDef buildDef, string directory) { var fullFileName = directory + Path.DirectorySeparatorChar + "build.xml"; if (File.Exists(fullFileName)) { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; XmlReader reader = XmlReader.Create(fullFileName, settings); XmlDocument build = new XmlDocument(); build.Load(reader); foreach (XmlNode symbolXml in build.DocumentElement.ChildNodes) { var symbolObj = new Symbol(); symbolObj.name = symbolXml.Attributes.GetNamedItem("name").InnerText; symbolObj.frames = new Symbol.Frame[symbolXml.ChildNodes.Count]; buildDef.symbols[symbolObj.name.ToLower()] = symbolObj; int i = 0; foreach (XmlNode frame in symbolXml.ChildNodes) { var frameObj = new Symbol.Frame(); try { frameObj.framenum = int.Parse(frame.Attributes.GetNamedItem("framenum").InnerText); frameObj.duration = int.Parse(frame.Attributes.GetNamedItem("duration").InnerText); frameObj.w = int.Parse(frame.Attributes.GetNamedItem("w").InnerText); frameObj.h = int.Parse(frame.Attributes.GetNamedItem("h").InnerText); frameObj.x = float.Parse(frame.Attributes.GetNamedItem("x").InnerText, CultureInfo.InvariantCulture); frameObj.y = float.Parse(frame.Attributes.GetNamedItem("y").InnerText, CultureInfo.InvariantCulture); frameObj.image = frame.Attributes.GetNamedItem("image").InnerText; symbolObj.frames[i] = frameObj; try { if (!buildDef.sprites.ContainsKey(frameObj.image)) { byte[] pngBytes = File.ReadAllBytes(directory + "/" + frameObj.image + ".png"); Texture2D tex = new Texture2D(2, 2); tex.LoadImage(pngBytes); buildDef.textures.Add(frameObj.image, tex); var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0, 1), 1, 0, SpriteMeshType.FullRect); sprite.name = frameObj.image; buildDef.sprites.Add(frameObj.image, sprite); } frameObj.sprite = buildDef.sprites[frameObj.image]; } catch (System.Exception ex) { Debug.Log("Failed to load file " + frameObj.image + " : " + ex); } } catch (System.Exception ex) { Debug.Log("Failed to parse frame " + i + " of symbol " + symbolObj.name + " : " + ex); } i++; } } return(buildDef); } return(null); }
public static async Task WriteDefinitionToFile(string project, string definitionType, BuildDef buildDef) { // Documentation: https://docs.microsoft.com/en-us/rest/api/azure/devops/build/definitions/get?view=azure-devops-rest-5.0 try { string restUrl = String.Format("https://{0}/{1}/{2}/_apis/{3}/definitions/{4}?api-version=5.0", domain, organization, project, definitionType, buildDef.id); using (HttpClient client = new HttpClient()) { string definitionName = (buildDef.path + "\\" + buildDef.name).Replace("\\\\", "\\").TrimStart('\\'); Console.WriteLine(" * " + definitionName); BuildCsvString(3, definitionName); client.DefaultRequestHeaders.Accept.Add( new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String( System.Text.ASCIIEncoding.ASCII.GetBytes( string.Format("{0}:{1}", "", personalAccessToken)))); using (HttpResponseMessage response = await client.GetAsync(restUrl)) { response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject json = JObject.Parse(responseBody); isYamlPipeline = CheckForYamlPipeline(json); // Write json to a file string fileContent = json.ToString(); string directory = outputPath + project + "\\" + definitionType + "s\\" + buildDef.path; System.IO.Directory.CreateDirectory(directory); string buildName = buildDef.name.Replace("?", "").Replace(":", ""); if (isYamlPipeline) { directory += "\\" + buildName; System.IO.Directory.CreateDirectory(directory); } directory = directory.Replace("\\\\", "\\").Replace("\\\\", "\\"); string fullFilePath = directory + "\\" + buildDef.name.Replace("?", "").Replace(":", "") + ".json"; System.IO.File.WriteAllText(fullFilePath, fileContent); if (isYamlPipeline) { string saveDirectory = Directory.GetCurrentDirectory(); //Directory.SetCurrentDirectory(directory); DownloadYamlFilesToDirectory(json, directory); //Directory.SetCurrentDirectory(saveDirectory); } } } } catch (Exception ex) { Console.WriteLine("Write to file: " + ex.GetType()); //throw; } }
public void RemoveBuildDef(BuildDef build) { updateFrame = true; buildDefs.Remove(build); build.Dispose(); }