예제 #1
0
        private MLibrary createMLibrary(string?name, string?nativeId, bool require, JObject job)
        {
            string?path = job["path"]?.ToString();

            if (string.IsNullOrEmpty(path) && !string.IsNullOrEmpty(name))
            {
                path = PackageName.Parse(name).GetPath(nativeId);
            }

            var hash = job["sha1"] ?? job["checksums"]?[0];

            long   size    = 0;
            string?sizeStr = job["size"]?.ToString();

            if (!string.IsNullOrEmpty(sizeStr))
            {
                long.TryParse(sizeStr, out size);
            }

            return(new MLibrary
            {
                Hash = hash?.ToString(),
                IsNative = !string.IsNullOrEmpty(nativeId),
                Name = name,
                Path = path,
                Size = size,
                Url = job["url"]?.ToString(),
                IsRequire = require
            });
        }
        public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config)
        {
            var credentialName = config["CredentialName"];
            var feedName       = config["FeedName"];
            var packageName    = config["PackageName"];

            if (string.IsNullOrEmpty(credentialName) || string.IsNullOrEmpty(feedName) || string.IsNullOrEmpty(packageName))
            {
                return(Enumerable.Empty <string>());
            }

            ProGetClient client = null;

            var productCredentials = ResourceCredentials.TryCreate <InedoProductCredentials>(credentialName);

            if (productCredentials != null)
            {
                client = new ProGetClient(productCredentials.Host, feedName, "api", AH.Unprotect(productCredentials.ApiKey));
            }


#pragma warning disable CS0618 // Type or member is obsolete
            var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName);
#pragma warning restore CS0618 // Type or member is obsolete
            if (client == null)
            {
                client = new ProGetClient(credentials.Url, feedName, credentials.UserName, AH.Unprotect(credentials.Password));
            }

            var package = await client.GetPackageInfoAsync(PackageName.Parse(packageName));

            return(new[] { "latest", "latest-stable" }.Concat(package.versions));
        }
예제 #3
0
파일: MForge.cs 프로젝트: TURX/CmlLib.Core
        private void startProcessor(JToken processor, Dictionary <string, string> mapData)
        {
            var name = processor["jar"]?.ToString();

            if (name == null)
            {
                return;
            }

            // jar
            var jar     = PackageName.Parse(name);
            var jarpath = Path.Combine(Minecraft.Library, jar.GetPath());

            var jarfile     = new JarFile(jarpath);
            var jarManifest = jarfile.GetManifest();

            // mainclass
            string mainclass    = null;
            var    hasMainclass = jarManifest?.TryGetValue("Main-Class", out mainclass) ?? false;

            if (!hasMainclass || string.IsNullOrEmpty(mainclass))
            {
                return;
            }

            // classpath
            var classpathObj = processor["classpath"];
            var classpath    = new List <string>();

            if (classpathObj != null)
            {
                foreach (var libname in classpathObj)
                {
                    var lib = Path.Combine(Minecraft.Library,
                                           PackageName.Parse(libname?.ToString()).GetPath());
                    classpath.Add(lib);
                }
            }
            classpath.Add(jarpath);

            // arg
            var argsArr = processor["args"] as JArray;

            string[] args = null;
            if (argsArr != null)
            {
                var arrStrs = argsArr.Select(x => x.ToString()).ToArray();
                args = Mapper.Map(arrStrs, mapData, Minecraft.Library);
            }

            startJava(classpath.ToArray(), mainclass, args);
        }
예제 #4
0
        public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config)
        {
            var credentialName = config["CredentialName"];
            var feedName       = config["FeedName"];
            var packageName    = config["PackageName"];

            if (string.IsNullOrEmpty(credentialName) || string.IsNullOrEmpty(feedName) || string.IsNullOrEmpty(packageName))
            {
                return(Enumerable.Empty <string>());
            }

            var credentials = ResourceCredentials.Create <ProGetCredentials>(credentialName);
            var client      = new ProGetClient(credentials.Url, feedName, credentials.UserName, ConvertValue(credentials.Password));

            var package = await client.GetPackageInfoAsync(PackageName.Parse(packageName));

            return(new[] { "latest" }.Concat(package.versions));
        }
