YAML-based source-based kotlin module descriptors

Overview

kproject - Liberate your Kotlin projects

YAML-based source-based kotlin module descriptors that runs on top of gradle.

Define your kotlin multiplatform multi-module projects like this:

kproject.yml

name: korio
type: library
version: 3.2.0
src: ./src
dependencies:
- ./libs/kds
- git::adder::korlibs/kproject::/modules/adder::54f73b01cea9cb2e8368176ac45f2fca948e57db
- maven::common::org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4

Create kprojects from existing GitHub repositories

Projects can contain src folders that are subfolders in git repositories:

libs/kds.kproject.yml

name: kds
type: library
version: 3.2.0
src: git::korlibs/korge::/kds/src::v3.2.0

No more maven central publishing, distributed sources

With a single settings.gradle.kts and kproject.yml files you can reference any version and any project hosted at github or maven repositories and compile to any supported platform on the fly.

Super simple to use:

Just put this code in your settings.gradle.kts:

pluginManagement { repositories {  mavenLocal(); mavenCentral(); google(); gradlePluginPortal()  }  }

plugins {
    id("com.soywiz.kproject.settings") version "0.0.1-SNAPSHOT"
}

//kproject("./deps")

Run gradle without tasks, and start editing your automatically-generated kproject.yml file.

What solves

Publishing KMP on maven central is a tedious process, that also requires uploading and downloading a lot of files. It requires a lot of boilerplate and it is not really decentealized. Due to those amount of files that are big in size, publishing new versions is usually delayed to avoid saturating central, also if the library author publishes one library without a target you need, you won't be able to support that target, even if the code itself supports it. With this approach you simplify your projects to something similar to node, haxe or swift. You can bring sources from other repos, and define dependencies between sources easily.

How it works

I did an approach in the past to include sourcecode projects withing gradle. But the problem was that I could not create new modules, but only add new source folders to other modules. So they could not be compiled in parallel and were being recompiled if the module was dirty.

To fix that, this project wss created. Kproject injects in the settings.gradle, in a moment where we can define new modules. Kproject locates a kproject.yml file, parses it and resolves all the modules needed for the project. And then creates gradle modules based on those; local sources, maven artifcats, or git-based sources, or remote files

Comments
  • Fix normalize path on windows platform

    Fix normalize path on windows platform

    On windows the normalize() function converts slashes to backslashes which destroys the git repo name. Thus converting any '' to '/' after calling normalize function fixes that.

    opened by jobe-m 1
  • Automatic deploy to central (create staged repository)

    Automatic deploy to central (create staged repository)

    • https://github.com/korlibs/korge/blob/f59ed0ed5a0c15696d467b7a9f8d7058c9edc986/buildSrc/src/main/kotlin/com/soywiz/korlibs/modules/Sonatype.kt#L47
    • https://github.com/korlibs/korge/blob/f59ed0ed5a0c15696d467b7a9f8d7058c9edc986/.github/workflows/DEPLOY.yml#L29
    opened by soywiz 0
  • Loading of modules from git repos (partly) broken in version 0.1.2-kotlin-1.7.21

    Loading of modules from git repos (partly) broken in version 0.1.2-kotlin-1.7.21

    opened by jobe-m 0
  • How can I configure kproject to use a proxy ?

    How can I configure kproject to use a proxy ?

    How can I configure kproject to use a proxy ?

    Git is configured to use a proxy :

    git config --global --add https.proxy http://user:password@url:port
    git config --global --add http.proxy http://user:password@url:port
    

    Gradle is configured to use a proxy :

    systemProp.http.proxyHost=url
    systemProp.https.proxyHost=url
    systemProp.http.proxyUser=user
    systemProp.https.proxyUser=user
    systemProp.http.proxyPassword=password
    systemProp.https.proxyPassword=password
    systemProp.https.proxyPort=port
    systemProp.http.proxyPort=port
    

    IntelliJ IDEA is configured to use a proxy.

    But when I try to use kproject, I have got this error :

    An exception occurred applying plugin request [id: 'com.soywiz.kproject.settings', version: '0.0.4']
    > Failed to apply plugin 'com.soywiz.kproject.settings'.
       > https://github.com/korlibs/korge-ldtk.git: 407 Proxy Authentication Required
    
    enhancement 
    opened by fbattet 1
  • Dependency locking

    Dependency locking

    We should compute hashes for the content we download and generate a lock file, to ensure no tampering have happened. Since GIT SHA1 is already brokenable, and we might use unsafe repositories.

    opened by soywiz 0
Releases(v0.1.2-kotlin-1.7.21)
Owner
KorGE Game Engine & Korlibs
KorGE Game Engine & Kotlin cORoutines Libraries for fullstack development
KorGE Game Engine & Korlibs
Intellij plugin to decode base64 encoded values in yaml file.

