|
1 | | -environment: |
2 | | - github_access_token: |
3 | | - secure: XgRTP/48Tcb8jdBahG9aZEhKeu2qBc5gCugjShWkT+zNqcQihEtKIIonzPaGcUV+ |
4 | | - |
5 | | -build_script: |
6 | | - - ps: | |
7 | | - Write-Host "Begin processing files" |
8 | | -
|
9 | | - $docPath = Join-Path (Get-Item -Path ".\" -Verbose).FullName $env:DocFolder |
10 | | - $files = Get-ChildItem -Path $docPath -Recurse | where {$_.extension -eq $env:Extension} | % { $_.FullName } |
11 | | - $pattern = '^(?s)\s*[-]{3}(.*?)[-]{3}\r?\n' |
12 | | -
|
13 | | - Write-Host "Found " $files.count "Files" |
14 | | -
|
15 | | - foreach($file in $files) |
16 | | - { |
17 | | - if(!((Get-Content $file | Out-String) -match $pattern)) |
18 | | - { |
19 | | - continue |
20 | | - } |
21 | | -
|
22 | | - $header = $matches[1] |
23 | | - $new_header = $matches[1] |
24 | | -
|
25 | | - #metadata: updated_at |
26 | | - $date = [datetime](Get-ItemProperty -Path $file -Name LastWriteTime).lastwritetime |
27 | | -
|
28 | | - if($header -match 'updated_at[\s\S].*') |
29 | | - { |
30 | | - $new_header = $new_header.replace($matches[0], 'updated_at: ' + (Get-Date $date -format g)) |
31 | | - } |
32 | | - else |
33 | | - { |
34 | | - $new_header = $new_header + 'updated_at: ' + (Get-Date $date -format g) + "`r`n" |
35 | | - } |
36 | | - #metadata: ms.date |
37 | | - if($header -match 'ms.date[\s\S].*') |
38 | | - { |
39 | | - $new_header = $new_header.replace($matches[0], 'ms.date: ' + (Get-Date $date -format d)) |
40 | | - } |
41 | | - else |
42 | | - { |
43 | | - $new_header = $new_header + 'ms.date: ' + (Get-Date $date -format d) + "`r`n" |
44 | | - } |
45 | | - Set-Content $file (Get-Content $file | Out-String).replace($header, $new_header) -NoNewline |
46 | | - |
47 | | - (Get-Content $file | Out-String) -match $pattern | out-null |
48 | | - $header = $matches[1] |
49 | | - $new_header = $matches[1] |
50 | | -
|
51 | | - #metadata: ms.topic |
52 | | - $topicType = 'reference' |
53 | | - if($header -match 'Module Name') |
54 | | - { |
55 | | - $topicType = 'conceptual' |
56 | | - } |
57 | | - |
58 | | - if($header -match 'ms.topic[\s\S].*') |
59 | | - { |
60 | | - $new_header = $new_header.replace($matches[0], 'ms.topic: ' + $topicType) |
61 | | - } |
62 | | - else |
63 | | - { |
64 | | - $new_header = $new_header + 'ms.topic: ' + $topicType + "`r`n" |
65 | | - } |
66 | | -
|
67 | | - #metadata: content_git_url and original_content_git_url |
68 | | - $rel_path = Get-Item $file | Resolve-Path -Relative |
69 | | - $git_url_path = $env:source_repo + '/blob/' + $env:source_branch +'/' + $rel_path |
70 | | - $git_url = (New-object System.Uri $git_url_path).AbsoluteUri |
71 | | -
|
72 | | - if($header -match 'content_git_url[\s\S].*') |
73 | | - { |
74 | | - $new_header = $new_header.replace($matches[0], 'content_git_url: ' + $git_url) |
75 | | - } |
76 | | - else |
77 | | - { |
78 | | - $new_header = $new_header + 'content_git_url: ' + $git_url + "`r`n" |
79 | | - } |
80 | | - |
81 | | - if($header -match 'original_content_git_url[\s\S].*') |
82 | | - { |
83 | | - $new_header = $new_header.replace($matches[0], 'original_content_git_url: ' + $git_url) |
84 | | - } |
85 | | - else |
86 | | - { |
87 | | - $new_header = $new_header + 'original_content_git_url: ' + $git_url + "`r`n" |
88 | | - } |
89 | | -
|
90 | | - #metadata: gitcommit |
91 | | - $commitId = (git rev-list -1 HEAD $file) |
92 | | - $git_commit_path = $env:source_repo + '/blob/' + $commitId + '/' + $rel_path |
93 | | - $git_commit_url = (New-object System.Uri $git_commit_path).AbsoluteUri |
94 | | - |
95 | | - if($header -match 'gitcommit[\s\S].*') |
96 | | - { |
97 | | - |
98 | | - $new_header = $new_header.replace($matches[0], 'gitcommit: ' + $git_commit_url) |
99 | | - } |
100 | | - else |
101 | | - { |
102 | | - $new_header = $new_header + 'gitcommit: ' + $git_commit_url + "`r`n" |
103 | | - } |
104 | | -
|
105 | | - #filter invalid characters |
106 | | - if($header -match '{{' -or $header -match '}}') |
107 | | - { |
108 | | - $new_header = $new_header.replace('{{', '').replace('}}', '') |
109 | | - } |
110 | | - |
111 | | - #update file |
112 | | - Set-Content $file (Get-Content $file | Out-String).replace($header, $new_header) -NoNewline |
113 | | - } |
114 | | - Write-Host 'Finish processing files.' |
115 | | - - ps: | |
116 | | - function GetToc |
117 | | - { |
118 | | - $docPath = Join-Path (Get-Item -Path ".\" -Verbose).FullName $env:DocFolder |
119 | | - $tocPath = Join-Path $docPath "toc.yml" |
120 | | -
|
121 | | - if(Test-Path $tocPath) |
122 | | - { |
123 | | - Remove-Item $tocPath |
124 | | - } |
125 | | - New-Item $tocPath |
126 | | - DoGetToc $docPath $tocPath $env:Extension 0 |
127 | | - } |
128 | | -
|
129 | | - function global:DoGetToc($folderPath, $tocPath, $extension, $level) |
130 | | - { |
131 | | - Write-Host "constructing toc in $folderPath" |
132 | | - $pre = "" |
133 | | -
|
134 | | - for($i=0;$i -lt $level;$i++) |
135 | | - { |
136 | | - $pre = $pre + " " |
137 | | - } |
138 | | -
|
139 | | - Add-Content -Path $tocPath -Value ($pre + "- name: " + (Split-Path -Path $folderPath -Leaf)) |
140 | | - $subFolders = Get-ChildItem $folderPath -Directory | Select-Object FullName |
141 | | -
|
142 | | - if($subFolders -eq $null) |
143 | | - { |
144 | | - $files = (Get-ChildItem $folderPath) | Where-Object { $_.Extension -eq $Extension } | select -ExpandProperty FullName |
145 | | - $landingPage = "" |
146 | | -
|
147 | | - foreach($file in $files) |
148 | | - { |
149 | | - $found = (Get-Content $file | Out-String) -match '^(?s)\s*[-]{3}(.*?)[-]{3}\r?\n' |
150 | | - if($found -and $matches[1] -match 'Module Name') |
151 | | - { |
152 | | - Add-Content -Path $tocPath -Value ($pre + " href: " + (Get-Item $file | Resolve-Path -Relative).replace($env:DocFolder + '\', '')) |
153 | | - $landingPage = $file |
154 | | - break |
155 | | - } |
156 | | - } |
157 | | - Add-Content -Path $tocPath -Value ($pre + " items:") |
158 | | - $pre = $pre + " " |
159 | | - foreach($file in $files) |
160 | | - { |
161 | | - if($file -ne $landingPage) |
162 | | - { |
163 | | - Add-Content -Path $tocPath -Value ($pre + "- name: " + (Split-Path -Path $file -Leaf -Resolve).split('\.')[-2]) |
164 | | - Add-Content -Path $tocPath -Value ($pre + " href: " + (Get-Item $file | Resolve-Path -Relative).replace($env:DocFolder + '\', '')) |
165 | | - } |
166 | | - } |
167 | | - } |
168 | | - else |
169 | | - { |
170 | | - Add-Content -Path $tocPath -Value ($pre + " items:") |
171 | | - foreach($subFolder in $subFolders) |
172 | | - { |
173 | | - DoGetToc $subFolder.FullName $tocPath $extension ($level+1) |
174 | | - } |
175 | | - } |
176 | | - } |
177 | | - GetToc |
178 | | -on_success: |
179 | | - - git clone -q --branch=%TargetBranch% %ContentRepo% %TEMP%\AzurePowerShell |
180 | | - - ps: Get-ChildItem $env:TEMP\AzurePowerShell\$env:DocFolder -dir | Remove-Item -Recurse -Force |
181 | | - - robocopy %APPVEYOR_BUILD_FOLDER%\%DocFolder% %TEMP%\AzurePowerShell\%DocFolder% /e & IF %ERRORLEVEL% LEQ 1 exit 0 |
182 | | - - copy %APPVEYOR_BUILD_FOLDER%\%DocFolder%\toc.yml %TEMP%\AzurePowerShell\%DocFolder% |
183 | | - - cd %TEMP%\AzurePowerShell |
184 | | - - git config --global credential.helper store |
185 | | - - ps: Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:github_access_token):[email protected]`n" |
186 | | - - git config --global user.email %Email% |
187 | | - - git config --global user.name %Name% |
188 | | - - git add -A |
189 | | - - git commit -m "commit from appveyor" |
190 | | - - git push origin %TargetBranch% |
| 1 | +environment: |
| 2 | + github_access_token: |
| 3 | + secure: XgRTP/48Tcb8jdBahG9aZEhKeu2qBc5gCugjShWkT+zNqcQihEtKIIonzPaGcUV+ |
| 4 | + |
| 5 | +build_script: |
| 6 | + - ps: | |
| 7 | + Write-Host "Begin download artifacts" |
| 8 | +
|
| 9 | + $file_name = $env:APPVEYOR_REPO_TAG_NAME + ".zip" |
| 10 | + $source = "https://github.com/summersun/poc/archive/" + $file_name |
| 11 | + # https://github.com/Azure/azure-powershell/archive/v2.2.0-September2016.zip |
| 12 | + $dest = "C:\application\data" |
| 13 | + Invoke-WebRequest -Uri $source -OutFile $env:APPVEYOR_BUILD_FOLDER |
| 14 | + |
| 15 | + 7z x $file_name -o$env:APPVEYOR_BUILD_FOLDER -y |
| 16 | +
|
| 17 | + # problem 1: find the target folders and files |
| 18 | + # problem 2: process the files |
| 19 | + # problem 3: generate toc |
| 20 | + # problem 4: git push files |
| 21 | +on_success: |
| 22 | + - git clone -q --branch=%TargetBranch% %ContentRepo% %TEMP%\AzurePowerShell |
| 23 | + - ps: Get-ChildItem $env:TEMP\AzurePowerShell\$env:DocFolder -dir | Remove-Item -Recurse -Force |
| 24 | + - robocopy %APPVEYOR_BUILD_FOLDER%\ %TEMP%\AzurePowerShell\%DocFolder% /e & IF %ERRORLEVEL% LEQ 1 exit 0 |
| 25 | + - cd %TEMP%\AzurePowerShell |
| 26 | + - git config --global credential.helper store |
| 27 | + - ps: Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:github_access_token):[email protected]`n" |
| 28 | + - git config --global user.email %Email% |
| 29 | + - git config --global user.name %Name% |
| 30 | + - git add -A |
| 31 | + - git commit -m "commit from appveyor" |
| 32 | + - git push origin %TargetBranch% |
0 commit comments