mirror of
https://github.com/ow-mods/ow-mod-man.git
synced 2025-12-11 20:15:50 +01:00
[ALL] Update Package And Release Structure
This commit is contained in:
parent
dad2219a00
commit
39b7dcab82
2
.cargo/config.toml
Normal file
2
.cargo/config.toml
Normal file
@ -0,0 +1,2 @@
|
||||
[alias]
|
||||
xtask = "run --package xtask --"
|
||||
30
.github/workflows/post_release_cli.yml
vendored
Normal file
30
.github/workflows/post_release_cli.yml
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
name: Post Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "cli_v*"
|
||||
|
||||
jobs:
|
||||
crates:
|
||||
name: Publish To Crates.io
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Rust Toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
|
||||
- name: Setup Rust Cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Publish CLI
|
||||
uses: actions-rs/cargo@v1
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
with:
|
||||
command: publish
|
||||
args: -p owmods_cli
|
||||
30
.github/workflows/post_release_core.yml
vendored
Normal file
30
.github/workflows/post_release_core.yml
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
name: Post Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "core_v*"
|
||||
|
||||
jobs:
|
||||
crates:
|
||||
name: Publish To Crates.io
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Rust Toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
|
||||
- name: Setup Rust Cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Publish Core
|
||||
uses: actions-rs/cargo@v1
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
with:
|
||||
command: publish
|
||||
args: -p owmods_core
|
||||
57
.github/workflows/release_cli.yml
vendored
Normal file
57
.github/workflows/release_cli.yml
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
name: Create CLI Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
release:
|
||||
permissions:
|
||||
contents: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform: [ubuntu-20.04, windows-latest]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Rust Toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
|
||||
- name: Setup Rust Cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Get Package Version
|
||||
id: pkg-version
|
||||
run: echo "version=$(cargo metadata --no-deps --format-version=1 --no-default-features | jq '.packages[] | select(.name==\"owmods_cli\") | .version')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build CLI
|
||||
run: cargo build -p owmods_cli --release
|
||||
|
||||
- name: Generate Dist Folder
|
||||
if: ${{ matrix.platform == "ubuntu-20.04" }}
|
||||
run: cargo xtask dist_cli
|
||||
|
||||
- name: Archive Dist Files
|
||||
if: ${{ matrix.platform == "ubuntu-20.04" }}
|
||||
run: tar --zstd -cfowmods.tar.zst -C target/release owmods -C ../../dist/cli/ man completions
|
||||
|
||||
- name: Upload CLI
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: cli_v${{ steps.pkg-version.outputs.version }}
|
||||
fail_on_unmatched_files: false
|
||||
generate_release_notes: false
|
||||
draft: true
|
||||
files: |
|
||||
owmods.tar.zst
|
||||
target/release/owmods
|
||||
target/release/owmods.exe
|
||||
|
||||
|
||||
|
||||
|
||||
42
.github/workflows/release_core.yml
vendored
Normal file
42
.github/workflows/release_core.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
name: Create Core Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
release:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Rust Toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
|
||||
- name: Setup Rust Cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Get Package Version
|
||||
id: pkg-version
|
||||
run: echo "version=$(cargo metadata --no-deps --format-version=1 --no-default-features | jq '.packages[] | select(.name==\"owmods_core\") | .version')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build Core
|
||||
run: cargo package -p owmods_core
|
||||
|
||||
- name: Upload Core
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: core_v${{ steps.pkg-version.outputs.version }}
|
||||
fail_on_unmatched_files: false
|
||||
generate_release_notes: false
|
||||
draft: true
|
||||
files: |
|
||||
target/package/owmods_core-${{ steps.pkg-version.outputs.version }}.crate
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,12 +1,7 @@
|
||||
name: Create Release
|
||||
name: Create GUI Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
type: string
|
||||
description: Version Tag
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
release:
|
||||
@ -36,6 +31,10 @@ jobs:
|
||||
- name: Setup Rust Cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Get Package Version
|
||||
id: pkg-version
|
||||
run: echo "version=$(cargo metadata --no-deps --format-version=1 --no-default-features | jq '.packages[] | select(.name==\"owmods_gui\") | .version')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
@ -72,23 +71,9 @@ jobs:
|
||||
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
|
||||
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
|
||||
with:
|
||||
tagName: ${{ inputs.tag }}
|
||||
tagName: gui_v${{ steps.pkg-version.outputs.version }}
|
||||
includeUpdaterJson: true
|
||||
releaseName: 'Outer Wilds Mod Manager Version __VERSION__'
|
||||
releaseBody: 'See the assets to download and install this version.'
|
||||
releaseDraft: true
|
||||
prerelease: false
|
||||
|
||||
- name: Build CLI
|
||||
run: cargo build -p owmods_cli --release
|
||||
|
||||
- name: Upload CLI
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ inputs.tag }}
|
||||
fail_on_unmatched_files: false
|
||||
generate_release_notes: false
|
||||
draft: true
|
||||
files: |
|
||||
target/release/owmods
|
||||
target/release/owmods.exe
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,6 +1,7 @@
|
||||
# Build Output
|
||||
target
|
||||
owmods_cli/manpage
|
||||
dist/
|
||||
owmods.tar.zst
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
||||
11
Cargo.lock
generated
11
Cargo.lock
generated
@ -4649,6 +4649,17 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xtask"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
"clap_complete",
|
||||
"clap_mangen",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zip"
|
||||
version = "0.6.4"
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
members = [
|
||||
"owmods_core",
|
||||
"owmods_cli",
|
||||
"owmods_gui/backend"
|
||||
"owmods_gui/backend",
|
||||
"xtask"
|
||||
]
|
||||
|
||||
[profile.release]
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
use std::fs::create_dir_all;
|
||||
|
||||
use clap::CommandFactory;
|
||||
use clap_mangen::Man;
|
||||
|
||||
include!("src/cli.rs");
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let out_dir = std::path::PathBuf::from(
|
||||
std::env::var_os("CARGO_MANIFEST_DIR").ok_or(std::io::ErrorKind::NotFound)?,
|
||||
)
|
||||
.join("manpage");
|
||||
create_dir_all(&out_dir)?;
|
||||
|
||||
let man = Man::new(BaseCli::command());
|
||||
let mut buffer: Vec<u8> = Default::default();
|
||||
man.render(&mut buffer)?;
|
||||
std::fs::write(out_dir.join("owmods.1"), buffer)?;
|
||||
let cmd = BaseCli::command();
|
||||
for subcommand in cmd.get_subcommands() {
|
||||
let subcommand = subcommand.clone();
|
||||
let subcommand_name = format!("owmods-{}", subcommand.get_name());
|
||||
let mut buffer: Vec<u8> = Default::default();
|
||||
let man = Man::new(subcommand.clone());
|
||||
man.render(&mut buffer)?;
|
||||
std::fs::write(
|
||||
std::path::PathBuf::from(&out_dir).join(format!("{}{}", &subcommand_name, ".1")),
|
||||
buffer,
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
11
xtask/Cargo.toml
Normal file
11
xtask/Cargo.toml
Normal file
@ -0,0 +1,11 @@
|
||||
[package]
|
||||
name = "xtask"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.70"
|
||||
clap = { version = "4.2.2", features = ["derive", "string"] }
|
||||
clap_complete = "4.2.0"
|
||||
clap_mangen = "0.2.10"
|
||||
regex = "1.7.3"
|
||||
55
xtask/src/cli_tasks.rs
Normal file
55
xtask/src/cli_tasks.rs
Normal file
@ -0,0 +1,55 @@
|
||||
use std::fs::{create_dir_all, File};
|
||||
use std::io::Write;
|
||||
|
||||
use anyhow::Result;
|
||||
use clap::CommandFactory;
|
||||
use clap_mangen::Man;
|
||||
|
||||
use crate::{get_out_dir, get_pkg_version};
|
||||
|
||||
include!("../../owmods_cli/src/cli.rs");
|
||||
|
||||
pub fn generate_man_files() -> Result<()> {
|
||||
let out_dir = get_out_dir()?.join("cli").join("man");
|
||||
create_dir_all(&out_dir)?;
|
||||
let man = Man::new(BaseCli::command());
|
||||
let mut buffer: Vec<u8> = Default::default();
|
||||
man.render(&mut buffer)?;
|
||||
std::fs::write(out_dir.join("owmods.1"), buffer)?;
|
||||
let cmd = BaseCli::command();
|
||||
for subcommand in cmd.get_subcommands() {
|
||||
let subcommand = subcommand.clone();
|
||||
let subcommand_name = format!("owmods-{}", subcommand.get_name());
|
||||
let mut buffer: Vec<u8> = Default::default();
|
||||
let man = Man::new(subcommand.clone().name(&subcommand_name));
|
||||
man.render(&mut buffer)?;
|
||||
std::fs::write(
|
||||
std::path::PathBuf::from(&out_dir).join(format!("{}.1", &subcommand_name)),
|
||||
buffer,
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn generate_completions() -> Result<()> {
|
||||
let out_dir = get_out_dir()?.join("cli").join("completions");
|
||||
create_dir_all(&out_dir)?;
|
||||
let shells: Vec<Shell> = vec![Shell::Zsh, Shell::Bash, Shell::Fish];
|
||||
for shell in shells {
|
||||
let mut cmd = BaseCli::command();
|
||||
let shell_name = format!("{:?}", shell).to_ascii_lowercase();
|
||||
let mut file = File::create(out_dir.join(format!("owmods.{}", shell_name)))?;
|
||||
clap_complete::generate(shell, &mut cmd, "owmods", &mut file);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn generate_pkg_build() -> Result<()> {
|
||||
let version = get_pkg_version(include_str!("../../owmods_cli/Cargo.toml"));
|
||||
let pkgbuild = include_str!("cli_templates/PKGBUILD").replace("~~VERSION~~", version);
|
||||
let out_dir = get_out_dir()?.join("cli").join("pkgbuild");
|
||||
create_dir_all(&out_dir)?;
|
||||
let mut file = File::create(out_dir.join("PKGBUILD"))?;
|
||||
write!(file, "{}", pkgbuild)?;
|
||||
Ok(())
|
||||
}
|
||||
23
xtask/src/cli_templates/PKGBUILD
Normal file
23
xtask/src/cli_templates/PKGBUILD
Normal file
@ -0,0 +1,23 @@
|
||||
# Maintainer: Bwc9876 <bwc9876@gmail.com>
|
||||
pkgname=owmods-cli-bin
|
||||
pkgver=~~VERSION~~
|
||||
pkgrel=1
|
||||
pkgdesc="The CLI version of the Outer Wilds Mod Manager"
|
||||
arch=("x86_64")
|
||||
url="https://github.com/Bwc9876/ow-mod-man/owmods_cli"
|
||||
license=('GPL')
|
||||
makedepends=(cargo)
|
||||
source=("$pkgname-$pkgver.tar.gz::https://github.com/Bwc9876/paru/releases/download/cli_v$pkgver/owmods.tar.zst")
|
||||
|
||||
package() {
|
||||
cd "$srcdir/"
|
||||
install -Dm755 owmods "${pkgdir}/usr/bin/owmods"
|
||||
|
||||
install -Dm644 "completions/owmods.bash" "${pkgdir}/usr/share/bash-completion/completions/owmods.bash"
|
||||
install -Dm644 "completions/owmods.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/owmods.fish"
|
||||
install -Dm644 "completions/owmods.zsh" "${pkgdir}/usr/share/zsh/site-functions/_owmods"
|
||||
|
||||
for file in man/*; do
|
||||
install -Dm644 "$file" "$pkgdir/usr/share/man/man1/$(basename $file)"
|
||||
done
|
||||
}
|
||||
42
xtask/src/main.rs
Normal file
42
xtask/src/main.rs
Normal file
@ -0,0 +1,42 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
use anyhow::Result;
|
||||
use cli_tasks::{generate_completions, generate_man_files, generate_pkg_build};
|
||||
use regex::RegexBuilder;
|
||||
|
||||
mod cli_tasks;
|
||||
|
||||
pub fn get_out_dir() -> Result<PathBuf> {
|
||||
let out_dir = std::path::PathBuf::from(std::env::var_os("CARGO_MANIFEST_DIR").unwrap())
|
||||
.parent()
|
||||
.unwrap()
|
||||
.join("dist");
|
||||
Ok(out_dir)
|
||||
}
|
||||
|
||||
pub fn get_pkg_version(in_str: &str) -> &str {
|
||||
let re = RegexBuilder::new(r#"^version = "(.*?)"$"#)
|
||||
.multi_line(true)
|
||||
.build()
|
||||
.unwrap();
|
||||
let group = re.captures_iter(in_str).next().unwrap();
|
||||
let version_match = group.get(1).unwrap();
|
||||
version_match.as_str()
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let cmd = std::env::args().nth(1).expect("Missing Command Name");
|
||||
match cmd.as_str() {
|
||||
"gen_man" => generate_man_files()?,
|
||||
"gen_completions" => generate_completions()?,
|
||||
"dist_cli" => {
|
||||
println!("Generating Completions...");
|
||||
generate_completions()?;
|
||||
println!("Generating Man Pages...");
|
||||
generate_man_files()?;
|
||||
}
|
||||
"cli_pkg_build" => generate_pkg_build()?,
|
||||
_ => panic!("Invalid Command: {cmd}"),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user