Run shell commands from a Kotlin script or application with ease

Overview

Turtle

Pure Kotlin Latest release Gradle build status Twitter: @lordcodes


Run shell commands from a Kotlin script or application with ease.

Turtle simplifies the process of running external commands and processes from your Kotlin (or Java) code. It comes bundled with a selection of built-in functions, such as opening MacOS applications and dealing with Git. Running shell commands easily is particularly useful from within Kotlin scripts, command line applications and Gradle tasks.

 

FeaturesInstallUsageContributing

Features

▶︎ Run shell commands with minimal boilerplate

Simply specify the comamnd and its arguments to easily run and retrieve output.

▶︎ Call any of the built-in shell commands

Various commands are provided, such as creating a Git commit and opening files.

▶︎ Use the function syntax to run a series of commands

Specify a sequence of commands to run within a function block.

▶︎ Capture error exit code and output

When a command produces an error, the exit code and error output is thrown as an exception.

Install

Turtle is provided as a Gradle/Maven dependency.

  • v0.5.0 onwards are available via Maven Central.
  • v0.3.0 and v0.4.0 had issues, so please use v0.5.0 or later.
  • Earlier releases were available via Bintray/JCenter.

▶︎ Gradle Kotlin DSL

dependencies {
  implementation("com.lordcodes.turtle:turtle:0.5.0")
}

▶︎ Gradle Groovy DSL

dependencies {
  implementation 'com.lordcodes.turtle:turtle:0.5.0'
}

Usage

To run a single custom command, just call shellRun() and provide the command and arguments.

val output = shellRun("git", listOf("rev-parse", "--abbrev-ref", "HEAD"))
println(output) // Current branch name, e.g. master

The working directory can be provided, to run the command in a particular location. ShellLocation provides easy access to some useful locations, such as the user's home directory.

val turtleProject = ShellLocation.HOME.resolve("projects/turtle")
val output = shellRun("git", listOf("rev-parse", "--abbrev-ref", "HEAD"), turtleProject)
println(output) // Current branch name, e.g. master

To run a series of commands or use the built-in commands, just call shellRun {}.

shellRun {
  command("mkdir tortoise")

  changeWorkingDirectory("tortoise")

  git.commit("Initial commit")
  git.addTag("v1.2", "Release v1.2")

  files.openApplication("Spotify")
}

The initial working directory can be specified.

val turtleProject = ShellLocation.HOME.resolve("projects/turtle")
shellRun(turtleProject) {
  …
}

Built-in commands

▶︎ Git

shellRun {
  git.init()
  git.status()
  git.commit("Commit message")
  git.commitAllChanges("Commit message")
  git.push("origin", "master")
  git.pull()
  git.checkout("release")
  git.clone("https://github.com/lordcodes/turtle.git")
  git.addTag("v1.1", "Release v1.1")
  git.pushTag("v1.1")
  git.currentBranch()
}

▶︎ Files

shellRun {
  files.openFile("script.kts")
  files.openApplication("Mail")
  files.createSymlink("target", "link")
  files.readSymlink("link")
}

▶︎ More

Extra commands can easily be added by either calling command or by extending ShellScript. If you have created a command that you think should be built in, please feel free to open a PR.

Contributing or Help

If you notice any bugs or have a new feature to suggest, please check out the contributing guide. If you want to make changes, please make sure to discuss anything big before putting in the effort of creating the PR.

To reach out, please contact @lordcodes on Twitter.

