Code Monkey home page Code Monkey logo

ktor-plugin-registry's Introduction

Ktor Plugin Registry

This project contains references to all Ktor plugins available in the web-based Ktor project generator and the IDEA plugin.

Adding a plugin

To add a new plugin, follow these easy steps:

  1. Publish your project to Maven.

    • Use the gradle maven publish plugin to publish to Maven Central or some other public Maven repository.
    • We read from repositories listed in Repositories.kt.
    • If you'd like to include another Maven repository for your plugin, include an update to Repositories.kt in your pull request in step 2. It should have public read access.

  2. Fork and clone this repository.

  3. Run ./gradlew --console=plain -q createPlugin

    • This will prompt you with a couple questions about the new plugin.
    • After it is completed, you should have some new files in this structure:
    plugins
    └── server
        └── <group>
            ├── group.ktor.yaml
            └── <plugin-id>
                ├── versions.ktor.yaml
                └── 2.0
                    ├── manifest.ktor.yaml
                    ├── install,kt
                    └── documentation.md
    
    • You can include any number of install files for populating new projects. More information under templates/manifest.ktor.yaml. The existing plugin files under the plugins folder can also be useful reference for introducing new plugins.
    • If your plugin artifacts aren't published on Maven Central you may need to add an entry to the allRepositories() function in the Repositories.kt file.

  4. Run ./gradlew buildRegistry to test the new files.

  5. Run ./gradlew buildTestProject to generate a sample project.

    • You can now experiment with a project generated with your plugin.
    • Iterate on updating the new files, building the registry, and generating the test project until you're happy with the results.
  6. Create a pull request with the new changes.

    • Once merged, your plugin will be available in the ktor project generator.

ktor-plugin-registry's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ktor-plugin-registry's Issues

Group contact meta

New plugin orgs should always have some means of contact; either email, git username, slack, or whatever. Ideally, we'd be able to use this contact info automatically to notify the maintainers when their plugin is broken.

Forked repository cannot be checking out on Windows environment

After the repository fork cloning, git checkout command fails with next error on Windows machine:

error: invalid path 'buildSrc/src/test/resources/plugins/server/io.ktor/auth-basic/manifest>=2.0.0.json'
error: invalid path 'buildSrc/src/test/resources/plugins/server/io.ktor/auth/manifest>=2.0.0.json'
error: invalid path 'buildSrc/src/test/resources/plugins/server/org.jetbrains/exposed/manifest>=2.2.0.json'

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

gradle
buildSrc/src/main/kotlin/io/ktor/plugins/registry/KtorReleases.kt
buildSrc/src/main/kotlin/io/ktor/plugins/registry/PluginCollector.kt
buildSrc/src/main/kotlin/io/ktor/plugins/registry/PluginReference.kt
buildSrc/src/main/kotlin/io/ktor/plugins/registry/PluginResolution.kt
buildSrc/src/main/kotlin/io/ktor/plugins/registry/Repositories.kt
gradle.properties
settings.gradle.kts
  • org.gradle.toolchains.foojay-resolver-convention 0.8.0
build.gradle.kts
buildSrc/build.gradle.kts
buildSrc/gradle/libs.versions.toml
  • com.charleskorn.kaml:kaml 0.59.0
  • org.apache.maven:maven-artifact 3.9.6
  • org.jetbrains.kotlin.plugin.serialization 1.9.23
  • org.jetbrains.kotlin.jvm 1.9.23
gradle/libs.versions.toml
  • org.jetbrains.kotlin:kotlin-compiler 1.9.23
  • org.jetbrains.kotlinx:kotlinx-serialization-json 1.6.3
  • com.charleskorn.kaml:kaml 0.59.0
  • ch.qos.logback:logback-classic 1.5.6
  • org.apache.maven:maven-artifact 3.9.6
  • org.eclipse.jgit:org.eclipse.jgit 6.9.0.202403050737-r
  • org.apache.commons:commons-compress 1.26.1
  • io.gitlab.arturbosch.detekt 1.23.6
  • org.jetbrains.kotlin.plugin.serialization 1.9.23
  • org.jetbrains.kotlin.jvm 1.9.23
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.7

  • Check this box to trigger a request for Renovate to run again on this repository

Option to ignore plugins

Currently we're all-or-none for building the registry, but if one plugin goes bad our deployment is blocked.

We ought to have the options:

  • Adding some stop file to skip a given plugin.
  • Running the registry validation for a single plugin (and it's prerequisites).

Typo on DoubleReceive desc

The DoubleReceive plugin provides the ility to invoke ApplicationCall.receive several times with no RequestAlreadyConsumedException. This usually makes sense when a plugin is consuming a request body, so a handler is unable to receive it again.

Does "ility" actually mean "ability"?

Migrate JSON output overrides to new YAML

The presence of the output JSON files in the plugins folders can be a little confusing to newcomers, it would be nice if they were all consistently formatted to the new YAML structure.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.