This commit is contained in:
Kaden Frisk 2024-11-01 01:54:55 -05:00
commit 82146bbcbb
27 changed files with 9110 additions and 0 deletions

20
.gitignore vendored Normal file
View file

@ -0,0 +1,20 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

41
README.md Normal file
View file

@ -0,0 +1,41 @@
# Website
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

3
babel.config.js Normal file
View file

@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

7
docs/eon/_category_.json Normal file
View file

@ -0,0 +1,7 @@
{
"label": "Eon",
"position": 3,
"link": {
"type": "generated-index"
}
}

9
docs/eon/overview.md Normal file
View file

@ -0,0 +1,9 @@
---
sidebar_position: 1
sidebar_label: Overview
---
# Overview for the eon documentation
Eon is the package manager for the Oreon operating system.

91
docs/eon/quickstart.md Normal file
View file

@ -0,0 +1,91 @@
---
sidebar_position: 2
sidebar_label: Quickstart
---
# Eon Quickstart
Jump right into using the package manager with this short, simple guide.
## Commands:
### Help
To display help information:
```sh
eon help
```
### Install
To install a package:
```sh
eon install <package-name>
```
### List
Usage: eon list (repo/local)
:::warning
Choose either repo or local, you cannot list both at the same time.
:::
- repo: lists packages available in repositories.
- local: lists installed packages.
To list all available packages:
```sh
eon list (repo/local)
```
### Info
Usage: eon info \<package> (repo/local) \<repository>
**Package**: The package you want information about
**Repo/Local**: Whether to use the local or repostiory database
**Repository**: ??? (Do not use, unknown)
To get information about a specific package:
```sh
eon info <package> [(repo/local)] [<repository>]
```
### Remove
Simply uninstalls/removes a package.
To remove a package:
```sh
eon remove <package-name>
```
### Clean
Used to remove all the unused packages that were not manually installed or depended on by another package.
To clean remove unused dependencies:
```sh
eon clean
```
### Repo
Sub-commands:
- `add <packageUrl>:` adds a repository.
- `del <name>`: removes a repository.
- `list`: lists repositories.
To manage repositories:
```sh
eon repo (add/del/list) [...options]
```

View file

@ -0,0 +1,8 @@
{
"label": "Eternity",
"position": 2,
"link": {
"type": "generated-index",
"description": "Eternity is a packaging tool designed for creating packages compatible with Eon."
}
}

19
docs/eternity/overview.md Normal file
View file

@ -0,0 +1,19 @@
---
sidebar_position: 1
sidebar_label: Overview
---
# Overview for the eternity documentation
Eternity is the build tool for create eon packages.
## Contents
The "Eternity" section has the following:
- **Overview**: You are here, overview of Eternity and the doc strucutre.
- [**Quickstart**](quickstart): Jump right into installing and using the `eternity` command, go here if you are simply building a project or already familiar with eternity's syntax.
- [**Packaging**](packaging): Detailed guide to creating a new eon compatible package in the form of an EPK.
Needed pages:
- Contributing/Developing
- Reporting a bug

View file