Comments
  • Proof of concept for a Command abstraction

    Proof of concept for a Command abstraction

    Relates to #120

    Checklist

    • [x] I've read the guide for contributing.
    • [x] I've checked there are no other open pull requests for the same change.
    • [x] I've formatted all code changes with ./gradlew lcCodeFormat.
    • [x] I've ran all checks with ./gradlew lcChecks.
    • [ ] I've updated documentation if needed.
    • [x] I've added or updated tests for changes.

    Reason for change

    This PR is a proof of concept of what could be done with a Command abstraction

    A Command abstraction allows us to separate the functional core with the imperative shell

    But I went further than that and tried to provide type-safe builder for gitand ls.

    A big reason why Bash programming sucks, apart Bash's terrible syntax, is its primitive obsession: everything is just a string

    So there is no validation by the compiler of shit like this:

    shell.git.gitCommand(listOf("push", "local-branch", "--upstream", "origin"))
    

    The command looks like it could be correct, but the order of arguments is wrong, and the name of the option --upstream is wrong.

    Have fun with a crash at runtime!

    Why not detecting errors at compile time instead?

    By relying on the power of Kotlin's type system, we can detect lots of mistakes early:

    turtle_–_GitCommandsTest_kt__turtle_turtle_test_

    To make those type-safe builders work, there is a command() function that accepts pretty much anything: strings, ints, booleans, chars, pairs, lists, URLs, our own types inheriting HasSingleCommandArgument

    I don't provide an easy way to add a single-character option like -u because that's code golfing and I assume people would prefer the more explicit --set-upstream variant if they can rely on auto-complete.

    opened by jmfayard 13
  • GH-120 Command + Args abstraction

    GH-120 Command + Args abstraction

    Checklist

    • [x] I've read the guide for contributing.
    • [x] I've checked there are no other open pull requests for the same change.
    • [x] I've formatted all code changes with ./gradlew lcCodeFormat.
    • [x] I've ran all checks with ./gradlew lcChecks.
    • [ ] I've updated documentation if needed.
    • [x] I've added or updated tests for changes.

    Description

    Update: Neither complete nor up-to-date. The real documentation is inside the unit tests

    Creating commands

    // the unreadable way
    val lsCommand = Command("ls", Args(listOf("-a", "-l", "--color=when", "src", "build")))
    
    // better
    val folders = Args("src", "build")
    val options = Args("-l", "-a", ""--color=when")
    val lsComand = Command("ls") + options + folders
    

    Executing commands

    val helloWorld = Command("echo", Args("hello", "world")..executeOrThrow()
    println(helloWorld)
    
    val invalidCommand = Command("ls", Args("/invalid/path"))
    invalidCommand.executeOrElse {
      println("Invalid path, got expection $it, quick return instead of crashing")
      return
    }
    
    opened by jmfayard 10
  • Mock ShellScript within tests

    Mock ShellScript within tests

    Describe the problem I have an application with multiple layers (ui, interactor, repository, service). The ui layer; although cmdline, is the layer where I use ShellScript. I want each layer to be testable independently which means layers or their constructor arguments will need to be mocked in order to keep it as isolated as possible. Shellscript, being an final class with internal constructor, cannot be given passed as a constructor argument. This makes writing isolated unit tests impossible in my setup.

    Describe your solution Appending the keyword 'open' will solve this.

    Checklist

    Additional context None

    type:enhancement 
    opened by jefpij 8
  • Dry-run mode for command

    Dry-run mode for command

    Describe the problem

    Assuming I have a script that does a lot of git stuff, I would like to have a dry run mode to check that my git syntax is correct before actually doing a git operation

    Describe your solution

    • add fun GitCommands.dryRunMode()
    • change fun GitCommands.gitCommand() so that it does echo git command something instead of git command something when dry run is enabled

    Checklist

    type:enhancement 
    opened by jmfayard 6
  • Inject ProcessBuilder/Process

    Inject ProcessBuilder/Process

    Describe the problem Hi,

    I would like to get a timer on a task. If a task is not ending after let's say 1 hour, could we shut down the process?

    Describe your solution It you have any idea on how we can do this, or if shellRun could returns a process id, let me know, I would really be happy to have such feature! And if I'm able to do that, I will do a PR!

    type:enhancement 
    opened by stabla 5
  • Add Command abstraction

    Add Command abstraction

    Describe the problem

    Currently, commands are ran immediately as a function, being able to create a command that is kept in a structure would enable other things to be implemented using Turtle, such as a Pipeline feature in the future to run a set of commands in a sequence piping output into next command.

    Describe your solution

    Create a Command data class that contains the command and its arguments, that can then be executed later.

    Checklist

    type:enhancement 
    opened by lordcodes 4
  • Bump com.github.ben-manes.versions from 0.38.0 to 0.39.0

    Bump com.github.ben-manes.versions from 0.38.0 to 0.39.0

    Bumps com.github.ben-manes.versions from 0.38.0 to 0.39.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 4
  • Bump io.gitlab.arturbosch.detekt from 1.18.1 to 1.19.0

    Bump io.gitlab.arturbosch.detekt from 1.18.1 to 1.19.0

    Bumps io.gitlab.arturbosch.detekt from 1.18.1 to 1.19.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • Bump kotlin-stdlib from 1.4.32 to 1.5.20

    Bump kotlin-stdlib from 1.4.32 to 1.5.20

    Bumps kotlin-stdlib from 1.4.32 to 1.5.20.

    Release notes

    Sourced from kotlin-stdlib's releases.

    Kotlin 1.5.20

    How to update to a new release

    Changelog

    Compiler

    New Features

    • KT-43262 No error for Java generic class @​NotNull type parameter used in Kotlin with nullable type argument
    • KT-44373 FIR: support error / warning suppression
    • KT-45189 Support nullability annotations at module level
    • KT-45284 Emit warnings based on jspecify annotations
    • KT-45525 Allow to omit JvmInline annotation for expect value classes
    • KT-46545 Emit annotations on function type parameters into bytecode for -jvm-target 1.8 and above

    Performance Improvements

    • KT-36646 Don't box primitive values in equality comparison with objects in JVM_IR

    Fixes

    • KT-8325 Unresolved annotation should be an error
    • KT-19455 Type annotation unresolved on a type parameter of a supertype in anonymous object expression
    • KT-24643 Prohibit using a type parameter declared for an extension property inside delegate
    • KT-25876 Annotations on return types and supertypes are not analyzed
    • KT-28449 Annotation target is not analyzed in several cases for type annotations
    • KT-36770 Prohibit unsafe calls with expected @​NotNull T and given Kotlin generic parameter with nullable bound
    • KT-36880 K/N IR: Reference to expect property in actual declaration is not remapped
    • KT-38325 IllegalStateException: No parameter with index 0-0 when iterating Scala 2.12.11 List
    • KT-38342 FIR: Consider renaming diagnostic from AMBIGUITY to OVERLOAD_RESOLUTION_AMBIGUITY
    • KT-38476 [FIR] Forgotten type approximation
    • KT-38540 Kotlin/Native Set.contains fails with specific enum setup
    • KT-40425 IrGenerationExtension. Support simple reporting to compiler output (for development/debug)
    • KT-41620 ClassCastException: Class cannot be cast to java.lang.Void
    • KT-41679 NI: TYPE_MISMATCH wrong type inference of collection with type Any and integer literal
    • KT-41818 NI: False positive IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION leads to NothingValueException on delegated properties
    • KT-42239 IR: Report compilation error instead of throwing an exception (effectively crash compiler) when some declaration wasn't found while deserialization
    • KT-42631 ArrayIndexOutOfBoundsException was thrown during IR lowering
    • KT-43258 NI: False positive "Suspend function 'invoke' should be called only from a coroutine or another suspend function" when calling suspend operator fun on object property from last expression of a crossinlined suspend lambda
    • KT-44036 Enum initialization order
    • KT-44511 FIR DFA: smartcast after if (nullable ?: boolean)
    • KT-44554 RAW FIR: NPE in RawFirBuilder
    • KT-44682 raw FIR: incorrect source for qualified access
    • KT-44695 *_TYPE_MISMATCH_ON_OVERRIDE checkers do not work for anonymous objects
    • KT-44699 FIR: incorrect lambda return type (led to a false alarm: PROPERTY_TYPE_MISMATCH_ON_OVERRIDE)
    • KT-44802 FIR bootstrap: trying to access package private class
    • KT-44813 FIR bootstrap: various errors in collection-like classes
    • KT-44814 FIR bootstrap: incorrect cast in when branch
    • KT-44942 [FIR] ClassCastException in boostrap tests

    ... (truncated)

    Changelog

    Sourced from kotlin-stdlib's changelog.

    1.5.20

    Compiler

    New Features

    • KT-43262 No error for Java generic class @​NotNull type parameter used in Kotlin with nullable type argument
    • KT-44373 FIR: support error / warning suppression
    • KT-45189 Support nullability annotations at module level
    • KT-45284 Emit warnings based on jspecify annotations
    • KT-45525 Allow to omit JvmInline annotation for expect value classes
    • KT-46545 Emit annotations on function type parameters into bytecode for -jvm-target 1.8 and above

    Performance Improvements

    • KT-36646 Don't box primitive values in equality comparison with objects in JVM_IR

    Fixes

    • KT-8325 Unresolved annotation should be an error
    • KT-19455 Type annotation unresolved on a type parameter of a supertype in anonymous object expression
    • KT-24643 Prohibit using a type parameter declared for an extension property inside delegate
    • KT-25876 Annotations on return types and supertypes are not analyzed
    • KT-28449 Annotation target is not analyzed in several cases for type annotations
    • KT-36770 Prohibit unsafe calls with expected @​NotNull T and given Kotlin generic parameter with nullable bound
    • KT-36880 K/N IR: Reference to expect property in actual declaration is not remapped
    • KT-38325 IllegalStateException: No parameter with index 0-0 when iterating Scala 2.12.11 List
    • KT-38342 FIR: Consider renaming diagnostic from AMBIGUITY to OVERLOAD_RESOLUTION_AMBIGUITY
    • KT-38476 [FIR] Forgotten type approximation
    • KT-38540 Kotlin/Native Set.contains fails with specific enum setup
    • KT-40425 IrGenerationExtension. Support simple reporting to compiler output (for development/debug)
    • KT-41620 ClassCastException: Class cannot be cast to java.lang.Void
    • KT-41679 NI: TYPE_MISMATCH wrong type inference of collection with type Any and integer literal
    • KT-41818 NI: False positive IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION leads to NothingValueException on delegated properties
    • KT-42239 IR: Report compilation error instead of throwing an exception (effectively crash compiler) when some declaration wasn't found while deserialization
    • KT-42631 ArrayIndexOutOfBoundsException was thrown during IR lowering
    • KT-43258 NI: False positive "Suspend function 'invoke' should be called only from a coroutine or another suspend function" when calling suspend operator fun on object property from last expression of a crossinlined suspend lambda
    • KT-44036 Enum initialization order
    • KT-44511 FIR DFA: smartcast after if (nullable ?: boolean)
    • KT-44554 RAW FIR: NPE in RawFirBuilder
    • KT-44682 raw FIR: incorrect source for qualified access
    • KT-44695 *_TYPE_MISMATCH_ON_OVERRIDE checkers do not work for anonymous objects
    • KT-44699 FIR: incorrect lambda return type (led to a false alarm: PROPERTY_TYPE_MISMATCH_ON_OVERRIDE)
    • KT-44802 FIR bootstrap: trying to access package private class
    • KT-44813 FIR bootstrap: various errors in collection-like classes
    • KT-44814 FIR bootstrap: incorrect cast in when branch
    • KT-44942 [FIR] ClassCastException in boostrap tests
    • KT-44995 FIR: false positive for ANNOTATION_ARGUMENT_MUST_BE_CONST
    • KT-45010 FIR: lambda arguments of inapplicable call is not resolved
    • KT-45048 FIR bootstrap: VerifyError on KtUltraLightClass

    ... (truncated)

    Commits
    • 282fd2c Move 1.4.x changelog to a separate file
    • d2a196c Add changelog for 1.5.20
    • 4ac3753 Restore removed 'kotlinPluginVersion' property.
    • eec6efb Use proper applicability for constraint warnings
    • dc8fa06 rrr/1.5.20-release/ayalyshev/change-notes
    • 2ffcc16 Add regression test for MPP android source set with resources
    • 679e768 Fix adding non-directory to resources for Android source set
    • 6b8cae2 Add workaround for compiler downloader for 1.5.20 release binaries
    • 7d180b8 Treat toolchain as input only for JVM tasks.
    • a5e1ec9 Revert "Warn on using 'jdkHome' option in Gradle builds."
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • Use with android Studio

    Use with android Studio

    Hi,

    With the latest Android Studio 4.0 release, Android studio now has support for Kotlin DSL for gradle files. I'm trying to use this project to run some git shell commands but can't get it to install. Are there any special instructions to get this gradle task to work with Android and Android Studio? I've tried including the implementation("com.lordcodes.turtle:turtle:0.2.0") in both the module level build.gradle.kts as well as the app level build file as a classpath.

    opened by shalzz 2
  • Bump kotlin-stdlib from 1.7.21 to 1.7.22

    Bump kotlin-stdlib from 1.7.21 to 1.7.22

    Bumps kotlin-stdlib from 1.7.21 to 1.7.22.

    Release notes

    Sourced from kotlin-stdlib's releases.

    Kotlin 1.7.22

    This is a technical release. It doesn't contain any fixes that aren't included in Kotlin 1.7.21. Version 1.7.22 of the Kotlin plugin will not be available for downloading or installing in any IDEs.

    Checksums

    File Sha256
    kotlin-compiler-1.7.22.zip 9db4b467743c1aea8a21c08e1c286bc2aeb93f14c7ba2037dbd8f48adc357d83
    kotlin-native-linux-x86_64-1.7.22.tar.gz dd004d520056aba67f2955a3bec5af75f8f2d78b179d4b5f733a77e3eef57aff
    kotlin-native-macos-x86_64-1.7.22.tar.gz 153fa411fa8c993ce2635e2504e9b102cb05362cc794b66ef9def26a78b427b5
    kotlin-native-macos-aarch64-1.7.22.tar.gz 4ffcd76c77cc824eff8addd5e2a73da4f3bbd3584fa9ef282b3f669c45426b1e
    kotlin-native-windows-x86_64-1.7.22.zip 3bccd23479848ec61c56ed5760010456d17acbe88a00a1f10fb38eae256f2e92
    Commits
    • be3c5a5 Instruction for building 1.7.21 release
    • 80eb82a Instructions for building 1.7.20 release
    • cb51803 Scripts for building Kotlin repository
    • 7784d10 Change bootstrap to 1.7.21-release-254
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump jvm from 1.7.21 to 1.8.0

    Bump jvm from 1.7.21 to 1.8.0

    Bumps jvm from 1.7.21 to 1.8.0.

    Release notes

    Sourced from jvm's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from jvm's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump kotlin-test-junit5 from 1.7.21 to 1.8.0

    Bump kotlin-test-junit5 from 1.7.21 to 1.8.0

    Bumps kotlin-test-junit5 from 1.7.21 to 1.8.0.

    Release notes

    Sourced from kotlin-test-junit5's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-test-junit5's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump kotlin-stdlib from 1.7.21 to 1.8.0

    Bump kotlin-stdlib from 1.7.21 to 1.8.0

    Bumps kotlin-stdlib from 1.7.21 to 1.8.0.

    Release notes

    Sourced from kotlin-stdlib's releases.

    Kotlin 1.8.0

    Changelog

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend

    ... (truncated)

    Changelog

    Sourced from kotlin-stdlib's changelog.

    1.8.0

    Analysis API

    • KT-50255 Analysis API: Implement standalone mode for the Analysis API

    Analysis API. FIR

    • KT-54292 Symbol Light classes: implement PsiVariable.computeConstantValue for light field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/kotlin source set folder

    Backend. Native. Debug

    • KT-53561 Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"

    Compiler

    New Features

    • KT-52817 Add @JvmSerializableLambda annotation to keep old behavior of non-invokedynamic lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-32208 Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
    • KT-53438 Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage

    Performance Improvements

    • KT-53347 Get rid of excess allocations in parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-54393 Change in behavior from 1.7.10 to 1.7.20 for java field override.
    • KT-55357 IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-55065 Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend

    ... (truncated)

    Commits
    • da1a843 Add ChangeLog for 1.8.0-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump mockk from 1.13.2 to 1.13.3

    Bump mockk from 1.13.2 to 1.13.3

    Bumps mockk from 1.13.2 to 1.13.3.

    Release notes

    Sourced from mockk's releases.

    V1.13.3

    What's Changed

    New Contributors

    Full Changelog: https://github.com/mockk/mockk/compare/1.13.2...1.13.3

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump io.gitlab.arturbosch.detekt from 1.21.0 to 1.22.0

    Bump io.gitlab.arturbosch.detekt from 1.21.0 to 1.22.0

    Bumps io.gitlab.arturbosch.detekt from 1.21.0 to 1.22.0.

    Release notes

    Sourced from io.gitlab.arturbosch.detekt's releases.

    v1.22.0-RC3

    1.22.0-RC3 - 2022-11-06

    Notable Changes
    • We're introducing the Detekt Marketplace, a place where you can add your own 3rd party extension such as rule, plugins, custom reporter, etc. - #5191
    • Our website is now versioned. You can find the changes for each version using the dropdown menu on the top bar. Documentation for the upcoming version (next) can be found here.
    • We added 16 new Rules to Detekt
      • AlsoCouldBeApply - #5333
      • MultilineRawStringIndentation - #5058
      • TrimMultilineRawString - #5051
      • UnnecessaryNotNullCheck - #5218
      • UnnecessaryPartOfBinaryExpression - #5203
      • UseSumOfInsteadOfFlatMapSize - #5405
      • FunctionReturnTypeSpacing from KtLint - #5256
      • FunctionSignature from KtLint - #5256
      • FunctionStartOfBodySpacing from KtLint - #5256
      • NullableTypeSpacing from KtLint - #5256
      • ParameterListSpacing from KtLint - #5256
      • SpacingBetweenFunctionNameAndOpeningParenthesis from KtLint - #5256
      • TrailingCommaOnCallSite from KtLint - #5312
      • TrailingCommaOnDeclarationSite from KtLint - #5312
      • TypeParameterListSpacing from KtLint - #5256
    • We added a new ruleset called detekt-rules-ruleauthors containing rules for Rule Authors to enforce best practices on Detekt rules such as the new ViolatesTypeResolutionRequirements - #5129 #5182
    • We added a new ruleset called detekt-rules-libraries containing rules mostly useful for Library Authors - We moved the following rules inside ForbiddenPublicDataClass, LibraryCodeMustSpecifyReturnType, LibraryEntitiesShouldNotBePublic this new ruleset - See Migration below on how to migrate #5360
    • We added support for JVM toolchain. This means that Detekt will now respect the JDK toolchain you specify on your Gradle configuration. You will also be able to specify a custom JDK home with the --jdk-home CLI parameter - #5269
    • Improvement for Type Resolution
      • We will now skip rules annotated with @RequiresTypeResolution when without Type Resolution - #5176
      • We will warn users if they run rules requiring Type Resolution when Type Resolution is disabled, so they're not silently skipped - #5226
    • Improvement for Config Management
      • We added exhaustiveness check during config validation. You can enable it checkExhaustiveness: true in your config file. This is disabled by default. - #5089
      • We added support for generating custom configuration for rule authors - #5080
    • Deprecations & Removals
      • We deprecated the MultiRule class as it was overly complicated. The suggested approach is to just provide separated rules. - #5161
      • The --fail-fast CLI flag (and failFast Gradle property) has been removed. It was deprecated since 1.16.x - #5290
      • We deprecated the following rules DuplicateCaseInWhenExpression, MissingWhenCase, RedundantElseInWhen as the Kotlin Compiler is already reporting errors for those scenarios - #5309
      • We removed the --print-ast CLI flag as PsiViewer provides the same features - #5418
    • Notable changes to existing rules
      • ArrayPrimitive is now working only with Type Resolution - #5175
      • WildcardImport is now running also on tests by default - #5121
      • ForbiddenImport allows now to specify a reason for every forbidden import - #4909
      • IgnoredReturnValue: option restrictToAnnotatedMethods is now deprecated in favor of restrictToConfig - #4922
    • This version of Detekt is built with Gradle v7.5.1, AGP 7.3.1, Kotlin 1.7.20 and KtLint 0.47.1 (see #5363 #5189 #5411 #5312
    • The minimum supported Gradle version is now v6.7.1 - #4964
    Migration

    We deprecated a number of rules in this release.

    You should update your config file as follows:

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • shellRun hangs if output is large

    shellRun hangs if output is large

    Describe the bug If the output of a shell command is really large then shellRun will hang

    Checklist

    To Reproduce run a command like git cat-file -p origin/main:<some-big-file>. In our case the file was a 4000 line long OpenAPI spec.

    Expected behavior Dumps file output

    opened by pwerry 1
Releases(v0.8.0)
Owner
Andrew Lord
Lead Mobile Developer @GetBusyHQ. Builder of Android and iOS apps. Blogs at lordcodes.com. Avid gamer and music fan. All views and opinions shared are my own.
Andrew Lord
A composite Github Action to execute the Kotlin Script with compiler plugin and dependency caching!

Kotlin Script Github Action Kotlin can also be used as a scripting language, which is more safer, concise, and fun to write than bash or python. Githu

Suresh 9 Nov 28, 2022
A Kotlin Script which Auto-Create And Assign Gitlab MergeRequests

A Kotlin Script which create merge request automatically and assign it to a developer for review based on a startegy(Currently Queue).

Hamidreza Sahraei 6 Jun 7, 2022
Uproot-JS - Extract JavaScript files from burp suite project with ease

Extract JavaScript files from burp suite project with ease. Disclaimer I am not

Dexter0us 50 Aug 8, 2022
🤝 Link your Fabric server and Discord with ease!

Fabric2Discord Link your Fabric server and Discord with ease! ?? Getting Started I wrote few helpful articles about this mod, so if you need help you

Igor Ryzhenkov 10 Oct 25, 2022
Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs

Zipline This library streamlines using Kotlin/JS libraries from Kotlin/JVM and Kotlin/Native programs. It makes it possible to do continuous deploymen

Cash App 1.5k Dec 30, 2022
Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.

Codename One - Cross Platform Native Apps with Java or Kotlin Codename One is a mobile first cross platform environment for Java and Kotlin developers

Codename One 1.4k Jan 9, 2023
:bouquet: An easy way to persist and run code block only as many times as necessary on Android.

Only ?? An easy way to persist and run code block only as many times as necessary on Android. Download Gradle Add below codes to your root build.gradl

Jaewoong Eum 479 Dec 25, 2022
:bouquet: An easy way to persist and run code block only as many times as necessary on Android.

Only ?? An easy way to persist and run code block only as many times as necessary on Android. Download Gradle Add below codes to your root build.gradl

Jaewoong Eum 468 Apr 14, 2021
Gradle plugin adding a task to run a Paper Minecraft server

Run Paper Run Paper is a Gradle plugin which adds a task to automatically download and run a Paper Minecraft server along with your plugin built by Gr

Jason 64 Dec 29, 2022
Run Minecraft on the command line

HeadlessForge While headless Minecraft Clients aren't anything new, they come with a drawback. The Minecraft API is missing and you need to add all fu

null 28 Oct 17, 2022
Actions are things that run, with parameters. Serves as a common dependency for a variety of Cepi extensions.

Actions Actions that take in customizable paramaters, an optional target, and do things. Installation Download the jar from Releases OR compile it you

Cepi 1 Jan 9, 2022
Android app with minimal UI to run snowflake pluggable transports proxy, based on library IPtProxy

Simple Kotlin app for testing IPtProxy's snowflake proxy on Android Essentially a button for starting and stopping a Snowflake Proxy with the default

null 2 Jun 26, 2022
Solid - A CLI that tries to cover a dry-run phase for liquibase database change management

solid a CLI that tries to cover a dry-run phase for liquibase database change ma

Giovanni Panice (mos_) 1 Jan 28, 2022
Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in Kotlin with Jetpack Compose and a backed in Kotlin hosted on AppEngine.

Conferences4Hall Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in K

Gérard Paligot 98 Dec 15, 2022
Create an application with Kotlin/JVM and Kotlin/JS, and explore features around code sharing, serialization, server- and client

Practical Kotlin Multiplatform on the Web 본 저장소는 코틀린 멀티플랫폼 기반 웹 프로그래밍 워크숍(강좌)을 위해 작성된 템플릿 프로젝트가 있는 곳입니다. 워크숍 과정에서 코틀린 멀티플랫폼을 기반으로 프론트엔드(front-end)는 Ko

SpringRunner 14 Nov 5, 2022
Create an application with Kotlin/JVM and Kotlin/JS, and explore features around code sharing, serialization, server- and client

Building a Full Stack Web App with Kotlin Multiplatform 본 저장소는 INFCON 2022에서 코틀린 멀티플랫폼 기반 웹 프로그래밍 핸즈온랩을 위해 작성된 템플릿 프로젝트가 있는 곳입니다. 핸즈온 과정에서 코틀린 멀티플랫폼을

Arawn Park 19 Sep 8, 2022
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Jan 4, 2023
An example for who are all going to start learning Kotlin programming language to develop Android application.

Kotlin Example Here is an example for who are all going to start learning Kotlin programming language to develop Android application. First check this

Prabhakar Thota 56 Sep 16, 2022
Stateful is a Kotlin library which makes Android application development faster and easier.

Stateful Stateful is a Kotlin library which makes Android application development faster and easier. It helps you delete all the boilerplate code for

PicsArt 67 Oct 3, 2022