{"id":28097097,"url":"https://github.com/varabyte/kobweb-cli","last_synced_at":"2025-05-13T16:58:12.221Z","repository":{"id":175978600,"uuid":"626735789","full_name":"varabyte/kobweb-cli","owner":"varabyte","description":"The CLI binary that drives the interactive Kobweb experience. See varabyte/kobweb","archived":false,"fork":false,"pushed_at":"2025-01-30T19:39:58.000Z","size":296,"stargazers_count":11,"open_issues_count":6,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T20:33:08.687Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varabyte.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-12T04:01:03.000Z","updated_at":"2024-12-10T22:21:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"e7e3b052-e796-41f5-b8fa-f3a70932be48","html_url":"https://github.com/varabyte/kobweb-cli","commit_stats":null,"previous_names":["varabyte/kobweb-cli"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varabyte%2Fkobweb-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varabyte%2Fkobweb-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varabyte%2Fkobweb-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varabyte%2Fkobweb-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varabyte","download_url":"https://codeload.github.com/varabyte/kobweb-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990161,"owners_count":21995770,"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":[],"created_at":"2025-05-13T16:58:11.600Z","updated_at":"2025-05-13T16:58:12.210Z","avatar_url":"https://github.com/varabyte.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"This project is the CLI binary for the Kobweb framework.\n\n## Background\n\nKobweb is a Kotlin framework for building reactive web applications.\nYou can view the project here: (https://github.com/varabyte/kobweb)\n\nThe code in here used to be part of the main Kobweb codebase, but it made sense to split it out into its own project for\na couple of reasons:\n\n* It has its own release cadence completely separate from the Kobweb libraries.\n* It is updated far less often than Kobweb is.\n* In GitHub, it was very hard to do a diff between two CLI releases, since one had to read past all the library commits\n  that were there.\n* It is common while working on Kobweb to clean and rebuild all library artifacts, but doing so often deletes the CLI at\n  the same time.\n* Most of the dependencies used by the CLI are completely different to those used by Kobweb, making the\n  libs.versions.toml file feel a bit crowded.\n\nThis binary does depend on one of the Kobweb artifacts, a library called `kobweb-common`, and in the early days of\nKobweb was development, it required frequent updating. More recently, though, this isn't the case anymore, reducing the\nfriction of pulling this project out into its own repository.\n\nIf we ever need to make a change to `kobweb-common` again for code used by this project, we can just upload an artifact\nsnapshot and have this binary depend on it. This is a bit of a pain, but it's not a big deal.\n\n## Building\n\n### Dev\n\nFor local development...\n\n* Check your `libs.versions.toml` file.\n  * `kobweb-cli` should have a version with a `-SNAPSHOT` suffix.\n\n* Install the binary: `./gradlew :kobweb:installShadowDist`\n  * This will create `kobweb/build/install/kobweb/bin/kobweb`.\n  * You are encouraged to create a symlink to it which lives in your path, so you can run the `kobweb` command from\n    anywhere.\n\n### Prod\n\nFor a release...\n\n* Check your `libs.versions.toml` file.\n  * `kobweb-cli` should have a version that does NOT end with a `-SNAPSHOT` suffix.\n\n* Assemble the tar and zip files: `./gradlew :kobweb:assembleShadowDist`\n  * Files live under `kobweb/build/distributions`.\n\n\u003e [!IMPORTANT]\n\u003e The Kobweb CLI project has a [build workflow](.github/workflows/build.yml) which generates CLI artifacts every time a\n\u003e new commit is pushed.\n\u003e\n\u003e You can find these by clicking on the relevant [build run](https://github.com/varabyte/kobweb-cli/actions/workflows/build.yml)\n\u003e and then downloading the `kobweb-cli-artifacts` zip from the `Artifacts` section).\n\u003e\n\u003e You should consider using these instead of ones you built yourself, as the CI environment is guaranteed to be pure,\n\u003e whereas local environments may be contaminated by things you've installed or set up on your own system.\n\n## Releasing\n\n* Create a new release on GitHub.\n* Choose a tag: \"vX.Y.Z\", then \"Create a new tag on publish\"\n* Set that tag for the release title as well\n* Fill out the release, using previous releases as guidance (and comparing changes to main since last time to see what's\n  new)\n* Add the .zip and .tar files downloaded from GitHub actions or, if built manually, from `kobweb/build/distributions`\n* Confirm the release.\n\n## Publishing\n\n\u003e [!IMPORTANT]\n\u003e To successfully publish the CLI, the version must NOT be set to a SNAPSHOT version.\n\n\u003e [!CAUTION]\n\u003e Be very careful with this step. If you publish things from the wrong branch, you could make a mess that could take a\n\u003e while to clean up.\n\n* From https://github.com/varabyte/kobweb-cli/actions choose the \"Publish\" workflow.\n* Be sure to select the correct target (should be a branch or tag targeting the version you just released).\n* Uncheck the \"Dry run\" checkbox. (Although you may want to do a dry run first to make sure everything is set up\n  correctly.)\n* Run the workflow.\n\n### Manual publishing\n\n* Set the Gradle property `kobweb.cli.jreleaser.dryrun` to false.\n* Run `./gradlew :kobweb:jreleaserPublish`\n\nAlthough to do successfully publish, you must have defined the following secrets on your machine:\n\n* varabyte.github.username\n* varabyte.github.token\n* sdkman.key\n\nand the github user specified must have access to edit the `varabyte` organization, as the publish process modifies\nother sibling repositories as a side effect.\n\n## Inform users about the release\n\n* Update the badge version at the top of the main Kobweb README\n* Update the version file: https://github.com/varabyte/data/blob/main/kobweb/cli-version.txt\n* Create an announcement in all relevant Kobweb communities (Discord, Slack, etc.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarabyte%2Fkobweb-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarabyte%2Fkobweb-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarabyte%2Fkobweb-cli/lists"}