A CLI helper to manage Nextcloud apps.
Usage:
krankerl clean
krankerl enable
krankerl disable
krankerl init
krankerl login (--appstore | --github) <token>
krankerl package [--shipped]
krankerl publish [--nightly] <url>
krankerl sign --package
krankerl up
krankerl version (major|minor|patch)
krankerl --version
Options:
-h --help Show this screen.
--version Show version.
In case you wondered about the app's name: the word Krankerl means tendril in Lower Austrian dialect. This is what that typically looks like in a vine yard.
Krankerl provides a shortcut to enable an app via the occ
tool. This assumes
that you are inside the app's root directory and occ
can be found in the directory
two levels above the current one.
krankerl enable
Krankerl provides a shortcut to disable an app via the occ
tool. This assumes
that you are inside the app's root directory and occ
can be found in the directory
two levels above the current one.
krankerl disable
Krankerl can build a .tar.gz
archive for the current app. This assumes a
krankerl.toml
configuration file to exist in the app's root directory. If
it doesn't, Krankerl will fall back to sensible defaults.
The command will not use the current state of the app directory, but
clone it into a new directory. This step was added to make app builds
reproducible and independent of local changes.
These are the steps Krankerl executes to package an app:
- Delete
build/artifacts
if it exists - Clone current directory to
build/artifacts/<app_id>
- Run pre-packaging commands
- Build list of files and directories that are not excluded by any
exclude
rule - Pack and compress those files and directories into a
build/artifacts/<app_id>.tar.gz
archive
You can either manually create the krankerl.toml
config file or have Krankerl
create it for you by using the init
command:
krankerl init
This will create a minimal configuration. Adjust it to your needs.
The excluded files list is no longer supported in Krankerl from v0.12.0
onwards. Use .nextcloudignore
instead.
Certain files and directories of your repository shouldn't be part of the
generated tarball. The exclude
array in the [package]
lists glob
patterns of files and directories to exclude.
Typical excludes are the .git
directory, tests and configuration files that are
only required during development.
[package]
exclude = [
".git",
"composer.json",
"composer.lock",
"krankerl.toml",
"node_modules",
"tests",
]
Building app archives often requires execution of a few commands. Common examples for that are composer and npm dependencies that are not part of the git repository and thus are missing in the cloned directory.
The package_cmds
array will let you specify commands that are executed
by sh
in the app's root directory.
[package]
before_cmds = [
"composer install",
"npm install",
"npm run build",
]
Krankerl allows you to publish an app release on apps.nextcloud.com
once you've packaged the app files with the package
command.
Note: This currently only includes the registration on the app store. You have to
first upload the archive to GitHub (or any download server) and then pass
the URL to the package
command:
krankerl publish --nightly https://github.com/ChristophWurst/nextcloud_sentry/releases/download/nightly-20171126/sentry.tar.gz
The --nightly
switch registers the app as nightly release.