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()));
         }
     }
 }
Ejemplo n.º 2
0
    public BuildDef LoadBuild(string directory)
    {
        var buildDef = BuildDef.LoadBuildDef(directory);

        if (buildDef != null)
        {
            updateFrame = true;
            buildDefs.Add(buildDef);
        }
        return(buildDef);
    }
Ejemplo n.º 3
0
    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);
        }
Ejemplo n.º 5
0
    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;
            }
        }
Ejemplo n.º 7
0
 public void RemoveBuildDef(BuildDef build)
 {
     updateFrame = true;
     buildDefs.Remove(build);
     build.Dispose();
 }