@ -0,0 +1,68 @@
---
sidebar_position: 3
sidebar_label: Packaging
---
# Packaging with Eternity
Packages are built based on a configuration file and the `eternity build` command.
## Simple steps:
Before attempting any of this, please read this entire page if you haven't before.
:::note
Soon, a simple `eternity init` command will create the folders and a simple `eternity.json` for you, and even allow you to specify a git containing the source code.
:::
1. Create a folder for your package configuration, this will be a git later pushed to Oreon's packages.
2. Clone the projects code from a git into a folder named `resources`.
3. Build an `eternity.json` adhering to the eternity config structure [here](#the-eternityjson-structure).
4. Test it with the `eternity build` command.
5. Ensure the build was completed succesfully by checking for the built .epk and reading the logs.
6. For an extra safety precaution, you can attempt to install your newly built package with eon.
1. Install eon if haven't
2. Run `eon install /path/to/package.epk`
3. Ensure the command runs as expected, and shows when you run `eon list`
7. Create a package repository in [Oreon Packages](https://git.oreonproject.org/packages).
8. Add the remote for that package and push your changes.
:::warn
Please do not directly push .epk files to the repos. This is can be solved simply by adding them to your `.gitignore`
:::
## The `eternity.json` structure
Currently, everything is inside of a `"metadata"` section in the JSON file. This is really uneccessary and will be removed soon.
### Options
Inside of this, you have:
- `"name"`: The name of the package.
- `"desc"`: A short description of the packages purpose/contents.
- `"longDesc"`: A lengthier version of the short description that should include more details.
- `"version"`: The packages current version you are building.
- `"author"`: The author of the package. This should match the applications creator when official, and be the actual author of the package if unofficial/community.
- `"license"`: The applications license, this should always match the license the code is available under.
- `"arch"`: Specifies the target architecture for your package. Common values include "x86_64" for 64-bit Intel and AMD systems, "arm64" for 64-bit ARM systems, and "aarch64" for ARM processors on devices like the Raspberry Pi.
- `"deps"`: An array of dependencies your package needs to be built and ran. Eon will attempt to install everything in this section before building and installing your package.
- `"specialFiles"`: Nested special configuration for the files in your build environment. The following are available:
- `"noDelete"`: Array of files you don't want automatically deleted after build.
- `"noReplace"`: Array of files you don't want replace during/after the build.
- `"build"`: Rules/steps for the actual build process.
- `"type"`: The only supported type currently is `"host"` where the package is built inside of a `bwrap` (Bubble wrap) container.
- `"deps"`: Build only dependencies, removed after build unless installed by the user previously.
- `"steps"`: Commands to run in order to build the code into a binary/exectuable format. See steps section on this page for more details.
- `"root"`: The name of the folder everything will be built in, commonly just called `"build"`.
- `"files"`: The folder containing the actual source code, commonly `"src"` but should be changed to fit the project.
- `"hooks"`: An important configuration for a folder containing something to actually install the package with eon. This isn't fully ready, but will run when users `eon install <package>`.
### Example
:::danger
The example package incorrectly installs during the build phase as of writting this. This warning will be removed once it's fixed.
:::
Rather than craming the json code into this page, a maintained and working package is available [here](https://git.oreonproject.org/fluffy/test-package) to see a basic configuration.

View file

@ -0,0 +1,60 @@
---
sidebar_position: 2
sidebar_label: Quickstart
---
# Eternity Quickstart
## Commands:
### Build
Optional arguments:
- `-o <path>`: Specify an output to store the built package.
- `-d` OR ` --disk`: Build EPK on disk instead of in memory. This is useful for large EPKs.
Build the project using the specified configuration.
```sh
eternity build
```
### Convert
Convert an rpm into an epk.
```sh
eternity convert </path/to/rpm> </path/to/output/epk>
```
### Repo
Build/Generate repositories.
:::note
The difference between build and generate in the `eternity help build` output is unclear.
`build` creates a repo from projects in a directory, while `generate` creates the repo directly from EPK's in a folder.
:::
Options:
- `build`: Build a repository from a directory containing EPK project directories.
- `generate`: Generate a repository from a directory containing EPKs.
```sh
eternity repo <build/generate> <directory>
```
### Package
Unclear, help commands outputs nothing. This will be fixed later
:::danger
Do not use command, unknown behaviour
:::
```sh
eternity package <epk>
```

13
docs/intro.md Normal file
View file

@ -0,0 +1,13 @@
---
sidebar_position: 1
---
# Oreon
Welcome to **Oreon's** official documentation.
## Main sections
[**Eon**](category/eon): Oreon's custom package manager
[**Eternity**](category/eternity): The packaging tool for eon

138
docusaurus.config.ts Normal file
View file

@ -0,0 +1,138 @@
import {themes as prismThemes} from 'prism-react-renderer';
import type {Config} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
const config: Config = {
title: 'Oreon Docs',
tagline: 'The official documentation for Oreon',
favicon: 'img/favicon.ico',
// Set the production url of your site here
url: 'https://docs.oreonproject.com',
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: 'oreonproject', // Usually your GitHub org/user name.
projectName: 'docs', // Usually your repo name.
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'throw',
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
presets: [
[
'classic',
{
docs: {
sidebarPath: './sidebars.ts',
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
},
// blog: {
// showReadingTime: true,
// feedOptions: {
// type: ['rss', 'atom'],
// xslt: true,
// },
// // Please change this to your repo.
// // Remove this to remove the "edit this page" links.
// editUrl:
// 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
// // Useful options to enforce blogging best practices
// onInlineTags: 'warn',
// onInlineAuthors: 'warn',
// onUntruncatedBlogPosts: 'warn',
// },
theme: {
customCss: './src/css/custom.css',
},
} satisfies Preset.Options,
],
],
themeConfig: {
// Replace with your project's social card
image: 'img/oreon-banner.png',
navbar: {
title: 'Oreon Docs',
logo: {
alt: 'Oreon Logo',
src: 'img/oreonlogo.png',
},
items: [
{
type: 'docSidebar',
sidebarId: 'tutorialSidebar',
position: 'left',
label: 'Docs',
},
{
href: 'https://git.oreonproject.org/oreonproject/docs',
label: 'Git Repository',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Main Docs',
to: '/docs/intro',
},
],
},
{
title: 'Community',
items: [
{
label: 'Discord',
href: 'https://discordapp.com/invite/docusaurus',
},
{
label: 'Website',
href: 'https://oreonproject.org/',
},
{
label: 'Forums',
href: 'https://forums.oreonproject.org/',
},
{
label: 'Project repositories',
href: 'https://git.oreonproject.org/',
},
],
},
{
title: 'More',
items: [
{
label: 'Git repository',
href: 'https://git.oreonproject.org/oreonproject/docs',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} The Oreon Foundation. Built with Docusaurus.`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
} satisfies Preset.ThemeConfig,
};
export default config;

47
package.json Normal file
View file

@ -0,0 +1,47 @@
{
"name": "oreon-docs",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
},
"dependencies": {
"@docusaurus/core": "3.5.2",
"@docusaurus/preset-classic": "3.5.2",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.5.2",
"@docusaurus/tsconfig": "3.5.2",
"@docusaurus/types": "3.5.2",
"typescript": "~5.5.2"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 3 chrome version",
"last 3 firefox version",
"last 5 safari version"
]
},
"engines": {
"node": ">=18.0"
}
}

31
sidebars.ts Normal file
View file

@ -0,0 +1,31 @@
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
const sidebars: SidebarsConfig = {
// By default, Docusaurus generates a sidebar from the docs folder structure
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
export default sidebars;

View file

@ -0,0 +1,70 @@
import clsx from 'clsx';
import Heading from '@theme/Heading';
import styles from './styles.module.css';
type FeatureItem = {
title: string;
Svg: React.ComponentType<React.ComponentProps<'svg'>>;
description: JSX.Element;
};
// const FeatureList: FeatureItem[] = [
// {
// title: 'Easy to Use',
// Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
// description: (
// <>
// Docusaurus was designed from the ground up to be easily installed and
// used to get your website up and running quickly.
// </>
// ),
// },
// {
// title: 'Focus on What Matters',
// Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
// description: (
// <>
// Docusaurus lets you focus on your docs, and we&apos;ll do the chores. Go
// ahead and move your docs into the <code>docs</code> directory.
// </>
// ),
// },
// {
// title: 'Powered by React',
// Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
// description: (
// <>
// Extend or customize your website layout by reusing React. Docusaurus can
// be extended while reusing the same header and footer.
// </>
// ),
// },
// ];
// function Feature({title, Svg, description}: FeatureItem) {
// return (
// <div className={clsx('col col--4')}>
// <div className="text--center">
// <Svg className={styles.featureSvg} role="img" />
// </div>
// <div className="text--center padding-horiz--md">
// <Heading as="h3">{title}</Heading>
// <p>{description}</p>
// </div>
// </div>
// );
// }
// export default function HomepageFeatures(): JSX.Element {
// return (
// <section className={styles.features}>
// <div className="container">
// <div className="row">
// {FeatureList.map((props, idx) => (
// <Feature key={idx} {...props} />
// ))}
// </div>
// </div>
// </section>
// );
// }

View file

@ -0,0 +1,11 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureSvg {
height: 200px;
width: 200px;
}

30
src/css/custom.css Normal file
View file

@ -0,0 +1,30 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #42A5F5;
--ifm-color-primary-dark: #29784c;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205d3b;
--ifm-color-primary-light: #33925d;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-lightest: #3cad6e;
--ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] {
--ifm-color-primary: #90CAF9;
--ifm-color-primary-dark: #21af90;
--ifm-color-primary-darker: #1fa588;
--ifm-color-primary-darkest: #1a8870;
--ifm-color-primary-light: #29d5b0;
--ifm-color-primary-lighter: #32d8b4;
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}

View file

@ -0,0 +1,23 @@
/**
* CSS files with the .module.css suffix will be treated as CSS modules
* and scoped locally.
*/
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
@media screen and (max-width: 996px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}

42
src/pages/index.tsx Normal file
View file

@ -0,0 +1,42 @@
import clsx from 'clsx';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
// import HomepageFeatures from '@site/src/components/HomepageFeatures';
import Heading from '@theme/Heading';
import styles from './index.module.css';
function HomepageHeader() {
const {siteConfig} = useDocusaurusContext();
return (
<header className={clsx('hero hero--primary', styles.heroBanner)}>
<div className="container">
<Heading as="h1" className="hero__title">
{siteConfig.title}
</Heading>
<p className="hero__subtitle">{siteConfig.tagline}</p>
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="/docs/intro">
View the docs
</Link>
</div>
</div>
</header>
);
}
export default function Home(): JSX.Element {
const {siteConfig} = useDocusaurusContext();
return (
<Layout
title={`Welcome to ${siteConfig.title}`}
description={`${siteConfig.tagline} - Learn more about ${siteConfig.title}`}>
<HomepageHeader />
<main>
</main>
</Layout>
);
}

View file

@ -0,0 +1,7 @@
---
title: Markdown page example
---
# Markdown page example
You don't need React to write simple standalone pages.

0
static/.nojekyll Normal file
View file

BIN
static/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

1
static/img/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
static/img/oreon-banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
static/img/oreonlogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

7
tsconfig.json Normal file
View file

@ -0,0 +1,7 @@
{
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@docusaurus/tsconfig",
"compilerOptions": {
"baseUrl": "."
}
}

8364
yarn.lock Normal file

File diff suppressed because it is too large Load diff