Skip to content

Commit

Permalink
Added DocFX API docs (#98)
Browse files Browse the repository at this point in the history
* Added base API docs

* Added workflow for docs
  • Loading branch information
jamesmcroft authored Nov 1, 2021
1 parent 2ee3f16 commit 2ae4283
Show file tree
Hide file tree
Showing 15 changed files with 685 additions and 0 deletions.
53 changes: 53 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Docs

on:
push:
branches:
- main
paths:
- src/**
- docs/**
- .github/workflows/docs.yml
pull_request:
branches:
- main
paths:
- docs/**
- .github/workflows/docs.yml
workflow_dispatch:

jobs:
generate-docs:

runs-on: windows-latest

steps:
- uses: actions/checkout@v2

- name: Setup .NET Core 3.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.x

- name: Setup .NET 5.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x

- name: Setup DocFX
uses: crazy-max/ghaction-chocolatey@v1
with:
args: install docfx

- name: DocFX Build
working-directory: docs
run: docfx .\docfx.json
continue-on-error: false

- name: Publish
if: github.event_name == 'push'
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/_site
force_orphan: true
9 changes: 9 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
###############
# folder #
###############
/**/DROP/
/**/TEMP/
/**/packages/
/**/bin/
/**/obj/
_site
29 changes: 29 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# XPlat Documentation

This folder contains source code for the generation of XPlat's documentation.

## Contributing to the docs

### Install dependencies

Download and install docfx on your computer.

#### MacOS

```
brew install docfx
```

#### Windows

```
choco install docfx
```

### Running locally

```
docfx .\docfx.json --serve
```

This will run the docs on `http://localhost:8080`
5 changes: 5 additions & 0 deletions docs/api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
###############
# temp file #
###############
*.yml
.manifest
10 changes: 10 additions & 0 deletions docs/api/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
uid: api-docs
title: Explore the APIs
---

# Explore the APIs

Here you'll find all of the generated code documentation for the XPlat Windows APIs projects, similar to what you might find on Microsoft Docs!

This documentation is designed to show you how each component of XPlat Windows APIs is constructed and provide a reference for you when building your projects.
30 changes: 30 additions & 0 deletions docs/articles/available-packages.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
uid: available-packages
title: Available packages
---

# Available XPlat packages

XPlat Windows APIs are available via NuGet. Each available package is detailed below.

We have purposefully split the XPlat Windows APIs to allow you to pick and choose the specific components that your app needs to prevent bloat!

| Package | Current | Preview |
| ------ | ------ | ------ |
| XPlat.ApplicationModel | [![Nuget](https://img.shields.io/nuget/v/XPlat.ApplicationModel.svg)](https://www.nuget.org/packages/XPlat.ApplicationModel/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.ApplicationModel.svg)](https://www.nuget.org/packages/XPlat.ApplicationModel/) |
| XPlat.ApplicationModel.DataTransfer | [![Nuget](https://img.shields.io/nuget/v/XPlat.ApplicationModel.DataTransfer.svg)](https://www.nuget.org/packages/XPlat.ApplicationModel.DataTransfer/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.ApplicationModel.DataTransfer.svg)](https://www.nuget.org/packages/XPlat.ApplicationModel.DataTransfer/) |
| XPlat.Core | [![Nuget](https://img.shields.io/nuget/v/XPlat.Core.svg)](https://www.nuget.org/packages/XPlat.Core/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Core.svg)](https://www.nuget.org/packages/XPlat.Core/) |
| XPlat.Device.Display | [![Nuget](https://img.shields.io/nuget/v/XPlat.Device.Display.svg)](https://www.nuget.org/packages/XPlat.Device.Display/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Device.Display.svg)](https://www.nuget.org/packages/XPlat.Device.Display/) |
| XPlat.Device.Geolocation | [![Nuget](https://img.shields.io/nuget/v/XPlat.Device.Geolocation.svg)](https://www.nuget.org/packages/XPlat.Device.Geolocation/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Device.Geolocation.svg)](https://www.nuget.org/packages/XPlat.Device.Geolocation/) |
| XPlat.Device.Launcher | [![Nuget](https://img.shields.io/nuget/v/XPlat.Device.Launcher.svg)](https://www.nuget.org/packages/XPlat.Device.Launcher/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Device.Launcher.svg)](https://www.nuget.org/packages/XPlat.Device.Launcher/) |
| XPlat.Device.Power | [![Nuget](https://img.shields.io/nuget/v/XPlat.Device.Power.svg)](https://www.nuget.org/packages/XPlat.Device.Power/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Device.Power.svg)](https://www.nuget.org/packages/XPlat.Device.Power/) |
| XPlat.Device.Profile | [![Nuget](https://img.shields.io/nuget/v/XPlat.Device.Profile.svg)](https://www.nuget.org/packages/XPlat.Device.Profile/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Device.Profile.svg)](https://www.nuget.org/packages/XPlat.Device.Profile/) |
| XPlat.Foundation | [![Nuget](https://img.shields.io/nuget/v/XPlat.Foundation.svg)](https://www.nuget.org/packages/XPlat.Foundation/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Foundation.svg)](https://www.nuget.org/packages/XPlat.Foundation/) |
| XPlat.Media.Capture | [![Nuget](https://img.shields.io/nuget/v/XPlat.Media.Capture.svg)](https://www.nuget.org/packages/XPlat.Media.Capture/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Media.Capture.svg)](https://www.nuget.org/packages/XPlat.Media.Capture/) |
| XPlat.Services.Maps | [![Nuget](https://img.shields.io/nuget/v/XPlat.Services.Maps.svg)](https://www.nuget.org/packages/XPlat.Services.Maps/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Services.Maps.svg)](https://www.nuget.org/packages/XPlat.Services.Maps/) |
| XPlat.Storage | [![Nuget](https://img.shields.io/nuget/v/XPlat.Storage.svg)](https://www.nuget.org/packages/XPlat.Storage/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Storage.svg)](https://www.nuget.org/packages/XPlat.Storage/) |
| XPlat.Storage.Pickers | [![Nuget](https://img.shields.io/nuget/v/XPlat.Storage.Pickers.svg)](https://www.nuget.org/packages/XPlat.Storage.Pickers/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.Storage.Pickers.svg)](https://www.nuget.org/packages/XPlat.Storage.Pickers/) |
| XPlat.UI | [![Nuget](https://img.shields.io/nuget/v/XPlat.UI.svg)](https://www.nuget.org/packages/XPlat.UI/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.UI.svg)](https://www.nuget.org/packages/XPlat.UI/) |
| XPlat.UI.Controls | [![Nuget](https://img.shields.io/nuget/v/XPlat.UI.Controls.svg)](https://www.nuget.org/packages/XPlat.UI.Controls/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.UI.Controls.svg)](https://www.nuget.org/packages/XPlat.UI.Controls/) |
| XPlat.UI.Core | [![Nuget](https://img.shields.io/nuget/v/XPlat.UI.Core.svg)](https://www.nuget.org/packages/XPlat.UI.Core/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.UI.Core.svg)](https://www.nuget.org/packages/XPlat.UI.Core/) |
| XPlat.UI.Popups | [![Nuget](https://img.shields.io/nuget/v/XPlat.UI.Popups.svg)](https://www.nuget.org/packages/XPlat.UI.Popups/) | [![Nuget](https://img.shields.io/nuget/vpre/XPlat.UI.Popups.svg)](https://www.nuget.org/packages/XPlat.UI.Popups/) |
24 changes: 24 additions & 0 deletions docs/articles/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
uid: xplat-intro
title: Overview
---

<img src="../images/ProjectBanner.png" alt="XPlat project banner" />

# XPlat Windows APIs

XPlat Windows APIs are designed to make it easier for developers adjusted to developing with the Windows Runtime APIs (UWP) to take those skills cross-platform with their applications in .NET.

As each application platform offers their own unique platform-specific APIs, XPlat attempts to bring all of those APIs under one umbrella using a UWP like API, allowing a developer to learn a single API which works with any application built for Windows and Xamarin for Android and iOS.

For a Windows developer, this is appealing as it allows you to easily migrate your existing Windows code to Xamarin shared code with minimal changes through the use of XPlat Windows APIs which mimic the UWP API alternatives.

## Why should I use this project?

You've spent years developing Windows applications and you've been using the Windows Runtime APIs (UWP) to build modern app experiences. Now you want to take your existing apps and skills cross-platform with Xamarin, but you don't know where to start because you don't know what APIs to use!

I had this same problem!

That's where XPlat Windows APIs started, a set of APIs which mimic those Windows APIs but that are cross-platform, supporting both Android and iOS.

Use your existing skills and build epic cross-platform applications.
6 changes: 6 additions & 0 deletions docs/articles/toc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- name: Overview
topicHref: intro.md
- name: Get started
items:
- name: Available packages
href: available-packages.md
82 changes: 82 additions & 0 deletions docs/docfx.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
{
"metadata": [
{
"src": [
{
"src": "../",
"files": [
"src/**.csproj"
],
"exclude": [
"**/bin/**",
"**/obj/**",
"_site/**"
]
}
],
"dest": "api",
"disableGitFeatures": false,
"disableDefaultFilter": false,
"properties": {
"TargetFramework": "netstandard2.0"
}
}
],
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md"
]
},
{
"files": [
"articles/**.md",
"articles/**/toc.yml",
"toc.yml",
"*.md"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default",
"templates/material"
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false,
"globalMetadata": {
"_appLogoPath": "images/Logo.png",
"_appFaviconPath": "images/Logo.png",
"_appTitle": "XPlat Windows APIs",
"_appFooter": "Copyright (c) XPlat Apps",
"_enableSearch": true,
"_enableNewTab": true
}
}
}
Binary file added docs/images/Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/ProjectBanner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
76 changes: 76 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
uid: front-page
title: Docs
---

<img src="images/ProjectBanner.png" alt="XPlat project banner" />

<div class="row">
<div class="col-md-6 col-xs-12">
<h2>Why XPlat Windows APIs?</h2>
<p>
Find yourself with .NET Windows API skills but unsure how to go cross-platform?
</p>
<p>
That's why I started XPlat Windows APIs. This is an API layer for Xamarin Android and iOS application mimicking the equivalent Windows API. So you can build cross-platform applications with the skills you know!
</p>
<span class="button">

[Learn more](articles/intro.md)

</span>
</div>
<div class="col-md-6 col-xs-12">
<h2>Available packages</h2>
<p>
Take advantage of what is available for XPlat Windows APIs in your applications.
</p>
<p>
You'll discover what packages are available for you from NuGet.org, plus how you can use them.
</p>
<span class="button">

[Discover XPlat](articles/available-packages.md)

</span>
</div>
</div>

<div class="row">
<div class="col-md-6 col-xs-12">
<h2>Contributing</h2>
<p>
Are we missing an API you need in your application?
</p>
<p>
XPlat Windows APIs are available as an open-source project on GitHub! Dive into the codebase and bring your improvements.
</p>
<span class="button">

[Get the source](https://github.com/XPlat-Apps/XPlat-Windows-APIs)

</span>
</div>
<div class="col-md-6 col-xs-12">
<h2>Supporting XPlat</h2>
<p>
If you'd like to support our current and future endeavors in open-source projects, considering sponsoring the work we do!
</p>
<span class="button sponsor-button">
<a aria-label="Sponsor @jamesmcroft" target="_top" href="https://github.com/sponsors/jamesmcroft/">
<svg height="16" class="octicon octicon-heart text-pink mr-2" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true">
<path fill-rule="evenodd" d="M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z"></path>
</svg>
<span>Sponsor on GitHub</span>
</a>
</span>
<span class="button sponsor-button">
<a aria-label="Buy Me A Coffee @jamesmcroft" target="_top" href="https://buymeacoff.ee/jamesmcroft">
<svg height="16" class="octicon octicon-heart text-pink mr-2" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true">
<path fill-rule="evenodd" d="M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z"></path>
</svg>
<span>Buy Me A Coffee</span>
</a>
</span>
</div>
</div>
21 changes: 21 additions & 0 deletions docs/templates/material/partials/head.tmpl.partial
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{{!Copyright (c) Oscar Vasquez. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}">
<meta name="generator" content="docfx {{_docfxVersion}}">
{{#_description}}<meta name="description" content="{{_description}}">{{/_description}}
<link rel="shortcut icon" href="{{_rel}}{{{_appFaviconPath}}}{{^_appFaviconPath}}favicon.ico{{/_appFaviconPath}}">
<link rel="stylesheet" href="{{_rel}}styles/docfx.vendor.css">
<link rel="stylesheet" href="{{_rel}}styles/docfx.css">
<link rel="stylesheet" href="{{_rel}}styles/main.css">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<meta property="docfx:navrel" content="{{_navRel}}">
<meta property="docfx:tocrel" content="{{_tocRel}}">
{{#_noindex}}<meta name="searchOption" content="noindex">{{/_noindex}}
{{#_enableSearch}}<meta property="docfx:rel" content="{{_rel}}">{{/_enableSearch}}
{{#_enableNewTab}}<meta property="docfx:newtab" content="true">{{/_enableNewTab}}
</head>
Loading

0 comments on commit 2ae4283

Please sign in to comment.