Skip to content

Commit

Permalink
updated readme, general project cleanup for beta release
Browse files Browse the repository at this point in the history
  • Loading branch information
jgaribsin committed Jan 12, 2024
1 parent fa209f4 commit 8956e94
Show file tree
Hide file tree
Showing 11 changed files with 113 additions and 273 deletions.
91 changes: 47 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
# Drehmal Installer

Drehmal, Minecraft map installer. The idea is to install everything needed for Drehmal with as little friction as possible.

## Goals:

- Easy to use, low memory footprint
- Based on host OS, appropriately select path(s)
- Install files for any of single player, multiplayer or multiplayer host
- Download the map file
- Download the resource pack
- Download and install fabric
- Download and install client-side mods
- Creates a named Minecraft launcher profile

## Todo

- ✅ Use non-gdrive map source (eg. drehmal.net sharded archives)
- ❌ Test on Linux
- ❌ Test on MacOs
- ✅ Test on Windows
- ❌ Create backend server pointing to up to date resources
- ✅ Refactor large components (eg. `components/MapDownload.vue`) into multiple smaller ones
- ✅ Set Drehmal Resource Pack as active
- ✅ Cleanup installation files (fabric launcher, map tarball)
- ❌ Improve application logging
- ❌ App-wide error catching and handling
- ❌ Recovery states on errors
- ✅ Singleplayer functionality (map, resource pack, mods)
- ✅ Multiplayer client functionality (resource pack, mods)
- ✅ Multiplayer host functionality (map, server jar)

## Known Issues

- Install page state isn't stored
- Users can use browser forward/back button to navigate between pages
- Fabric install button breaks if user doesn't have Java installed or Java in their path (needed for CLI Fabric call)

### Development
# Drehmal 2.2: Apotheosis Installer

