Skip to content
This repository has been archived by the owner on Nov 20, 2020. It is now read-only.

Commit

Permalink
Add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
gusty committed Nov 19, 2018
1 parent 5c0f809 commit 336bbfb
Show file tree
Hide file tree
Showing 12 changed files with 1,816 additions and 0 deletions.
26 changes: 26 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Auto detect text files
* text=auto

# Custom for Visual Studio
*.cs diff=csharp text=auto eol=lf
*.vb diff=csharp text=auto eol=lf
*.fs diff=csharp text=auto eol=lf
*.fsi diff=csharp text=auto eol=lf
*.fsx diff=csharp text=auto eol=lf
*.sln text eol=crlf merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
53 changes: 53 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
*.dll.mdb
*.exe.mdb

# Build results
[Dd]ebug/
Expand All @@ -20,6 +22,7 @@
x64/
x86/
bld/
build/
[Bb]in/
[Oo]bj/
[Ll]og/
Expand Down Expand Up @@ -138,6 +141,7 @@ _TeamCity*

# NCrunch
_NCrunch_*
*.ncrunch*
.*crunch*.local.xml
nCrunchTemp_*

Expand Down Expand Up @@ -210,8 +214,14 @@ _pkginfo.txt
# but keep track of directories ending in .cache
!*.[Cc]ache/

# VSCode
.vscode/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
Expand Down Expand Up @@ -243,6 +253,8 @@ ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf
*.mdf
*.ldf
*.ndf
Expand Down Expand Up @@ -328,3 +340,44 @@ ASALocalRun/

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# =========================
# Windows detritus
# =========================

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac desktop service store files
.DS_Store

# ===================================================
# Exclude F# project specific directories and files
# ===================================================

# NuGet Packages Directory
packages/

# Test results produced by build
TestResults.xml

# Generated documentation folder
docs/

# Temp folder used for publishing docs
temp/

# Nuget outputs
release.cmd
release.sh
localpackages/
*.orig
docsrc/content/license.md
docsrc/content/release-notes.md
2 changes: 2 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#### 0.1.2 - Wednesday, October 10, 2018
* Initial release
12 changes: 12 additions & 0 deletions XRay.sln
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "XRay", "src\XRay\XRay.fspro
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "XRay.Tests", "tests\XRay.Tests\XRay.Tests.fsproj", "{83EB1EBD-A942-4A7D-85CF-831309871506}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}"
ProjectSection(SolutionItems) = preProject
docsrc\content\index.fsx = docsrc\content\index.fsx
docsrc\content\tutorial.fsx = docsrc\content\tutorial.fsx
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{BF60BC93-E09B-4E5F-9D85-95A519479D54}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
RELEASE_NOTES.md = RELEASE_NOTES.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down
223 changes: 223 additions & 0 deletions buildDocs.fsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
// Generate and Release Docs
// =========================
//
// Usage:
//
// Generate Docs
// -> fsi buildDocs.fsx
// Generate & Release Docs
// -> fsi buildDocs.fsx ReleaseDocs
//


// Script Based on ProjectScaffold

#load "docsrc/tools/doclib.fsx"

open Doclib


// --------------------------------------------------------------------------------------
// START TODO: Provide project-specific details below
// --------------------------------------------------------------------------------------

// Information about the project are used
// - to publish documentation on GitHub gh-pages
// - for documentation, you also need to edit info in "docsrc/tools/generate.fsx"

// Git configuration (used for publishing documentation in gh-pages branch)
// The profile where the project is posted
let gitOwner = "jet"
let gitHome = sprintf "%s/%s" "https://github.com" gitOwner

// The name of the project on GitHub
let gitName = "XRay"

let website = "/XRay"

let github_release_user = Environment.environVarOrDefault "github_release_user" gitOwner
let githubLink = sprintf "https://github.com/%s/%s" github_release_user gitName

// Specify more information about your project
let info =
[ "project-name", "XRay"
"project-author", "jet.com"
"project-summary", "Distributed Tracing Library"
"project-github", githubLink
"project-nuget", "http://nuget.org/packages/XRay" ]

// --------------------------------------------------------------------------------------
// END TODO: The rest of the file includes standard build steps
// --------------------------------------------------------------------------------------

// Read additional information from the release notes document
let release = ReleaseNotes.load "RELEASE_NOTES.md"


Target.create "CleanDocs" (fun _ ->
Shell.cleanDirs ["docs"]
)


// --------------------------------------------------------------------------------------
// Build project

Target.create "Build" (fun _ ->
DotNet.runSimpleDotnetCommand
__SOURCE_DIRECTORY__
("pack build.proj")
|> Trace.trace
)


// --------------------------------------------------------------------------------------
// Restore FSharp.Formatting

let fsFormattingVersion = "3.0.0-beta11"
let tempDocsDir = "temp/tools"
Directory.ensure tempDocsDir

System.IO.File.WriteAllText(tempDocsDir @@ "docs.proj", """
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net45</TargetFramework>
<RestorePackagesPath>packages</RestorePackagesPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FSharp.Formatting" Version="pinnedVersion">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="FSharp.Formatting.CommandTool" Version="pinnedVersion">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
""".Replace("pinnedVersion", fsFormattingVersion))

DotNet.runSimpleDotnetCommand
tempDocsDir
("add package FSharp.Formatting -s https://ci.appveyor.com/nuget/fsharp-formatting -v " + fsFormattingVersion)
|> Trace.trace

