Skip to content

Commit

Permalink
Version 0.15.0 (#621)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bwc9876 authored Dec 29, 2024
2 parents b43a3e1 + 7579451 commit 8431606
Show file tree
Hide file tree
Showing 103 changed files with 6,728 additions and 4,633 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/ci_js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ jobs:
uses: actions/setup-node@v4
with:
node-version-file: owmods_gui/frontend/package.json
cache: npm
cache-dependency-path: owmods_gui/frontend/package-lock.json

- name: Install Dependencies
run: npm install
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/ci_rs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,21 @@ on:
jobs:
rs:
name: Check Rust
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- platform: ubuntu-22.04
target: x86_64-unknown-linux-gnu
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Build Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev
- name: Setup Rust Toolchain
uses: dtolnay/rust-toolchain@stable
Expand All @@ -49,7 +55,7 @@ jobs:
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}
shared-key: v1-check-${{ matrix.platform }}-${{ matrix.target }}-rust-cache-${{ hashFiles('Cargo.lock') }}

- name: Make Stub Dist Dir
run: mkdir owmods_gui/dist
Expand Down
95 changes: 54 additions & 41 deletions .github/workflows/nightly_build.yml
Original file line number Diff line number Diff line change
@@ -1,84 +1,97 @@
name: Nightly Build