yaml-base64-decoder Plugin Description Extension Adds Decode Base64 Values to editor popup menu when yaml file is opened Adds a keyboard shortcut ⌥ ⇧

null 2 Dec 16, 2022
XliteKt is an open-source, and forever open-source Kotlin based OSRS Emulator for educational purposes.

xlitekt Introduction XliteKt is an open-source, and forever open-source Kotlin based OSRS Emulator for educational purposes. Currently built around th

Runetopic 6 Dec 16, 2022
Clean Android multi-module offline-first scalable app in 2022. Including Jetpack Compose, MVI, Kotlin coroutines/Flow, Kotlin serialization, Hilt and Room.

Android Kotlin starter project - 2022 edition Android starter project, described precisely in this article. Purpose To show good practices using Kotli

Krzysztof Dąbrowski 176 Jan 3, 2023
For Kotlin with SpringBoot project that have multi-module-structure template

Goals kotlin + spring-boot + gradle + multi-module building Module-Structure ---root |--- src.main.kotlin.KotlinSpringbootMultiModuleTemplateAppl

pguma 1 Jul 24, 2022
A complete Kotlin application built to demonstrate the use of Modern development tools with best practices implementation using multi-module architecture developed using SOLID principles

This repository serves as template and demo for building android applications for scale. It is suited for large teams where individuals can work independently on feature wise and layer wise reducing the dependency on each other.

Devrath 11 Oct 21, 2022
FragmentContainerViewIdBugDemo - minimal repro project demonstrating a bug in FragmentContainerView's id check logic in the context of a dynamic feature module

FragmentContainerViewIdBugDemo minimal reproduce project demonstrating an apparent bug in FragmentContainerView's id check logic in the context of a d

null 0 Jan 5, 2022
Titanium Android module: Add a view to a BottomNavigation

ti.bottomNavView Titanium Android module that allows you to add a custom view to a BottomNavigation: Install <module>ti.bottomNavView</module> Method

Michael Gangolf 5 Aug 23, 2022
Purpose of this is to learn to create audit trail module.

Redis Trail An effective audit trail solution can be crucial to an organization's security and data integrity as it can help find the who, what, and w

Soramitsu Khmer Labs 3 Sep 20, 2022
Akka-in-action-kotlin - Accompanying source code for Akka in Action by Kotlin

Akka実践バイブル Kotlin版サンプルコード ( Accompanying source code for Akka in Action by Kotli

nrs 7 Jul 26, 2022
Repository with source code from http://rosettacode.org/wiki/Category:Kotlin

Rosetta Code Kotlin This is a repository with the Kotlin source code from RosettaCode wiki. The main motivation for extracting all the code into a rep

Dmitry Kandalov 20 Dec 27, 2022
Open source Crypto Currency Tracker Android App made fully in Kotlin

CoinBit CoinBit is a beautiful CryptoCurrency app, completely open sourced and 100% in kotlin. It supports following features Track prices of over 300

Pranay Airan 50 Dec 5, 2022
This project is basically PowerNukkit but just in Kotlin (check out the original PowerNukkit source here: https://github.com/PowerNukkit/PowerNukkit)

Introduction Nukkit is nuclear-powered server software for Minecraft: Pocket Edition. It has a few key advantages over other server software: Written

Chrones 5 Jul 7, 2021
an open source algorithmic trading framework written in Kotlin for anyone serious about algo-trading

Roboquant Roboquant is an algorithmic trading platform that is fast and flexible while at the same time strives to be easy to use. It is fully open so

Neural Layer 132 Jan 2, 2023
An AutoValue extension that generates binary and source compatible equivalent Kotlin data classes of AutoValue models.

AutoValue Kotlin auto-value-kotlin (AVK) is an AutoValue extension that generates binary-and-source-compatible, equivalent Kotlin data classes. This i

Slack 19 Aug 5, 2022
Open-Source Forge 1.8.9 Hypixel Duels bot! Planned to support many modes and written in Kotlin.

This project has been moved to a new repository: [HumanDuck23/duck-dueller-v2](https://github.com/HumanDuck23/duck-dueller-v2) Duck Dueller Are you ti

null 2 Aug 29, 2022
Free and open source manga reader for Android.

Build Stable Weekly Preview Contribute Support Server Tachiyomi Tachiyomi is a free and open source manga reader for Android 5.0 and above. Features F

Tachiyomi 20.2k Dec 30, 2022
Free and open source Android app to manage qBittorrent remotely.

qBitController qBitController is a free and open source app for managing qBittorrent remotely. Please note that qBitController is in alpha version. Us

Bartu Özen 12 Dec 25, 2022