Skip to content

Commit

Permalink
Update dependency com.github.ajalt.clikt:clikt to v5 (#968)
Browse files Browse the repository at this point in the history
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[com.github.ajalt.clikt:clikt](https://redirect.github.com/ajalt/clikt)
| dependencies | major | `4.4.0` -> `5.0.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>ajalt/clikt (com.github.ajalt.clikt:clikt)</summary>

###
[`v5.0.0`](https://redirect.github.com/ajalt/clikt/blob/HEAD/CHANGELOG.md#500)

[Compare
Source](https://redirect.github.com/ajalt/clikt/compare/4.4.0...5.0.0)

##### Added

-   Publish `iosArm64` and `iosX64` targets.
- Added `NoSuchArgument` exception that is thrown when too many
arguments were given on the command line. Previously, a less specific
`UsageError` was thrown instead.
- Added `CommandLineParser.tokenize` that splits a string into argv
tokens.
- Added `CommandLineParser` that provides functions for parsing and
finalizing commands manually for more control.
- Added `Context.invokedSubcommands` that contains all subcommands of
the current command that are going to be invoked when
`allowMultipleSubcommands` is `true`.
- Added `SuspendingCliktCommand` that has a `suspend fun run` method,
allowing you to use coroutines in your commands.
- Added `ChainedCliktCommand` that allows you to return a value from
your `run` method and pass it to the next command in the chain.
- Added `Context.data` as an alternative to `obj` that allows you to
store more than one object in the context.
-   Added `Context.echoer` to customize how `echo` messages are printed.
- Added `CompletionGenerator` to manually generate completions for a
command.
- Added `Context.exitProcess` which you can use to prevent the process
from exiting during tests.
- Added core module that supports watchOS, tvOS, and wasmWasi targets
and has no dependencies.
- Added more options to `CliktCommand.test` to control the terminal
interactivity.
([#&#8203;517](https://redirect.github.com/ajalt/clikt/pull/517))
- Added `associate{}`, `associateBy{}`, and `associateWith{}` transforms
for options that allow you to convert the keys and values of the map.
([#&#8203;529](https://redirect.github.com/ajalt/clikt/pull/529))
- Added support for aliasing options to other options.
([#&#8203;535](https://redirect.github.com/ajalt/clikt/pull/535))
- Added `limit` and `ignoreCase` parameters to `option().split()`.
([#&#8203;541](https://redirect.github.com/ajalt/clikt/pull/541))
- Support calling `--help` on subcommands when parents have required
parameters.

##### Changed

- In a subcommand with and an `argument()` with `multiple()` or
`optional()`, the behavior is now the same regardless of the value of
`allowMultipleSubcommands`: if a token matches a subcommand name, it's
now treated as a subcommand rather than a positional argument.
- Due to changes to the internal parsing algorithm, the exact details of
error messages when multiple usage errors occur have changed in some
cases.
- **Breaking Change:** Moved the following parameters from
`CliktCommand`'s constructor; override the corresponding properties
instead:

    | removed parameter           | replacement property            |
    |-----------------------------|---------------------------------|
    | `help`                      | `fun help`                      |
    | `epilog`                    | `fun helpEpilog`                |
    | `invokeWithoutSubcommand`   | `val invokeWithoutSubcommand`   |
    | `printHelpOnEmptyArgs`      | `val printHelpOnEmptyArgs`      |
    | `helpTags`                  | `val helpTags`                  |
    | `autoCompleteEnvvar`        | `val autoCompleteEnvvar`        |
    | `allowMultipleSubcommands`  | `val allowMultipleSubcommands`  |
    | `treatUnknownOptionsAsArgs` | `val treatUnknownOptionsAsArgs` |
    | `hidden`                    | `val hiddenFromHelp`            |
- The following methods on `CliktCommand` have been renamed:
`commandHelp` -> `help`, `commandHelpEpilog` -> `epilog`. The old names
are deprecated.
- **Breaking Change:** `CliktCommand.main` and `CliktCommand.parse` are
now extension functions rather than methods.
- **Breaking Change:** `Context.obj` and `Context.terminal`, and
`OptionTransformContext.terminal` are now extension functions rather
than properties.
- **Breaking Change:** The `RenderedSection` and `DefinitionRow` classes
have moved to `AbstractHelpFormatter`.
- Markdown support in the help formatter is no longer included by
default. To enable it, include the `:clikt-markdown` dependency and call
`yourCommand.installMordantMarkdown()` before parsing.
-   Updated Kotlin to 2.0.0

##### Fixed

- Fixed excess arguments not being reported when
`allowMultipleSubcommands=true` and a subcommand has excess arguments
followed by another subcommand.
- Commands with `printHelpOnEmptyArgs=true` will no longer print help if
an option has a value from an environment variable or value source.
([#&#8203;382](https://redirect.github.com/ajalt/clikt/pull/382))

##### Deprecated

- Deprecated `Context.originalArgv`. It will now always return an empty
list. If your commands need an argv, you can pass it to them before you
run them, or set in on the new `Context.data` map.
- Deprecated `Context.expandArgumentFiles`. Use
`Context.argumentFileReader` instead.
- Renamed the following `Context` fields to be more consistent. The old
names are deprecated.

| old name                      | new name                        |
|-------------------------------|---------------------------------|
| `Context.envvarReader`        | `Context.readEnvvar`            |
| `Context.correctionSuggestor` | `Context.suggestTypoCorrection` |
| `Context.argumentFileReader`  | `Context.readArgumentFile`      |
| `Context.tokenTransformer`    | `Context.transformToken`        |

##### Removed

-   Removed previously deprecated experimental annotations.
-   Removed `MordantHelpFormatter.graphemeLength`
-   Removed `TermUi`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44NC4xIiwidXBkYXRlZEluVmVyIjoiMzguODQuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: Zac Sweers <[email protected]>
  • Loading branch information
slack-oss-bot and ZacSweers authored Sep 18, 2024
1 parent 73d6450 commit faa7274
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 20 deletions.
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ agpAlpha = { module = "com.android.tools.build:gradle", version.ref = "agpAlpha"
autoService-annotations = "com.google.auto.service:auto-service-annotations:1.1.1"
autoService-ksp = "dev.zacsweers.autoservice:auto-service-ksp:1.2.0"
bugsnag = "com.bugsnag:bugsnag:3.7.2"
clikt = "com.github.ajalt.clikt:clikt:4.4.0"
clikt = "com.github.ajalt.clikt:clikt:5.0.0"
circuit-foundation = { module = "com.slack.circuit:circuit-foundation", version.ref = "circuit" }
commonsText = "org.apache.commons:commons-text:1.12.0"
composeLints = "com.slack.lint.compose:compose-lint-checks:1.3.1"
Expand Down
7 changes: 4 additions & 3 deletions skippy/src/main/kotlin/com/slack/skippy/CliktSgpLogger.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@
*/
package com.slack.skippy

import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.BaseCliktCommand
import com.slack.sgp.common.SgpLogger

internal fun SgpLogger.Companion.clikt(command: CliktCommand): SgpLogger = CliktSgpLogger(command)
internal fun SgpLogger.Companion.clikt(command: BaseCliktCommand<*>): SgpLogger =
CliktSgpLogger(command)

private class CliktSgpLogger(private val command: CliktCommand) : SgpLogger {
private class CliktSgpLogger(private val command: BaseCliktCommand<*>) : SgpLogger {
override fun debug(message: String) {
command.echo(message)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
*/
package com.slack.skippy

import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.command.SuspendingCliktCommand
import com.github.ajalt.clikt.core.Context
import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.options.required
Expand All @@ -33,18 +34,17 @@ import kotlin.io.path.readText
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.newFixedThreadPoolContext
import kotlinx.coroutines.runBlocking
import okio.FileSystem
import okio.Path.Companion.toOkioPath

/**
* @see AffectedProjectsComputer for most of the salient docs! The inputs in this CLI more or less
* match 1:1 to the properties of that class.
*/
public class ComputeAffectedProjectsCli :
CliktCommand(
help = "Computes affected projects and writes output files to an output directory."
) {
public class ComputeAffectedProjectsCli : SuspendingCliktCommand() {

override fun help(context: Context): String =
"Computes affected projects and writes output files to an output directory."

private val debug: Boolean by
option("--debug", help = "Enable debug logging.").flag(default = false)
Expand Down Expand Up @@ -102,7 +102,7 @@ public class ComputeAffectedProjectsCli :
private val logger = SgpLogger.clikt(this)

@OptIn(DelicateCoroutinesApi::class)
override fun run() {
override suspend fun run() {
val moshi = Moshi.Builder().build()
val dependencyGraph =
ObjectInputStream(serializedDependencyGraph.inputStream()).use {
Expand Down Expand Up @@ -136,15 +136,11 @@ public class ComputeAffectedProjectsCli :
.run(context)
}

runBlocking {
if (parallelism == 1) {
body(Dispatchers.Unconfined)
} else {
logger.lifecycle("Running $parallelism configs in parallel")
newFixedThreadPoolContext(3, "computeAffectedProjects").use { dispatcher ->
body(dispatcher)
}
}
if (parallelism == 1) {
body(Dispatchers.Unconfined)
} else {
logger.lifecycle("Running $parallelism configs in parallel")
newFixedThreadPoolContext(3, "computeAffectedProjects").use { dispatcher -> body(dispatcher) }
}
}
}

0 comments on commit faa7274

Please sign in to comment.