예제 #5
0
파일: MForge.cs 프로젝트: TURX/CmlLib.Core
        // for old installer
        private void extractUniversal(string installerPath, string universalPath, string destinyName)
        {
            fireEvent(MFile.Library, "universal", 1, 0);

            if (string.IsNullOrEmpty(universalPath) || string.IsNullOrEmpty(destinyName))
            {
                return;
            }

            // copy universal library to minecraft
            var universal = Path.Combine(installerPath, universalPath);
            var desPath   = PackageName.Parse(destinyName).GetPath();
            var des       = Path.Combine(Minecraft.Library, desPath);

            if (File.Exists(universal))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(des));
                File.Copy(universal, des, true);
            }
        }
예제 #6
0
        private static MLibrary createMLibrary(string name, string nativeId, bool require, JObject job)
        {
            var path = job["path"]?.ToString();

            if (string.IsNullOrEmpty(path))
            {
                path = PackageName.Parse(name).GetPath(nativeId);
            }

            var url = job["url"]?.ToString();

            if (url == null)
            {
                url = MojangServer.Library + path;
            }
            else if (url == "")
            {
                url = null;
            }
            else if (url.Split('/').Last() == "")
            {
                url += path;
            }

            var hash = job["sha1"] ?? job["checksums"]?[0];

            var library = new MLibrary();

            library.Hash      = hash?.ToString() ?? "";
            library.IsNative  = !string.IsNullOrEmpty(nativeId);
            library.Name      = name;
            library.Path      = path;
            library.Url       = url;
            library.IsRequire = require;

            return(library);
        }
        private void process(JArray processors, Dictionary <string, string> mapData)
        {
            if (processors == null || processors.Count == 0)
            {
                return;
            }

            fireEvent(MFile.Library, "processors", processors.Count, 0);

            for (int i = 0; i < processors.Count; i++)
            {
                var item = processors[i];

                var name = item["jar"]?.ToString();
                if (name == null)
                {
                    continue;
                }

                var outputs = item["outputs"] as JObject;
                if (outputs != null)
                {
                    var valid = true;
                    foreach (var outitem in outputs)
                    {
                        var key   = Mapper.Interpolation(outitem.Key, mapData);
                        var value = Mapper.Interpolation(outitem.Value.ToString(), mapData);

                        if (!File.Exists(key) || !IOUtil.CheckSHA1(key, value))
                        {
                            valid = false;
                            break;
                        }
                    }

                    if (valid) // skip processing if already done
                    {
                        fireEvent(MFile.Library, "processors", processors.Count, i + 1);
                        continue;
                    }
                }

                // jar
                var jar     = PackageName.Parse(name);
                var jarpath = Path.Combine(Minecraft.Library, jar.GetPath());

                var jarfile     = new JarFile(jarpath);
                var jarManifest = jarfile.GetManifest();

                // mainclass
                string mainclass    = null;
                var    hasMainclass = jarManifest?.TryGetValue("Main-Class", out mainclass) ?? false;
                if (!hasMainclass || string.IsNullOrEmpty(mainclass))
                {
                    continue;
                }

                // classpath
                var classpathObj = item["classpath"];
                var classpath    = new List <string>();
                if (classpathObj != null)
                {
                    foreach (var libname in classpathObj)
                    {
                        var lib = Path.Combine(Minecraft.Library,
                                               PackageName.Parse(libname?.ToString()).GetPath());
                        classpath.Add(lib);
                    }
                }
                classpath.Add(jarpath);

                // arg
                var      argsArr = item["args"] as JArray;
                string[] args    = null;
                if (argsArr != null)
                {
                    var arrStrs = argsArr.Select(x => x.ToString()).ToArray();
                    args = Mapper.Map(arrStrs, mapData, Minecraft.Library);
                }

                startJava(classpath.ToArray(), mainclass, args);
                fireEvent(MFile.Library, "processors", processors.Count, i + 1);
            }
        }