Skip to content
Single binary for Metanorma
HTML Other
  1. HTML 99.2%
  2. Other 0.8%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
bin
sources
vendor
.gitignore
.ruby-version
Gemfile
Gemfile.lock
Makefile
README.adoc

README.adoc

Metanorma-CLI single executable binary

Build Status

Purpose

Metanorma is a sophisticated document publishing tool for standardization bodies. It is written in Ruby with a number of dependencies.

User organizations of Metanorma run on multiple platforms, including Windows, Linux and macOS.

The challenge is how to ensure the distribution and installation of Metanorma works on the target system reliably.

Today, Metanorma offers:

  • Ruby gem

  • Linux setup script

  • macOS Homebrew package

  • Windows Chocolatey package

  • Docker container

However, all these packages require a long installation process with caveats, such as being prone to network failures and a network of dependencies to install.

This repo attempts to package dependencies using ruby-packer, a tool that packages a Ruby interpreter with gems and dependencies into a RAM disk.

Our goal is to make installation quick and dependable for our users.

Usage

Compile executable (only macOS supported for now)

$: make build

This will clear build/ folder files and compile a new version from the metanorma_entry_point Ruby script.

metanorma_entry_point

This script loads all dependencies in order to ruby packer correctly link all gems and their native extensions.

TODO

Currently, it uses 2 forks of sassc and ruby-jing gems:

  • SassC was patched in order to load libsass bindings into memfs of executable.

  • ruby-jing fork skips the usage of jing command completely.

You can’t perform that action at this time.