2017-02-13 131 views
1

我将尝试创建一个图表,演示基于源代码管理中的url的api依赖关系。为此,我使用powershell克隆github中的所有repo,然后遍历Web Config和Appsettings文件中具有相关信息的文件。通过这样做,我觉得对我来说,最好的办法是让回购的名字:如何使用列表使用powershell绘制图表

Write-Host "Repo: "$repo.name 

然后我遍历Web配置的获取列表。

$WebReleaseConfig = "Web.Release.config" 

foreach($repo in $repos) { 
    $repo 
    $name = $repo.Name 
    $path = C:\Users\cd\ApiDependencies\$name 

    if(Test-Path -Path C:\Users\cd\ApiDependencies) { 
     $config = Get-ChildItem -Path $WebReleaseConfig -Recurse 
     [xml]$xml = Get-Content $config 

     $xmlList = @() 
     $xmlList = $xmlList + 
        ($xml.SelectNodes('//add').Value -like '*.co.uk*') + 
        ($xml.SelectNodes('//add').Value -like '*.com/*') 

     Write-Host "The List contains" 
     $xmlList  
    } 
} 

该列表将包含类似这样的信息:

http://applications.c 
http://auth.c 
https://clearscore.c.co.uk/ 

我的问题是,这份名单将会覆盖作为有多个项目,我需要从这些信息创建一个图无论如何,所以我认为最好是创建一个图表,将回购名称中的箭头绘制到列表中的每个项目。然后这会更新每个添加回购的图表,一些回购也会有箭头到达他们自己列表中的相同项目。我已经尝试过Mermaid文档,所以使用Javascript,但是这并不是一个好的方法来做到这一点,因为我覆盖数据,它似乎更习惯于硬编码数据。我怎样才能正确地做到这一点?

输出会是什么样子:

a --> 1 
a --> 2 
a --> 3 
b --> 2 
b --> 4 
c --> 1 

回答

0

我不明白你期待什么样的输出。但是你要作为最终输出什么,我想你需要输出类似

projectA-->projectB 
projectA-->projectJ 
projectB-->projectD 
.... 

我的建议是使用ImageMagic的显示工具。你可以看到这是如何在一个班轮使用:

lsmod | awk 'BEGIN{print "digraph{"}{split($4, a, ","); for (i in a) print $1, "->", a[i]}END{print "}"}'|display 

是的,这是UNIX shell脚本,但这个想法是写类似:

digraph{ 
    node1 -> node2 
    node1 -> node3 
    node2 -> node6 
} 

然后让显示器做休息的工作

+0

它会像'a - > 1,a - > 2,a - > 3,b - > 2,b - > 4,c - > 1等。 –