forked from webmd-health-services/Carbon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Update-SilkConfig.ps1
69 lines (56 loc) · 2.54 KB
/
Update-SilkConfig.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<#
.SYNOPSIS
Updates the navigation settings for the Carbon website.
.DESCRIPTION
Updates the silk settings for the Carbon websites so that the commands are organized by topics instead of grouped together alphabetically.
.EXAMPLE
Update-SilkConfig
Demonstrates how to use the script.
#>
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[CmdletBinding()]
param(
)
$silkJsonPath = Join-Path -Path $PSScriptRoot -ChildPath 'silk.json' -Resolve
$silkJson = Get-Content -Path $silkJsonPath -Raw | ConvertFrom-Json
if( -not (Get-Member -InputObject $silkJson -Name 'Navigation') )
{
Add-Member -InputObject $silkJson -MemberType NoteProperty -Name 'Navigation' -Value @{ }
}
$silkJson.Navigation = [ordered]@{ }
$moduleRoot = Join-Path -Path $PSScriptRoot -ChildPath 'Carbon'
$categories = Get-ChildItem -Path $moduleRoot -Directory -Exclude 'bin' |
Sort-Object -Property 'BaseName'
$dirNameTitleNameMap = @{
'ActiveDirectory' = 'Active Directory';
'DotNet' = '.NET';
'FileSystem' = 'File System';
'HostsFile' = 'Hosts File';
'InternetExplorer' = 'Internet Explorer';
'PerformanceCounters' = 'Performance Counters';
'UsersAndGroups' = 'Users and Groups';
'WindowsFeatures' = 'Windows Features';
}
foreach( $category in $categories )
{
$categoryName = $category.Name
if( $dirNameTitleNameMap.ContainsKey($categoryName) )
{
$categoryName = $dirNameTitleNameMap.$categoryName
}
[object[]]$categoryTopics = Get-ChildItem -Path $category.FullName -Filter '*.ps1' |
Sort-Object -Property BaseName |
Select-Object -ExpandProperty BaseName
$silkJson.Navigation.$categoryName = $categoryTopics
}
$silkJson | ConvertTo-Json | Set-Content -Path $silkJsonPath