[![Discord](https://img.shields.io/discord/695817407557795910?style=for-the-badge&label=Drehmal%202.2%3A%20Apotheosis)](https://discord.gg/xFsRQsDnuj)

An installer made for Drehmal 2.2: Apotheosis to simplify the map's installation process.

## Features

- Multiple installation types
- The classic singleplayer experience
- Multiplayer installation for playing with friends on a server
- Server setup for running your own Drehmal serever
- Dedicated Minecraft Launcher profile for client-side installations
- Lightweight and easy-to-use with a low memory footprint

## How-To

- Download the [latest release for your platform](https://github.com/Drehmal-Team/installer/releases)
- Windows: `.exe`
- MacOS: `.dmg`, `.zip`
- Linux: `.AppImage`, `.deb`, `.tar.gz`
- Run the installer, following the instructions provided by the application
- You may install Drehmal for a singleplayer, multiplayer, or server hosting
- **NOTE**: If you plan on hosting a Drehmal server, you must handle port forwarding, domain names etc. yourself. The installer _will not_ manage that on your behalf. The installer will provide all files necessary for running the server.

## Bugs

If you encounter issues with the installer, please check [open bug reports](https://github.com/Drehmal-Team/installer/issues?q=is%3Aissue+is%3Aopen+label%3A%22bug%22) to see if your issue has already been reported, if there are any updates, workarounds etc.

If there isn't an open report for your issue, then [please fill out a bug report](https://github.com/Drehmal-Team/installer/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%5BBUG%5D+Bug+Title) with the requested information.

The most helpful part is uploading your log file, so please don't forget to do that. Logs can be found at one of these locations:

- Widows: `%APPDATA%/Drehmal Installer/logs`
- Other: `~/Drehmal Installer/logs`

Thanks in advance <3

## Development

Created using [Quasar](https://quasar.dev/), [Electron](https://www.electronjs.org/), and [Vue](https://vuejs.org/) with HTML, CSS and [TypeScript](https://www.typescriptlang.org/) in [VSCode](https://code.visualstudio.com/).

Expand All @@ -47,19 +47,22 @@ Development mode supports hot-code reloading, error reporting etc. via Quasar. [
```bash
# Install dependencies
yarn
# In development mode
# build the project in development mode (hot reloading, auto-recompilation etc.)
yarn dev
# Linting
# lint project for errors or warnings
yarn lint
# Building the project on win
# clean re-install: removes /node_modules, /dist etc. and re-fetches deps
yarn clean
```

### Building

Build commands are platform-specific, and you must be on that platform to build for it. The idea here is to automate this via eg. GitHub Actions and publish the build artifacts for each platform that way.
Build commands are platform-specific, and you must be on that platform to build for it. This is automated via GitHub actions using [this workflow](/.github/workflows/build.yml) when a new tag is created. To begin the workflow, [draft a new release](https://github.com/Drehmal-Team/installer/releases/new) with a _new tag_. Choose an appropriate title and description. GitHub will build releases for all platforms and add them to the created release.

If you would like to build a release for your current platform, then you can use one of the following commands (after cloning the repo).

```bash
# Build commands are platform-specific, and you must be on that platform to build for it
# you must be on that platform to build a release for it
yarn build:win
yarn build:linux
yarn build:osx
Expand Down
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "drehmal-installer",
"version": "0.0.8",
"version": "0.1.0",
"description": "Drehmal, Minecraft map installer",
"productName": "Drehmal Installer",
"author": "jgaribsin",
Expand All @@ -22,7 +22,6 @@
},
"dependencies": {
"@quasar/extras": "^1.16.4",
"axios": "^1.2.1",
"dayjs": "^1.11.10",
"electron-log": "^5.0.3",
"extract-zip": "^2.0.1",
Expand Down
111 changes: 4 additions & 107 deletions quasar.config.js
Original file line number Diff line number Diff line change
@@ -1,63 +1,35 @@
/* eslint-env node */

/*
* This file runs in a Node context (it's NOT transpiled by Babel), so use only
* the ES6 features that are supported by your Node version. https://node.green/
*/

// Configuration for your app
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js

const { configure } = require('quasar/wrappers');
// const path = require('path');

module.exports = configure(function (/* ctx */) {
return {
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#sourcefiles
sourceFiles: {
rootComponent: 'src/App.vue',
// router: 'src/router/index',
// store: 'src/stores/index',
// registerServiceWorker: 'src-pwa/register-service-worker',
// serviceWorker: 'src-pwa/custom-service-worker',
// pwaManifestFile: 'src-pwa/manifest.json',

electronMain: 'src-electron/electron-main',
// electronPreload: 'src-electron/electron-preload',
},

// https://quasar.dev/quasar-cli/supporting-ts
supportTS: true,

eslint: {
// fix: true,
// include: [],
// exclude: [],
// rawOptions: {},
warnings: true,
errors: true,
},

// https://v2.quasar.dev/quasar-cli-vite/prefetch-feature
// preFetch: true,

// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli-vite/boot-files
boot: ['i18n', 'axios'],
boot: [],

// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
css: ['app.scss'],

// https://github.com/quasarframework/quasar/tree/dev/extras
extras: [
// 'ionicons-v4',
// 'mdi-v5',
// 'fontawesome-v6',
// 'eva-icons',
// 'themify',
// 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!

'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
],
Expand All @@ -70,40 +42,6 @@ module.exports = configure(function (/* ctx */) {
},

vueRouterMode: 'hash', // available values: 'hash', 'history'
// vueRouterBase,
// vueDevtools,
// vueOptionsAPI: false,

// rebuildCache: true, // rebuilds Vite/linter/etc cache on startup

// publicPath: '/',
// analyze: true,
// env: {},
// rawDefine: {}
// ignorePublicFolder: true,
// minify: false,
// polyfillModulePreload: true,
// distDir

// extendViteConf (viteConf) {},
// viteVuePluginOptions: {},

// vitePlugins: [
// [
// '@intlify/vite-plugin-vue-i18n',
// {
// // if you want to use Vue I18n Legacy API, you need to set `compositionOnly: false`
// // compositionOnly: false,

// // if you want to use named tokens in your Vue I18n messages, such as 'Hello {name}',
// // you need to set `runtimeOnly: false`
// // runtimeOnly: false,

// // you need to set i18n resource including paths !
// include: path.resolve(__dirname, './src/i18n/**'),
// },
// ],
// ],
},

// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer
Expand All @@ -117,22 +55,10 @@ module.exports = configure(function (/* ctx */) {
framework: {
config: {},

// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack

// For special cases outside of where the auto-import strategy can have an impact
// (like functional components as one of the examples),
// you can manually specify Quasar components/directives to be available everywhere:
//
// components: [],
// directives: [],
// importStrategy: 'auto',

// Quasar plugins
plugins: ['Dialog'],
},

// animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
animations: [],

Expand All @@ -144,10 +70,6 @@ module.exports = configure(function (/* ctx */) {
// https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa
pwa: {
workboxMode: 'GenerateSW', // or 'injectManifest'
// injectPwaMetaTags: true,
// swFilename: 'sw.js',
// manifestFilename: 'manifest.json',
// useCredentialsForManifestTag: false,
manifest: {
name: 'Drehmal Installer',
short_name: 'Drehmal Installer',
Expand Down Expand Up @@ -184,17 +106,10 @@ module.exports = configure(function (/* ctx */) {
},
],
},
// useFilenameHashes: true,
// extendGenerateSWOptions (cfg) {}
// extendInjectManifestOptions (cfg) {},
// extendManifestJson (json) {}
// extendPWACustomSWConf (esbuildConf) {}
},

// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova
cordova: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
},
cordova: {},

// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor
capacitor: {
Expand All @@ -203,27 +118,12 @@ module.exports = configure(function (/* ctx */) {

// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron
electron: {
// extendElectronMainConf (esbuildConf)
// extendElectronPreloadConf (esbuildConf)

inspectPort: 5858,

bundler: 'builder', // 'packager' or 'builder'

packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
},
packager: {},

builder: {
// https://www.electron.build/configuration/configuration

appId: 'drehmal-installer',
// forceCodeSigning: false,
win: {
Expand All @@ -250,9 +150,6 @@ module.exports = configure(function (/* ctx */) {
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex
bex: {
contentScripts: ['my-content-script'],

// extendBexScriptsConf (esbuildConf) {}
// extendBexManifestJson (json) {}
},
};
});
3 changes: 0 additions & 3 deletions src-electron/ipcListeners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,6 @@ ipcMain.handle('getPlatformPretty', () => {
return 'MacOS';
case 'linux':
return 'Linux';
default:
// TODO: default platform
return 'Unknown';
}
});

Expand Down
31 changes: 0 additions & 31 deletions src/boot/axios.ts

This file was deleted.

Loading

0 comments on commit 8956e94

Please sign in to comment.