{"id":13892961,"url":"https://github.com/ChristophWurst/krankerl","last_synced_at":"2025-07-17T06:31:52.914Z","repository":{"id":25200289,"uuid":"103430986","full_name":"ChristophWurst/krankerl","owner":"ChristophWurst","description":"A CLI helper to manage, package and publish Nextcloud apps","archived":false,"fork":false,"pushed_at":"2024-01-30T02:09:59.000Z","size":3857,"stargazers_count":32,"open_issues_count":23,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-09T12:06:09.870Z","etag":null,"topics":["cli","nextcloud","rust","tooling"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChristophWurst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-09-13T17:38:27.000Z","updated_at":"2023-12-11T11:09:20.000Z","dependencies_parsed_at":"2023-02-13T19:16:25.106Z","dependency_job_id":"f13cc26f-3bf4-4c2d-9011-dd7965e018cd","html_url":"https://github.com/ChristophWurst/krankerl","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristophWurst%2Fkrankerl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristophWurst%2Fkrankerl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristophWurst%2Fkrankerl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChristophWurst%2Fkrankerl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChristophWurst","download_url":"https://codeload.github.com/ChristophWurst/krankerl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":214230606,"owners_count":15702608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","nextcloud","rust","tooling"],"created_at":"2024-08-06T17:01:21.176Z","updated_at":"2024-08-06T17:03:22.493Z","avatar_url":"https://github.com/ChristophWurst.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Krankerl\n\n[![Crates.io](https://img.shields.io/crates/v/krankerl.svg)](https://crates.io/crates/krankerl)\n[![Crates.io](https://img.shields.io/crates/d/krankerl.svg)](https://crates.io/crates/krankerl)\n[![AUR](https://img.shields.io/aur/version/krankerl.svg)](https://aur.archlinux.org/packages/krankerl/)\n\nA CLI helper to manage [Nextcloud](https://nextcloud.com/) apps.\n\n## Installation\n\n* [Arch Linux](https://aur.archlinux.org/packages/krankerl-bin/)\n* [Arch Linux (source build)](https://aur.archlinux.org/packages/krankerl)\n* [Debian and derivatives](https://github.com/ChristophWurst/krankerl/releases)\n* [Linux (generic)](https://github.com/ChristophWurst/krankerl/releases)\n\n### Source build\n\nYou can build the application from source with the help of [Cargo](https://doc.rust-lang.org/cargo/)\n\n```\ncargo install --git https://github.com/ChristophWurst/krankerl\n```\n[More info about Cargo install](https://doc.rust-lang.org/cargo/commands/cargo-install.html)\n\n## Usage\n\n```\nUsage:\n  krankerl clean\n  krankerl enable\n  krankerl disable\n  krankerl init\n  krankerl login (--appstore | --github) \u003ctoken\u003e\n  krankerl package [--shipped]\n  krankerl publish [--nightly] \u003curl\u003e\n  krankerl sign --package\n  krankerl up\n  krankerl version (major|minor|patch)\n  krankerl --version\n\nOptions:\n  -h --help     Show this screen.\n  --version     Show version.\n```\n\nIn case you wondered about the app's name: the word *Krankerl* means *tendril*\nin Lower Austrian dialect. [This](https://www.instagram.com/p/BatDv1DhhOe/)\nis what that typically looks like in a vine yard.\n\n## Enable the current app\nKrankerl provides a shortcut to enable an app via the `occ` tool. This assumes\nthat you are inside the app's root directory and `occ` can be found in the directory\ntwo levels above the current one.\n\n```bash\nkrankerl enable\n```\n\n## Disable the current app\nKrankerl provides a shortcut to disable an app via the `occ` tool. This assumes\nthat you are inside the app's root directory and `occ` can be found in the directory\ntwo levels above the current one.\n\n```bash\nkrankerl disable\n```\n\n## Packaging\nKrankerl can build a `.tar.gz` archive for the current app. This assumes a\n`krankerl.toml` configuration file to exist in the app's root directory. If\nit doesn't, Krankerl will fall back to sensible defaults.\nThe command will not use the current state of the app directory, but\nclone it into a new directory. This step was added to make app builds\nreproducible and independent of local changes.\n\n### Steps\n\nThese are the steps Krankerl executes to package an app:\n\n* Delete `build/artifacts` if it exists\n* Clone current directory to `build/artifacts/\u003capp_id\u003e`\n* Run pre-packaging commands\n* Build list of files and directories that are not excluded by `.nextcloudignore`\n* Pack and compress those files and directories into a `build/artifacts/\u003capp_id\u003e.tar.gz` archive\n\n### Initialize configuration\nYou can either manually create the `krankerl.toml` config file or have Krankerl\ncreate it for you by using the `init` command:\n\n```bash\nkrankerl init\n```\n\nThis will create a minimal configuration. Adjust it to your needs.\n\n### Configuration overview\n#### Excluded files\n\nTo exclude files from packaging, commit a `.nextcloudignore` that matches all directories\nand files to exclude. The syntax is the one of a gitignore.\n\n#### Pre-package commands\n\nBuilding app archives often requires execution of a few commands. Common\nexamples for that are composer and npm dependencies that are not part of\nthe git repository and thus are missing in the cloned directory.\n\nThe `package_cmds` array will let you specify commands that are executed\nby `sh` in the app's root directory.\n\n```toml\n[package]\nbefore_cmds = [\n    \"composer install\",\n    \"npm install\",\n    \"npm run build\",\n]\n```\n\n## Publish\n\nKrankerl allows you to publish an app release on [apps.nextcloud.com](https://apps.nextcloud.com)\nonce you've packaged the app files with the `package` command.\n\n\nNote: This currently only includes the registration on the app store. You have to\nfirst upload the archive to GitHub (or any download server) and then pass\nthe URL to the `package` command:\n\n```bash\nkrankerl publish --nightly https://github.com/ChristophWurst/nextcloud_sentry/releases/download/nightly-20171126/sentry.tar.gz\n```\n\nThe `--nightly` switch registers the app as nightly release.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FChristophWurst%2Fkrankerl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FChristophWurst%2Fkrankerl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FChristophWurst%2Fkrankerl/lists"}