Add DocFX site generator skeleton

This commit is contained in:
Gary Tierney
2019-07-17 23:17:12 +01:00
parent a090181ea3
commit fe457d762a
18 changed files with 250 additions and 114 deletions
+9
View File
@@ -0,0 +1,9 @@
###############
# folder #
###############
/**/DROP/
/**/TEMP/
/**/packages/
/**/bin/
/**/obj/
_site
+22
View File
@@ -0,0 +1,22 @@
FROM mono:latest
RUN apt-get update -y && apt-get install -y unzip
RUN mkdir -p /docfx
WORKDIR /docfx
RUN curl -L https://github.com/dotnet/docfx/releases/download/v2.43.3/docfx.zip -O \
&& unzip docfx.zip \
&& chmod +r /docfx
RUN echo "#!/bin/bash" >> /usr/local/bin/docfx \
&& echo "mono /docfx/docfx.exe \"\$@\"" >> /usr/local/bin/docfx \
&& chmod +x /usr/local/bin/docfx
RUN mkdir -p /srv/project \
&& useradd -u 1000 docfx \
&& chown docfx:docfx /srv/project
USER docfx
WORKDIR /srv/project
ENTRYPOINT ["docfx"]
+5
View File
@@ -0,0 +1,5 @@
###############
# temp file #
###############
*.yml
.manifest
+2
View File
@@ -0,0 +1,2 @@
# PLACEHOLD
TODO: Add .NET projects to the *src* folder and run `docfx` to generate **REAL** *API Documentation*!
+63
View File
@@ -0,0 +1,63 @@
{
"metadata": [
{
"src": [
{
"files": [
]
}
],
"dest": "api",
"disableGitFeatures": false,
"disableDefaultFilter": false
}
],
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md"
]
},
{
"files": [
"guide/**.md",
"guide/**/toc.yml",
"toc.yml",
"*.md"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default"
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false
}
}
@@ -0,0 +1,7 @@
# Setting up a development environment
## Prerequisites
- **RuneScape game data**: The cache files containing the game data for release 377 of RuneScape.
- **JDK 8+**: An installation of the JDK is needed to run Gradle build tasks and run the server.
@@ -0,0 +1,84 @@
This is a short guide to getting a copy of Apollo from our VCS and
running a server able to accept connections from a game client. It
assumes youre starting fresh and have no local copy of Apollo.
Requirements
============
You should be familiar with running programs on the UNIX shell or
Windows command prompt. There is also a short list of prerequisites
below needed to complete this guide.
- Git
- Gradle
- Java 8
- RuneScape r377 game data files [1]
Getting Apollo
==============
> **Note**
>
> Apollo is still in a development phase and has no current stable
> release, so to run the server we need to build it from sources first.
The URL for the Apollo git repository is
<https://github.com/apollo-rsps/apollo.git>. You can clone this using
the `git` command-line client or by using the [GitHub desktop
client](https://help.github.com/desktop/guides/contributing-to-projects/cloning-a-repository-from-github-desktop/).
```
> $ git clone <https://github.com/apollo-rsps/apollo.git>
```
If using the command line client, the repository will now be under a
folder named *apollo* and is ready to build. When complete open a shell
or Windows command prompt in that directory and move to the next step.
Building Apollo
===============
Apollo uses Gradle build scripts as its build system. To build it,
create a command prompt or shell in the Apollo repository folder and
run:
```
> $ ./gradlew assemble genRsa
```
This will build the core server with the content plugins and run their
respective tests. This process takes around a minute to complete and
when done will generate and output a set of RSA key parameters used by
connecting clients to encrypt their credentials. Save these for later.
Starting Apollo
===============
The last dependency is putting the game data in a location where the
server can find it. By default Apollo looks under `data/fs` in the root
directory for a folder matching the release number. Apollo supports
release 377, so in our case we want the directory structure to look like
this:
```
data/fs
└── 377
├── jingle1.mid
├── main_file_cache.dat
├── main_file_cache.idx0
├── main_file_cache.idx1
├── main_file_cache.idx2
├── main_file_cache.idxN
```
Now that everything is in place we can use the Gradle task to boot the
server.
```
> $ gradle server:run
```
After booting Apollo will have loaded the game data and be ready to accept connections.
[1] We are unable to provide user-end assets like the game data or
client due to copyright restrictions.
@@ -0,0 +1,13 @@
# What is Apollo?
Apollo is a high-performance, modular RuneScape emulator with a
collection of utilities for managing data files and plugins. Apollo
targets revision 377 of the RuneScape client from late 2006. It aims to
achieve parity with the game server of that time and preserve the
history of the game in doing so.
## Is Apollo free?
Apollo is open source and made available under the ISC license. The git
repository for the project is hosted under the [Apollo RSPS
organization](https://github.com/apollo-rsps) on GitHub.
@@ -0,0 +1 @@
# What is a plugin?
@@ -1,7 +1,6 @@
[[getting-started-with-plugins]]
= Creating a plugin
# Creating a plugin
Apollo's plugins are written in http://kotlinlang.org[Kotlin] and are
Apollo's plugins are written in [Kotlin](http://kotlinlang.org) and are
primarily for content, not core code (if you aren't sure where your code
should go, ask in irc). Note that this tutorial assumes some familiarity
with Kotlin, although good Java knowledge will probably be enough.
@@ -9,11 +8,10 @@ with Kotlin, although good Java knowledge will probably be enough.
Note: This tutorial is for developing Plugins for the kotlin-experiments
branch prior to the release of the Kotlin plugin system for Apollo.
[[create-the-working-environment]]
== Create a working environment
## Create a working environment
The project maintainers strongly recommend
https://www.jetbrains.com/idea/[IntelliJ IDEA].
[IntelliJ IDEA](https://www.jetbrains.com/idea/).
After starting IDEA, select *checkout project* with the URL:
https://github.com/apollo-rsps/apollo.git and continue. Make sure to
@@ -24,8 +22,7 @@ use the navigation bar at the top and 'VCS > Git > Branches >
origin/kotlin-experiments > Checkout as new branch'. Name the new branch
something like kotlin-experiments-my-plugin.
[[create-the-plugin-metadata]]
== Create the plugin metadata
## Create the plugin metadata
Apollo's plugins are stored in */game/plugin*, and each plugin has its
own directory. Create one for your plugin - something like 'myplugin'.
@@ -35,12 +32,12 @@ Inside that, create a directory called 'src', then right click it and
Inside your plugin's directory (*not* in src) you'll want a
*build.gradle* file, containing something like:
....
```groovy
plugin {
name = "myplugin"
authors = [ "your name" ]
}
....
```
Sometimes you need to use code from another plugin, which can be done
@@ -48,8 +45,7 @@ like so: `dependencies = [ "util:lookup" ]`
This imports the `lookup` plugin from `util`.
[[write-the-plugin]]
== Write the plugin
## Write the plugin
Plugins are written in kotlin script (_.kts_), which is then transpiled
into Java (bytecode) at compile time. Kotlin script is designed to be
@@ -62,8 +58,7 @@ Apollo uses the _.plugin.kts_ extension to mark files as plugin scripts.
Add a file named 'myplugin.plugin.kts' inside `src` and add the
following code:
[source,kotlin]
----
```kotlin
import org.apollo.game.action.Action
import org.apollo.game.message.impl.InventoryItemMessage
import org.apollo.game.model.Item
@@ -103,7 +98,7 @@ on { InventoryItemMessage::class }
player.startAction(DropItemAction(player, slot))
terminate()
}
----
```
Here we have an *action*, and a *listener*, the two core features of
plugins.
+24
View File
@@ -0,0 +1,24 @@
- name: Introduction
items:
- name: What is Apollo?
href: introduction/01-what-is-apollo.md
- name: Getting Started
items:
- name: Setting up a development environment
href: getting-started/01-setting-up-environment.md
- name: Running the server
href: getting-started/02-running-apollo.md
- name: Plugins
items:
- name: What is a plugin?
href: plugins/01-what-is-a-plugin.md
- name: Creating a plugin
href: plugins/02-creating-a-plugin.md
- name: Testing plugins
href: plugins/03-testing-a-plugin.md
- name: Sharing code with other plugins
href: plugins/04-sharing-plugin-code.md
+4
View File
@@ -0,0 +1,4 @@
# This is the **HOMEPAGE**.
Refer to [Markdown](http://daringfireball.net/projects/markdown/) for how to write markdown files.
## Quick Start Notes:
1. Add images to the *images* folder if the file is referencing an image.
@@ -1,10 +0,0 @@
= What is Apollo?
Apollo is a high-performance, modular RuneScape emulator with a collection of utilities for managing data files and plugins.
Apollo targets revision 377 of the RuneScape client from late 2006.
It aims to achieve parity with the game server of that time and preserve the history of the game in doing so.
== Is Apollo free?
Apollo is open source and made available under the ISC license.
The git repository for the project is hosted under the https://github.com/apollo-rsps[Apollo RSPS organization] on GitHub.
@@ -1,63 +0,0 @@
= Running Apollo
This is a short guide to getting a copy of Apollo from our VCS and running a server able to accept connections from a game client.
It assumes you're starting fresh and have no local copy of Apollo.
== Requirements
You should be familiar with running programs on the UNIX shell or Windows command prompt.
There is also a short list of prerequisites below needed to complete this guide.
* Git
* Gradle
* Java 8
* RuneScape r377 game data files footnote:[We are unable to provide user-end assets like the game data or client due to copyright restrictions.]
== Getting Apollo
NOTE: Apollo is still in a development phase and has no current stable release,
so to run the server we need to build it from sources first.
The URL for the Apollo git repository is https://github.com/apollo-rsps/apollo.git. You can clone this using the `git` command-line client
or by using the https://help.github.com/desktop/guides/contributing-to-projects/cloning-a-repository-from-github-desktop/[GitHub desktop client].
```
> $ git clone https://github.com/apollo-rsps/apollo.git
```
If using the command line client, the repository will now be under a folder named _apollo_ and is ready to build.
When complete open a shell or Windows command prompt in that directory and move to the next step.
== Building Apollo
Apollo uses Gradle build scripts as it's build system. To build it, create a command prompt or shell in the Apollo repository folder and run:
```
> $ gradle build genRsa
```
This will build the core server with the content plugins and run their respective tests.
This process takes around a minute to complete and when done will generate and output a set of RSA key parameters used by connecting clients to encrypt their credentials.
Save these for later.
== Starting Apollo
The last dependency is putting the game data in a location where the server can find it.
By default Apollo looks under `data/fs` in the root directory for a folder matching the release number.
Apollo supports release 377, so in our case we want the directory structure to look like this:
```
data/fs
└── 377
├── jingle1.mid
├── main_file_cache.dat
├── main_file_cache.idx0
├── main_file_cache.idx1
├── main_file_cache.idx2
├── main_file_cache.idxN
```
Now that everything is in place we can use the Gradle task to boot the server
```
> $ gradle server:run
```
After booting Apollo will have loaded the game data and be ready to accept connections.
-26
View File
@@ -1,26 +0,0 @@
= Apollo Documentation
ifdef::env-github,env-browser[:outfilesuffix: .adoc]
This is the home of Apollo's documentation.
Below you will find links to tutorial guides on running and using Apollo.
== The Basics
* <<basics/what-is-apollo#,What is Apollo?>>
== Getting Started
* <<getting-started/running-apollo#,Getting and running Apollo>>
* <<getting-started/development-environment#,Setting up a development environment>>
== Authoring plugins for Apollo
* <<plugins/creating-a-plugin#,Creating a plugin>>
* <<plugins/client-messages#,Reacting to server events>>
* <<plugins/shared-code#,Writing a plugin that exports shared code>>
* <<plugins/testing#,Adding automated tests to your plugin>>
== References and Developer Resources
* Apollo API Documentation[TODO]
* Plugin API Documentation[TODO]
+6
View File
@@ -0,0 +1,6 @@
- name: Guide
href: guide/
- name: Api Documentation
href: api/
homepage: api/index.md