示例#1
0
    protected static PackageMeta?ParsePackageMeta(TomlTable tomlData)
    {
        if (!tomlData.HasKey("package"))
        {
            return(null);
        }

        var packageMeta = tomlData["package"];

        // TODO: Add warnings on missing values
        var result = new PackageMeta()
        {
            Namespace           = TomlUtils.SafegetString(packageMeta, "namespace"),
            Name                = TomlUtils.SafegetString(packageMeta, "name"),
            VersionNumber       = TomlUtils.SafegetString(packageMeta, "versionNumber"),
            Description         = TomlUtils.SafegetString(packageMeta, "description"),
            WebsiteUrl          = TomlUtils.SafegetString(packageMeta, "websiteUrl"),
            ContainsNsfwContent = TomlUtils.SafegetBool(packageMeta, "containsNsfwContent"),
            Dependencies        = new()
        };

        if (packageMeta.HasKey("dependencies"))
        {
            var packageDependencies = packageMeta["dependencies"];
            foreach (var packageName in packageDependencies.Keys)
            {
                // TODO: Validate both are strings if needed?
                result.Dependencies[packageName] = packageDependencies[packageName];
            }
        }

        return(result);
    }
示例#2
0
    public void SafegetString_WhenValueIsNotString_ReturnsNull(string input)
    {
        var table = CreateTomlTable(input);

        var actual = TomlUtils.SafegetString(table, _key);

        Assert.Null(actual);
    }
示例#3
0
    public void SafegetString_WhenValueIsString_ReturnsValue(string input, string expected)
    {
        var table = CreateTomlTable(input);

        var actual = TomlUtils.SafegetString(table, _key);

        Assert.Equal(expected, actual);
    }
示例#4
0
    public void SafegetString_WhenKeyIsNotFound_ReturnsNull()
    {
        var table = CreateTomlTable("");

        var actual = TomlUtils.SafegetString(table, _key);

        Assert.Null(actual);
    }
示例#5
0
    protected static PublishConfig?ParsePublishConfig(TomlTable tomlData)
    {
        if (!tomlData.HasKey("publish"))
        {
            return(null);
        }

        var publishConfig = tomlData["publish"];

        return(new PublishConfig
        {
            Repository = TomlUtils.SafegetString(publishConfig, "repository"),
            Communities = TomlUtils.SafegetStringArray(publishConfig, "communities", Array.Empty <string>()),
            Categories = TomlUtils.SafegetStringArray(publishConfig, "categories", Array.Empty <string>())
        });
    }
示例#6
0
    protected static BuildConfig?ParseBuildConfig(TomlTable tomlData)
    {
        if (!tomlData.HasKey("build"))
        {
            return(null);
        }

        var buildConfig = tomlData["build"];

        var result = new BuildConfig
        {
            IconPath   = TomlUtils.SafegetString(buildConfig, "icon"),
            ReadmePath = TomlUtils.SafegetString(buildConfig, "readme"),
            OutDir     = TomlUtils.SafegetString(buildConfig, "outdir"),
            CopyPaths  = new()
        };

        if (buildConfig.HasKey("copy"))
        {
            var pathSets = buildConfig["copy"];
            foreach (var entry in pathSets)
            {
                if (!(entry is TomlNode))
                {
                    ThunderstoreCLI.Write.Warn($"Unable to properly parse build config: {entry}", "Skipping entry");
                    continue;
                }

                var node = (TomlNode)entry;
                if (!node.HasKey("source") || !node.HasKey("target"))
                {
                    ThunderstoreCLI.Write.Warn(
                        $"Build config instruction is missing parameters: {node}",
                        "Make sure both 'source' and 'target' are defined",
                        "Skipping entry"
                        );
                    continue;
                }

                result.CopyPaths.Add(new CopyPathMap(node["source"], node["target"]));
            }
        }
        return(result);
    }