on:
workflow_dispatch:
push:
branches: [dev]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build Nightly Version
strategy:
fail-fast: false
matrix:
platform: [ubuntu-20.04, windows-latest]
include:
- platform: "macos-latest" # for Arm based macs (M1 and above).
target: "aarch64-apple-darwin"
args: "app dmg --target aarch64-apple-darwin"
bundle-name: MacOS-aarch64
bundle-path: |
target/**/bundle/**/*.dmg
target/**/bundle/**/*.app
- platform: "macos-latest" # for Intel based macs.
target: "x86_64-apple-darwin"
args: "app dmg --target x86_64-apple-darwin"
bundle-name: MacOS-x86_64
bundle-path: |
target/**/bundle/**/*.dmg
target/**/bundle/**/*.app
- platform: "ubuntu-22.04"
target: "x86_64-unknown-linux-gnu"
args: "appimage deb rpm"
bundle-name: Linux
bundle-path: |
target/release/bundle/**/*.deb
target/release/bundle/**/*.rpm
target/release/bundle/**/*.AppImage
- platform: "windows-latest"
target: "x86_64-pc-windows-msvc"
args: "msi nsis"
bundle-name: Windows
bundle-path: |
target/release/bundle/**/*.msi
target/release/bundle/**/*.exe
target/release/*.exe
runs-on: ${{ matrix.platform }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Disable Updater Bundles
run: |
sed -i.old -e 's/"createUpdaterArtifacts": "v1Compatible"/"createUpdaterArtifacts": false/' owmods_gui/backend/tauri.conf.json
shell: bash
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev
- name: Setup Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

target: ${{ matrix.target }}
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: v1-${{ matrix.platform }}-rust-cache-${{ hashFiles('Cargo.lock') }}

shared-key: v1-gui-${{ matrix.platform }}-${{ matrix.target }}-rust-cache-${{ hashFiles('Cargo.lock') }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: owmods_gui/frontend/package.json

cache: npm
cache-dependency-path: owmods_gui/frontend/package-lock.json
- name: Install Frontend Dependencies
working-directory: owmods_gui/frontend
run: npm install

- name: Install Tauri CLI
run: npm add -g @tauri-apps/cli

- name: Disable Tauri Updater
if: matrix.platform == 'ubuntu-20.04'
run: |
cargo xtask gui_disable_updater
- name: Build GUI
run: tauri build --ci -b $([[ ${{ matrix.platform }} = 'windows-latest' ]] && echo 'msi nsis' || echo 'appimage deb')
run: tauri build --ci -b ${{ matrix.args }}
shell: bash
env:
VITE_COMMIT: ${{ github.sha }}
VITE_VERSION_SUFFIX: -nightly

# Seperate artifacts for each platform

- name: Upload GUI (Linux)
uses: actions/upload-artifact@v4
if: matrix.platform == 'ubuntu-20.04'
with:
name: GUI-Nightly-Linux
path: |
target/release/bundle/**/*.deb
target/release/bundle/**/*.AppImage
- name: Upload GUI (Windows)
- name: Upload GUI
uses: actions/upload-artifact@v4
if: matrix.platform == 'windows-latest'
with:
name: GUI-Nightly-Windows
path: |
target/release/bundle/**/*.msi
target/release/bundle/**/*.exe
target/release/*.exe
name: GUI-Nightly-${{ matrix.bundle-name }}
path: ${{ matrix.bundle-path }}
4 changes: 2 additions & 2 deletions .github/workflows/post_release_cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
publish:
name: Publish
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -22,7 +22,7 @@ jobs:
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}
shared-key: v1-cli-${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}

- name: Publish To Crates.io
run: cargo publish -p owmods_cli
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/post_release_core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}
shared-key: v1-core-${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}

- name: Publish Core
run: cargo publish -p owmods_core
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/post_release_gui.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}
shared-key: v1-gui-${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}

- name: Create PKGBUILD
run: cargo xtask gui_pkg_build
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/release_cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
strategy:
fail-fast: false
matrix:
platform: [ubuntu-20.04, windows-latest]
platform: [ubuntu-22.04, windows-latest]
runs-on: ${{ matrix.platform }}

steps:
Expand All @@ -25,10 +25,10 @@ jobs:
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}
shared-key: v1-cli-${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}

- name: Install Deb Generator
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
run: cargo install cargo-deb

- name: Build CLI
Expand All @@ -44,23 +44,23 @@ jobs:
ANALYTICS_API_KEY: ${{ secrets.ANALYTICS_API_KEY }}

- name: Generate Dist Folder
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
run: cargo xtask dist_cli
env:
ANALYTICS_API_KEY: ${{ secrets.ANALYTICS_API_KEY }}

- name: Archive Dist Files
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
run: tar --zstd -cfowmods.tar.zst -C target/release owmods -C ../../dist/cli/ man completions

- name: Generate Deb File
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
run: cargo deb -p owmods_cli -o owmods_cli_${{ steps.get_version.outputs.version }}_amd64.deb
env:
ANALYTICS_API_KEY: ${{ secrets.ANALYTICS_API_KEY }}

- name: Upload CLI (Ubuntu)
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
uses: softprops/action-gh-release@v2
with:
name: Outer Wilds Mod Manager CLI Version ${{ steps.get_version.outputs.version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release_core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}
shared-key: v1-core-${{ runner.os }}-rust-cache-${{ hashFiles('Cargo.lock') }}

- name: Get Package Version
id: pkg-version
Expand Down
48 changes: 28 additions & 20 deletions .github/workflows/release_gui.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,65 @@
name: Create GUI Release

on:
workflow_dispatch:

jobs:
release:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
platform: [ubuntu-20.04, windows-latest]
include:
- platform: "macos-latest" # for Arm based macs (M1 and above).
target: "aarch64-apple-darwin"
args: "--target aarch64-apple-darwin"
- platform: "macos-latest" # for Intel based macs.
target: "x86_64-apple-darwin"
args: "--target x86_64-apple-darwin"
- platform: "ubuntu-22.04"
target: "x86_64-unknown-linux-gnu"
args: ""
- platform: "windows-latest"
target: "x86_64-pc-windows-msvc"
args: ""
runs-on: ${{ matrix.platform }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-20.04'
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev
- name: Setup Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

target: ${{ matrix.target }}
- name: Setup Rust Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: ${{ matrix.platform }}-rust-cache-${{ hashFiles('Cargo.lock') }}

shared-key: v1-gui-${{ matrix.platform }}-${{ matrix.target }}-rust-cache-${{ hashFiles('Cargo.lock') }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: owmods_gui/frontend/package.json

- name: Install Frontend Dependencies
working-directory: owmods_gui/frontend
run: npm install

- name: Disable Tauri Updater
if: matrix.platform == 'ubuntu-20.04'
run: |
cargo xtask gui_disable_updater
- name: Build GUI
uses: tauri-apps/tauri-action@dev
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
ANALYTICS_API_KEY: ${{ secrets.ANALYTICS_API_KEY }}
VITE_COMMIT: ${{ github.sha }}
with:
Expand All @@ -62,3 +69,4 @@ jobs:
releaseBody: "See the assets to download and install this version."
releaseDraft: true
prerelease: false
args: ${{ matrix.args }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ result
scripts/
owmods.tar.zst
owmods_gui/frontend/stats.html
owmods_gui/backend/gen

# Logs
*.log
Expand Down
2 changes: 2 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ Versions of the manager are published to the following sources

- GitHub releases
- .deb
- .rpm
- .tar.gz
- .AppImage
- .msi (Wix)
Expand Down Expand Up @@ -129,6 +130,7 @@ It has a lot of stuff in it, basically, everything that isn't GUI or CLI specifi
- It can install mods from a zip file, a URL, or the mods database
- The mod manager only supports extracting zip files
- It can recursively install mod dependencies (from the database only), and will automatically handle circular dependencies
- When recursively installing, the manager attempts to "de-dup" installs, preventing a mod that's depended on by multiple mods from being installed more than once
- It doesn't simply extract a mod's zip, it recursively searches for the manifest file in the zip and only extracts that file's siblings and children
- OWML installs are handled specially, use downloads::download_and_install_owml to install OWML
- Analytics are sent when a mod is installed, installed as a dependency, or updated. Note this only happens with `downloads::install_mod_from_db`.
Expand Down
Loading

0 comments on commit 8431606

Please sign in to comment.