⚡ An extremely fast reimplementation of gmad.exe and gmpublish.exe

Overview

⚡ fastgmad

Download


An extremely fast reimplementation of gmad.exe and gmpublish.exe.

Prefer to use a GUI? Check out gmpublisher!

Features

  • Up to x100 faster than gmad.exe
  • Create, extract and publish GMAs all in one tool
  • Upload addon icons in PNG, JPG or even GIF format
  • Drop-in replacement for gmad.exe and gmpublish.exe - usage is identical
  • Publish without specifying an icon if you're feeling lazy
  • -stdin and -stdout support for piping data between tools

Requirements

Windows, macOS or Linux

Usage

https://wiki.facepunch.com/gmod/Workshop_Addon_Creation
https://wiki.facepunch.com/gmod/Workshop_Addon_Updating

Drag & Drop
-----------
Drag & drop a .gma onto fastgmad to extract it
Drag & drop a folder onto fastgmad to convert it to .gma

Creating GMAs
-------------
fastgmad create -folder path/to/folder -out path/to/gma.gma
fastgmad create -folder path/to/folder -out path/to/gma.gma
fastgmad create -folder path/to/folder
fastgmad create -folder path/to/folder -stdout

Extracting GMAs
---------------
fastgmad extract -file path/to/gma.gma -out path/to/folder
fastgmad extract -file path/to/gma.gma
fastgmad extract -stdin -out path/to/folder

Publishing GMAs
---------------
>> Adding an icon is OPTIONAL for publishing a new Workshop addon. A default icon will be provided for you if you don't add one. <<
Accepted Icon Formats: JPG, PNG, GIF
Icon Max Size: 1 MB
Recommended Icon Dimensions: 512x512

fastgmad publish -addon path/to/gma.gma -icon path/to/icon
fastgmad update -id 1337 -addon path/to/gma.gma
fastgmad update -id 1337 -addon path/to/gma.gma -icon path/to/icon
fastgmad update -id 1337 -addon path/to/gma.gma -changes "fixed something"
fastgmad update -id 1337 -addon path/to/gma.gma -changes "fixed something" -icon path/to/icon

Additional flags
----------------
-max-io-threads <integer> - The maximum number of threads to use for reading and writing files. Defaults to the number of logical cores on the system.
-max-io-memory-usage <integer> - The maximum amount of memory to use for reading and writing files in parallel. Defaults to 2 GiB.
-warninvalid - Warns rather than errors if the GMA contains invalid files. Off by default.
-noprogress - Turns off progress bars.

Notes
-----
- CRC checking and computation is not a feature. Implementing this would slow down the program for no benefit and it is virtually unused and redundant in Garry's Mod.

You might also like...
Extremely simple http rust servers :snowboarder:

Snowboard 🏂 An extremelly simple library for fast & simple TCP servers in rust [Request a feature/Report a bug] Quick start To get started with Snowb

An extremely high performance logging system for clients (iOS, Android, Desktop), written in Rust.

Pinenut Log 中文文档 ・ English An extremely high performance logging system for clients (iOS, Android, Desktop), written in Rust. Overview Compression Pin

PyO3 bindings and Python interface to skani, a method for fast fast genomic identity calculation using sparse chaining.

🐍 ⛓️ 🧬 Pyskani PyO3 bindings and Python interface to skani, a method for fast fast genomic identity calculation using sparse chaining. 🗺️ Overview

A blazingly fast rust-based bionic reader for blazingly fast reading within a terminal console 🦀
A blazingly fast rust-based bionic reader for blazingly fast reading within a terminal console 🦀

This Rust-based CLI tool reads text and returns it back in bionic reading format for blazingly fast loading and even faster reading! Bionic reading is

Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.
Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

A comprehensive collection of resources and learning materials for Rust programming, empowering developers to explore and master the modern, safe, and blazingly fast language.

🦀 Awesome Rust Lang ⛰️ Project Description : Welcome to the Awesome Rust Lang repository! This is a comprehensive collection of resources for Rust, a

This is choose, a human-friendly and fast alternative to cut and (sometimes) awk
This is choose, a human-friendly and fast alternative to cut and (sometimes) awk

Choose This is choose, a human-friendly and fast alternative to cut and (sometimes) awk Features terse field selection syntax similar to Python's list

A blazingly fast Insertion Sort and Quick Sort visualizer built with Rust and WASM.
A blazingly fast Insertion Sort and Quick Sort visualizer built with Rust and WASM.

sortysort A blazingly fast Insertion Sort and Quick Sort visualizer built with Rust and WASM. Try it in your browser from here Testing locally cargo r