DotNet.runSimpleDotnetCommand
tempDocsDir
("add package FSharp.Formatting.CommandTool -s https://ci.appveyor.com/nuget/fsharp-formatting -v " + fsFormattingVersion)
|> Trace.trace


// --------------------------------------------------------------------------------------
// Generate the documentation

// Paths with template/source/output locations
let bin = __SOURCE_DIRECTORY__ @@ "src"
let content = __SOURCE_DIRECTORY__ @@ "docsrc/content"
let output = __SOURCE_DIRECTORY__ @@ "docs"
let files = __SOURCE_DIRECTORY__ @@ "docsrc/files"
let templates = __SOURCE_DIRECTORY__ @@ "docsrc/tools/templates"
let formatting = __SOURCE_DIRECTORY__ @@ tempDocsDir @@ "packages" @@ "FSharp.Formatting" @@ fsFormattingVersion
let docTemplate = "docpage.cshtml"


let root = website

let referenceBinaries = []

let layoutRootsAll = new System.Collections.Generic.Dictionary<string, string list>()
layoutRootsAll.Add("en",[ templates;
formatting @@ "templates"
formatting @@ "templates/reference" ])

Target.create "ReferenceDocs" (fun _ ->
Directory.ensure (output @@ "reference")

let binaries () =
let manuallyAdded = referenceBinaries |> List.map (fun b -> bin @@ b)

let conventionBased =
DirectoryInfo.getSubDirectories <| System.IO.DirectoryInfo bin
|> Array.collect (fun d ->
let (name, d) =
let net45Bin = DirectoryInfo.getSubDirectories (DirectoryInfo.ofPath (d.FullName @@ "bin" @@ "Release")) |> Array.filter (fun x -> x.FullName.ToLower().Contains("net45"))
let net47Bin = DirectoryInfo.getSubDirectories (DirectoryInfo.ofPath (d.FullName @@ "bin" @@ "Release")) |> Array.filter (fun x -> x.FullName.ToLower().Contains("net47"))
if net45Bin.Length = 0 && net47Bin.Length = 0 then failwith "Failure: No binaries found."
if net45Bin.Length > 0 then d.Name, net45Bin.[0]
else d.Name, net47Bin.[0]
d.GetFiles ()
|> Array.filter (fun x -> x.Name.ToLower() = (sprintf "%s.dll" name).ToLower())
|> Array.map (fun x -> x.FullName))
|> List.ofArray

conventionBased @ manuallyAdded

binaries()
|> FSFormatting.createDocsForDlls (fun args ->
{ args with
OutputDirectory = output @@ "reference"
LayoutRoots = layoutRootsAll.["en"]
ProjectParameters = ("root", root)::info
SourceRepository = githubLink @@ "tree/master" }
)
)

let copyFiles () =
Shell.copyRecursive files output true
|> Trace.logItems "Copying file: "
Directory.ensure (output @@ "content")
Shell.copyRecursive (formatting @@ "styles") (output @@ "content") true
|> Trace.logItems "Copying styles and scripts: "

Target.create "Docs" (fun _ ->
System.IO.File.Delete "docsrc/content/release-notes.md"
Shell.copyFile "docsrc/content/" "RELEASE_NOTES.md"
Shell.rename "docsrc/content/release-notes.md" "docsrc/content/RELEASE_NOTES.md"

System.IO.File.Delete "docsrc/content/license.md"
Shell.copyFile "docsrc/content/" "LICENSE"
Shell.rename "docsrc/content/license.md" "docsrc/content/LICENSE"


DirectoryInfo.getSubDirectories (DirectoryInfo.ofPath templates)
|> Seq.iter (fun d ->
let name = d.Name
if name.Length = 2 || name.Length = 3 then
layoutRootsAll.Add(
name, [templates @@ name
formatting @@ "templates"
formatting @@ "templates/reference" ]))
copyFiles ()

for dir in [ content; ] do
let langSpecificPath(lang, path:string) =
path.Split([|'/'; '\\'|], System.StringSplitOptions.RemoveEmptyEntries)
|> Array.exists(fun i -> i = lang)
let layoutRoots =
let key = layoutRootsAll.Keys |> Seq.tryFind (fun i -> langSpecificPath(i, dir))
match key with
| Some lang -> layoutRootsAll.[lang]
| None -> layoutRootsAll.["en"] // "en" is the default language

FSFormatting.createDocs (fun args ->
{ args with
Source = content
OutputDirectory = output
LayoutRoots = layoutRoots
ProjectParameters = ("root", root)::info
Template = docTemplate } )
)

// --------------------------------------------------------------------------------------
// Release Scripts

if Array.contains "ReleaseDocs" fsi.CommandLineArgs then

Target.create "ReleaseDocs" (fun _ ->
let tempDocsDir = "temp/gh-pages"
Shell.cleanDir tempDocsDir
Git.Repository.cloneSingleBranch "" (gitHome + "/" + gitName + ".git") "gh-pages" tempDocsDir
Shell.copyRecursive "docs" tempDocsDir true |> Trace.tracefn "%A"
Git.Staging.stageAll tempDocsDir
Git.Commit.exec tempDocsDir (sprintf "Update generated documentation for version %s" release.NugetVersion)
Git.Branches.push tempDocsDir
)

Target.create "GenerateDocs" ignore
Loading

0 comments on commit 336bbfb

Please sign in to comment.