Warning: This repository could be regularly rebased
A standalone binary that provides an easy way of installing, and uninstalling plugins from pragtical, as well as different version of pragtical.
Can be used by a package manager plugin that works from inside the editor and calls this binary.
Also contains a plugin_manager.lua
plugin to integrate the binary with pragtical in
the form of an easy-to-use GUI.
By default in releases, ppm
will automatically consume the manifest.json
in the latest
branch of this repository, which corresponds to the most
recent versioned release.
Currently, ppm
, along with the plugin_manager
plugin is bundled with
all official Pragtical releases.
Conforms to SCPS3.
ppm
1.0 has been just released, and so may still contain bugs, but is generally feature-complete.
For details about the manifest.json
files that ppm
consumes,
see here.
On Windows, the best way to start, especially if you're used to a visual interface is to simply pull
ppm
, and use it to install plugin_manager
, which will give you a graphical plugin manager inside
Pragtical that can be accessed with the Plugin Manager: Show
command (ctrl+shift+p
).
To get started, open a PowerShell terminal, and run the following:
Invoke-WebRequest -Uri "https://github.com/pragtical/plugin-manager/releases/download/latest/ppm.x86_64-windows.exe" -OutFile "ppm.exe"
.\ppm.exe install plugin_manager --assume-yes
Remove-Item ppm.exe
This should install ppm
and install the GUI. If you already had Pragtical open, please restart it (ctrl+alt+r
).
The fastest way to get started with ppm is to simply pull a release.
wget https://github.com/pragtical/plugin-manager/releases/download/latest/ppm.x86_64-linux -O ppm && chmod +x ppm
If you want to get the GUI version installed with pragtical, you can tell ppm
to install plugin_manager
, which will allow
you to access Plugin Manager: Show
in the command palette in pragtical
.
./ppm install plugin_manager --assume-yes
If you have a C compiler, and git
, and want to compile from scratch,
you can do:
git clone https://github.com/pragtical/plugin-manager.git \
--shallow-submodules --recurse-submodules && cd plugin-manager &&\
./build.sh -DPPM_STATIC && ./ppm
If you want to build it quickly, and have the right modules installed, you can do:
./build.sh -lgit2 -lzip -llua -lm -lmbedtls -lmbedx509 -lmbedcrypto -lz -DPPM_STATIC
OR
gcc src/ppm.c lib/microtar/src/microtar.c -Ilib/microtar/src -lz -lgit2 \
-lzip -llua -lm -lmbedtls -lmbedx509 -lmbedcrypto -o ppm
CI is enabled on this repository, so you can grab Windows and Linux builds from the
continuous
release page,
which is a nightly, or the latest
release page,
which holds the most recent released version.
There are also tagged releases, for specified versions.
You can get a feel for how to use ppm
by typing ./ppm --help
.
You can also use scoop
to grab ppm
:
scoop install https://raw.githubusercontent.com/pragtical/plugin-manager/refs/heads/master/pragtical-plugin-manager.json
Please note, that meson is not necessarily the best way to compile ppm
. If you have troubles with it, please do consider using the build.sh script.
As seen in the lib
folder, the following external libraries are used to
build ppm
as git submodules:
lua
(core program written in)mbedtls
(https/SSL support)libgit2
(accessing git repositories directly)libz
(supporting library for everything)libzip
(for unpacking .zip files)libmicrotar
(for unpacking .tar.gz files)
To build, ppm
only requires a C compiler. To run the underlying build process
for mbedtls
and libgit2
, cmake
is also required.
ppm
should work on all platforms pragtical
works on; but releases are offered for the following:
- Windows x86_64
- Linux x86_64
- Linux aarch64
- MacOS x86_64
- MacOS aarch64
- Android 8.0+ x86_64
- Android 8.0+ x86
- Android 8.0+ aarch64
- Android 8.0+ armv7a
Experimental support (i.e. doesn't work) exists for the following platforms:
- Linux riscv64
To make pre-fab pragtical builds, you can easily use ppm
in CI. If you had a linux build container, you could do something like:
curl https://github.com/pragtical/plugin-manager/releases/download/v0.1/ppm.x86_64-linux > ppm
export PRAGTICAL_USERDIR=pragtical/data && export PPM_CACHE=/tmp/cache
./ppm add https://github.com/pragtical/plugin-manager && ./ppm install plugin_manager lsp
ppm install aligncarets
ppm uninstall aligncarets
ppm --help
./build.sh clean && ./build.sh -DPPM_STATIC && ./ppm
./build.sh clean && HOSTCC=gcc CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-gcc-ar WINDRES=x86_64-w64-mingw32-windres \
CMAKE_DEFAULT_FLAGS="-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER\ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=NEVER -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_INCLUDE_PATH=/usr/share/mingw-w64/include"\
GIT2_CONFIGURE="-DDLLTOOL=x86_64-w64-mingw32-dlltool" ./build.sh -DPPM_STATIC -DPPM_VERSION='"'$VERSION-x86_64-windows-`git rev-parse --short HEAD`'"'
To run the test suite, you can use ppm
to execute the test by doing ./ppm test t/run.lua
. use FAST=1 ./ppm test t/run.lua
to avoid the costs of tearing down and building up suites each time.
addons.files.extra.chmod_executable
An array of files to be marked as executable (after extraction, if applicable).
If you find a bug, please create an issue with the following information:
- Your operating system.
- The commit or version of PPM you're using (
ppm --version
for releases). - The exact steps to reproduce in PPM invocations, if possible from a fresh PPM install (targeting an empty folder with
--userdir
).