An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Comments
  • `fastgmad publish` errors after

    `fastgmad publish` errors after "preparing config" (Steam error: "a file was not found")

    Here is my console log:

    └─▪ >> fastgmad publish -addon auto_flashlight.gma -icon images/icon_auto_flashlight.jpg
    fastgmad v0.1.1 by Billy
    https://github.com/WilliamVenner/fastgmad
    Prefer to use a GUI? Check out https://github.com/WilliamVenner/gmpublisher
    
    [+16.22µs] Checking icon...
    [+42.372µs] Initializing Steam...
    [S_API] SteamAPI_Init(): Loaded '/home/cpcl/.local/share/Steam/linux64/steamclient.so' OK.
    Setting breakpad minidump AppID = 4000
    SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  76561198103347732 [API loaded no]
    [+30.469575ms] Reading GMA metadata...
    [+30.531192ms] Preparing content folder...
    [+30.556019ms] Creating new Workshop item...
    [+184.306579ms] Preparing item 16592315458883944448 upload...
    [+184.325874ms] Uploading item...
    [+199.13136ms] Preparing config...
    
    ERROR: Steam error (a file was not found)
    
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: FastGmadError { kind: SteamError("a file was not found"), context: None }', fastgmad-bin/src/main.rs:87:31
    stack backtrace:
       0:     0x5594f583d576 - <unknown>
       1:     0x5594f57cc81f - <unknown>
       2:     0x5594f583a737 - <unknown>
       3:     0x5594f583d385 - <unknown>
       4:     0x5594f583e823 - <unknown>
       5:     0x5594f583e5e4 - <unknown>
       6:     0x5594f583ed16 - <unknown>
       7:     0x5594f583ec24 - <unknown>
       8:     0x5594f583d976 - <unknown>
       9:     0x5594f583e9b2 - <unknown>
      10:     0x5594f57bf343 - <unknown>
      11:     0x5594f57bf783 - <unknown>
      12:     0x5594f5806a95 - <unknown>
      13:     0x5594f57ec523 - <unknown>
      14:     0x5594f57ed899 - <unknown>
      15:     0x5594f5833fc5 - <unknown>
      16:     0x5594f5809195 - <unknown>
      17:     0x7f0334627cd0 - <unknown>
      18:     0x7f0334627d8a - __libc_start_main
      19:     0x5594f57c522e - <unknown>
      20:                0x0 - <unknown>
    Aborted (core dumped)
    

    Seems like it gets something wrong at 'preparing config'.

    For reference, I use this command to pack a folder to a .gma: fastgmad create -folder "addons/auto_flashlight" -out auto_flashlight.gma

    The folder is structured like this, which I believe shouldn't cause any issues: addons/auto_flashlight/lua/autorun/... addons/auto_flashlight/addon.json The addon only contains 1 Lua file and the addon.json:

    {
        "title": "Auto-Flashlight",
        "type": "effects",
        "tags": ["scenic", "roleplay"],
        "ignore": []
    }
    

    Also, I'm able to use fastgmad update to update the addon without any errors being printed in fastgmad, however this doesn't seem to actually fix the addon as attempting to download the workshop addon via gmpublisher results in an error, and the displayed file size on the page still says 0.000 MB.

    OS: EndeavourOS Linux x86_64 (kernel 6.1.52-1-lts) Shell (not sure if this matters but I'll put it here anyway): bash 5.1.16 fastgmad version: 0.1.1

    opened by chev2 4
Owner
William
aka Billy
William
⚡ An extremely fast cross-compatible system information tool.

Lightfetch A extremely fast command-line system information tool written in Rust ⚡ . Gallery Sadly there isn't much to showcase right now. Download Av

bwtecode 2 Sep 12, 2022
⚡ An extremely fast cross-compatible system information tool.

Lightfetch A extremely fast command-line system information tool written in Rust ⚡ . Gallery Sadly there isn't much to showcase right now. Download Av

bwtecode 2 Sep 12, 2022
An extremely fast Python linter, written in Rust.

Ruff An extremely fast Python linter, written in Rust. Linting the CPython codebase from scratch. ⚡️ 10-100x faster than existing linters ?? Installab

Charlie Marsh 5.1k Dec 30, 2022
An extremely fast glob matching library in Rust.

glob-match An extremely fast glob matching library with support for wildcards, character classes, and brace expansion. Linear time matching. No expone

Devon Govett 247 Jan 27, 2023
Rust Offensive Security Library for making you .EXE go GHOST 🥷🏾

Ghost Ghost is a rust library that allows you to delete your executable while it's running. Usage // With a default placeholder value on windows (`svc

Mohammed Maali 7 Apr 17, 2023
WIP: A program for switching Dygma layouts based on window name or exe name.

Dygma Layer Switcher Config On the first run of dygma-layer-switcher the config.yml will be generated. --- # Toggle logging. logging: false # Port of

Matthew Wilding 5 Nov 11, 2023
Env.exe for Windows

env.exe for Windows $ env {options} {NAME=VALUE}... COMMAND ARGS... -v, --debug print verbose information --version output version information -h, -

HAYAMA_Kaoru 3 Feb 21, 2024
Maccha is an extremely extensible and themable power menu for Windows, macOS, and Linux.

Maccha I hate coffee. Maccha is an extremely extensible and themable power menu for Windows, macOS, and Linux. Plugins Plugins are written in Rust (ot

Kyza 9 May 13, 2023
A fully modular window manager, extremely extensibile and easily approachable.

AquariWM is a fully modular window manager, allowing extreme extensibility while remaining easily approachable. Installation AquariWM is currently in

AquariWM Window Manager 8 Nov 14, 2022
RedMaple offers an oppinionated yet extremely flexible data modeling system based on events for back-end applications.

RedMaple offers an oppinionated yet extremely flexible data modeling system based on events for back-end applications.

Amir Alesheikh 4 Mar 5, 2023