< Summary

Class:DocFxForUnity
Assembly:Unity.Rider.Editor
File(s):./Packages/src/DocFxForUnity.cs
Covered lines:34
Uncovered lines:0
Coverable lines:34
Total lines:77
Line coverage:100% (34 of 34)
Covered branches:0
Total branches:0
Covered methods:3
Total methods:3
Method coverage:100% (3 of 3)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetupCsProj()0%000100%
CopyDllsForCsProj(...)0%000100%
CopyFile(...)0%000100%

File(s)

./Packages/src/DocFxForUnity.cs

#LineLine coverage
 1using System;
 2using System.IO;
 3using System.Xml.Linq;
 4using Packages.Rider.Editor;
 5using UnityEditor;
 6
 7/// <summary>
 8/// Setup csproj files for DocFx on CI environment (docker).
 9/// <para />
 10/// Run on cli: `-executeMethod DocFxForUnity.SetupCsProj`
 11/// </summary>
 12public static class DocFxForUnity
 13{
 14    private const string k_DstDir = "Library/DocFxAssemblies";
 15
 16    /// <summary>
 17    /// Setup csproj files for DocFx on CI environment (docker).
 18    /// Generate csproj files and copy dlls to 'Library/DocFxAssemblies' in project.
 19    /// </summary>
 20    public static void SetupCsProj()
 121    {
 122        Console.WriteLine($"[Coffee.DocFxForUnity.SetupCsProj]");
 23
 24        // Generate solution and project file.
 125        Console.WriteLine($"  -> Generate solution and project files (RiderScriptEditor)");
 126        RiderScriptEditor.SyncSolution();
 27
 28        // Delete local old dlls.
 129        Console.WriteLine($"  -> Delete local old dlls");
 130        if (Directory.Exists(k_DstDir))
 131        {
 132            Directory.Delete(k_DstDir, true);
 133        }
 34
 135        Directory.CreateDirectory(k_DstDir);
 36
 37        // Copy dlls to local.
 938        foreach (var csprojPath in Directory.GetFiles(".", "*.csproj"))
 339        {
 340            CopyDllsForCsProj(csprojPath);
 341        }
 142    }
 43
 44    private static void CopyDllsForCsProj(string csprojPath)
 345    {
 346        Console.WriteLine($"  -> Copy dlls for: {csprojPath}");
 347        var xml = XDocument.Load(csprojPath);
 287748        foreach (var e in xml.Descendants())
 143449        {
 50            // Already copied -> skip.
 224351            if (e.Name.LocalName != "HintPath" || e.Value.StartsWith(k_DstDir)) continue;
 52
 53            // Copy dlls.
 62554            var src = e.Value;
 62555            var dst = $"{k_DstDir}/{Path.GetFileName(src)}";
 56
 57            // Copy dll files.
 62558            CopyFile(src, dst);
 59
 60            // Copy xml files.
 62561            CopyFile(Path.ChangeExtension(src, ".xml"), Path.ChangeExtension(dst, ".xml"));
 62
 63            // Change HintPath value.
 62564            e.Value = dst;
 62565        }
 66
 367        xml.Save(csprojPath);
 368    }
 69
 70    private static void CopyFile(string src, string dst)
 125071    {
 218172        if (!File.Exists(src) || File.Exists(dst)) return;
 73
 31974        Console.WriteLine($"    - {Path.GetFileName(dst)}");
 31975        File.Copy(src, dst);
 125076    }
 77}