PowerShellForGitHub/CHANGELOG.md

45 KiB

PowerShellForGitHub PowerShell Module

Changelog

0.15.1 - (2020/09/09)

Fixes:

  • Fixed the default LogPath when no user profile is available (like in the situation of running within the context of an Azure Function App). The alternate default log path in this scenario will now be the LocalApplicationDataFolder. [pr] | [cl]

Authors:


0.15.0 - (2020/08/16)

Overview:

This is a significant update that has a number of breaking changes amongst its payload that existing users need to be made aware of.

Highlights:

  • Complete pipeline support has been added to the module. You can now pipe the output of almost any command as input to almost any command. Every command output now has a specific GitHub.* type that is queryable as well.

  • Major performance increase. It turns out that showing animated status would make an operation take 3 seconds that would otherwise take 1/4 second due to performance issues with ProgressBar. We no longer show status except for commands that 10+ pages of results which we must query for, and that minimum can be changed with a new configuration property: multiRequestProgressThreshold (set it to 0 to never see any progress).

  • Lots of new functionality added:

    • Full support for gists: Get-GitHubGist, Remove-GitHubGist, Copy-GitHubGist (aka Fork-GitHubGist), Add-GitHubGistStar, Remove-GitHubGistStar, Set-GitHubGistStar, Test-GitHubGistStar, New-GitHubGist, Set-GitHubGist, Rename-GitHubGistFile, Remove-GitHubGistFile, Set-GitHubGistFile (akaAdd-GitHubGistFile), Get-GitHubGistComment, Set-GitHubGistComment, New-GitHubGistComment, Remove-GitHubGistComment

    • Full support for Releases: New-GitHubRelease, Set-GitHubRelease, Remove-GitHubRelease, Get-GitHubReleaseAsset, New-GitHubReleaseAsset, Set-GitHubReleaseAsset, Remove-GitHubReleaseAsset

    • Improved support for Teams: New-GitHubTeam, Set-GitHubTeam, Remove-GitHubTeam, Rename-GitHubTeam

    • Dependabot support: Test-GitHubRepositoryVulnerabilityAlert, Enable-GitHubRepositoryVulnerabilityAlert, Disable-GitHubRepositoryVulnerabilityAlert, Enable-GitHubRepositorySecurityFix, Disable-GitHubRepositorySecurityFix

    • New Repository-related commands: New-GitHubRepositoryFromTemplate, Set-GitHubContent, New-GitHubRepositoryBranch, Remove-GitHubRepositoryBranch, Get-GitHubRepositoryBranchProtectionRule, New-GitHubRepositoryBranchProtectionRule, Remove-GitHubRepositoryBranchProtectionRule

    • New Reaction support added for issues and pull requests: Get-GitHubReaction, Set-GitHubReaction, Remove-GitHubReaction

  • Default formatters have been added for many (but not yet all) of the types introduced by this module. Formatter support will be increased over the coming releases.

  • No longer has any external dependencies. Previously had to download .NET assemblies in order to send telemetry, which made the initial commands take up much more time than needed. With no eternal dependencies involved anymore, telemetry is lightning-fast with negligible impact to normal command execution.

Breaking Changes

Stardized naming (and verb usage) throughout the module

  • A number of commands have been renamed to follow the pattern that we're standardizing on: Get / Set / New / Remove (but we will continue to alias Remove-* as Delete-*).

    • That resulted in the following command renames:
      • Get-GitHubComment -> Get-GitHubIssueComment [Alias('Get-GitHubComment)]
      • New-GitHubAssignee -> Add-GitHubAssignee [Alias('New-GitHubAssignee')]
      • New-GitHubComment -> New-GitHubIssueComment [Alias('New-GitHubComment)]
      • Remove-GitHubComment -> Remove-GitHubIssueComment [Alias('Remove-GitHubComment)]
      • Set-GitHubLabel -> Initialize-GitHubLabel [breaking behavior due to the Update-GitHubLabel change below]`
      • Update-GitHubCurrentUser -> Set-GitHubProfile [Alias('Update-GitHubCurrentUser')]
      • Update-GitHubIssue -> Set-GitHubIssue [Alias('Update-GitHubIssue')]
      • Update-GitHubLabel -> Set-GitHubLabel [Alias('Update-GitHubLabel')] [breaking behavior since Set-GitHubLabel used to do something else]
      • Update-GitHubRepository -> Set-GitHubRepository [Alias('Update-GitHubRepository')]
  • The following parameter renames occurred as well:

    • Add-GitHubIssueLabel: Name -> Label
    • Get-GitHubCodeOfConduct: Name -> Key
    • Get-GitHubProjectCard: ArchivedState -> State (although we kept an alias for ArchivedState)
    • Get-GitHubLabel: Name -> Label, Milestone -> MilestoneNumber
    • Get-GitHubLicense: Name -> Key
    • Get-GitHubRelease: ReleaseId -> Release (although we kept an alias for ReleaseId)
    • Get-GitHubRepositoryBranch: Name -> BranchName
    • Get-GitHubUser: User -> UserName (although we kept an alias for User)
    • Get-GitHubUserContextualInformation: There is no longer SubjectId and Subject. Instead you either specify OrganizationId, RepositoryId, IssueId or PullRequestId.
    • Move-GitHubProjectCard: ColumnId -> Column (although we kept an alias for ColumnId)
    • New-GitHubLabel: Name -> Label
    • New-GitHubProject: Name -> ProjectName (although we kept an alias for Name)
    • New-GitHubProjectCard: There is no longer ContentId and ContentType. Instead you either specify IssueId or PullRequestId.
    • New-GitHubProjectColumn: Name -> ColumnName (although we kept an alias for Name)
    • Remove-GitHubIssueLabel: Name -> Label
    • Remove-GitHubLabel: Name -> Label
    • Rename-GitHubRepository: html_url alias for Uri has been removed
    • Set-GitHubIssueLabel: Name -> Label
    • Set-GitHubLabel (formerly Update-GitHubLabel): Name -> Label
    • Set-GitHubProjectColumn: Name -> ColumnName (although we kept an alias for Name)
    • Set-GitHubRepositoryTopic: Name -> Topic (although we kept an alias for Name)

Other breaking changes

  • All Remove-* functions (and some Rename-*/Set-* functions) now prompt for confirmation before performing the requested action. This can be silently bypassed by passing-in -Confirm:$false or -Force.

    • Affected commands that existed in previous releases:
      • Remove-GitHubAssignee
      • Remove-GitHubIssueComment (formerly named Remove-GitHubComment)
      • Remove-GitHubIssueLabel
      • Remove-GitHubLabel
      • Remove-GitHubMilestone
      • Remove-GitHubProject
      • Remove-GitHubProjectCard
      • Remove-GitHubProjectColumn
      • Remove-GitHubRepository
      • Rename-GitHubRepository
      • Set-GitHubLabel (formerly named Update-GitHubLabel)
      • Set-GitHubRepository (only affected when being used to rename the repository)
  • Some parameters have had their type updated:

    • Comment: [string] -> [int64]
    • Issue/IssueNumber: [string]/[int] -> [int64]
    • Milestone/MilestoneNumber: [string] -> [int64]
    • PullRequest/PullRequestNumber: [string]/[int] -> [int64]
    • Release/ReleaseId: [string] -> [int64]
  • WhatIf support changes:

    • Only GitHub state-changing commands now support -WhatIf (which means Get-GitHub* and Test-GitHub* no longer support -WhatIf).
    • All other -WhatIf-supporting commands will only have a single -WhatIf output.
  • The NoStatus parameter has been removed from all functions due to the change in status behavior as descried above. The DefaultNoStatus configuration value has also been removed for the same reason.

  • All state-changing functions are now silent by default (no resulting output). If you want them to return the result, you can pass in -PassThru, which is a PowerShell standard design pattern. To truly get back to previous module behavior, you can set the new configuration property: DefaultPassThru.

  • Get-GitHubTeam and Get-GitHubTeamMember no longer support the TeamId parameter, as that functionality has been deprecated by GitHub. You can use TeamSlug instead.

Features:

  • Complete pipeline support has been added to the module. You can now pipe the output of almost any command as input to almost any command. Every command output now has a specific GitHub.* type that is queryable as well. [pr] | [cl]

  • All removal functions (and some rename functions) now prompt for confirmation. This can be silently disabled with -Confirm:$false. A later change will add support for using -Force as well. [pr] | [cl]

  • All commands that require confirmation now accept -Force in addition to -Confirm:$false. [pr] | [cl]

  • Telemetry no longer has any external dependencies. We used to have to download .NET assemblies in order to send telemetry, and the downloading of those binaries took up time. Telemetry reporting has now been completely implemented within PowerShell, removing all external dependencies. [pr] | [cl]

  • Added additional options to Update-GitHubRepository (later renamed to Set-GitHubRepository): DeleteBranchOnMerge and IsTemplate [pr] | [cl]

  • Added Dependabot service functions: Test-GitHubRepositoryVulnerabilityAlert, Enable-GitHubRepositoryVulnerabilityAlert, Disable-GitHubRepositoryVulnerabilityAlert, Enable-GitHubRepositorySecurityFix, Disable-GitHubRepositorySecurityFix [pr] | [cl]

  • Added New-GitHubRepositoryFromTemplate which can create a new GitHub repository from a specified template repository. [pr] | [cl]

  • Added Set-GitHubContent and added a BranchName parameter to Get-GitHubContent. [pr] | [cl]

  • Added default "views" for all types exposed in GitHubRepositories.ps1: GitHub.Repository, GitHub.RepositoryTopic, GitHub.RepositoryContributor, GitHub.RepositoryContributorStatistics, GitHub.RepositoryCollaborator, GitHub.RepositoryTag [pr] | [cl]

  • Standardized verb usage and parameter naming throughout the module. This is great for long-term maintainability of the module, but it does introduced breaking changes from 0.14.0. The breaking changes are covered more completely, above. [pr] | [cl]

  • Overhauled how status works for the module. No longer shows an animation while invoking a web request. This has the side effect of simplifying the code and significantly speeding-up the module. This deprecates NoStatus and DefaultNoStatus. This adds MultiRequestProgressThreshold to control how many pages of results are needed before a command will show status of completion across the full number of pages being retrieved. This defaults to 10. [pr] | [cl]

  • Added New-GitHubRepositoryBranch and Remove-GitHubRepositoryBranch [pr] | [cl]

  • Updated New-GitHubRepositoryBranch to better support pipeline input, and added Sha as an optional parameter to allow for arbitrary commit branch creation. Also added Sha as a top-level property to a GitHub.Branch object. [pr] | [cl]

  • Added GitHub Reactions support for Issues and Pull Requests: Get-GitHubReaction, Set-GitHubReaction, Remove-GitHubReaction [pr] | [cl]

  • Added complete support for the GitHub Releases API surface: New-GitHubRelease, Set-GitHubRelease, Remove-GitHubRelease, Get-GitHubReleaseAsset, New-GitHubReleaseAsset, Set-GitHubReleaseAsset, Remove-GitHubReleaseAsset [pr] | [cl]

  • Added complete support for the GitHub gists API surface: Get-GitHubGist, Remove-GitHubGist, Copy-GitHubGist (aka Fork-GitHubGist), Add-GitHubGistStar, Remove-GitHubGistStar, Set-GitHubGistStar, Test-GitHubGistStar, New-GitHubGist, Set-GitHubGist, Rename-GitHubGistFile, Remove-GitHubGistFile, Set-GitHubGistFile (akaAdd-GitHubGistFile), Get-GitHubGistComment, Set-GitHubGistComment, New-GitHubGistComment, Remove-GitHubGistComment [pr] | [cl]

  • Added branch protection rule commands: Get-GitHubRepositoryBranchProtectionRule, New-GitHubRepositoryBranchProtectionRule, Remove-GitHubRepositoryBranchProtectionRule [pr] | [cl]

  • Standardized and improved the WhatIf support throughout the entire module. [pr] | [cl]

  • Added additional support for Teams: New-GitHubTeam, Set-GitHubTeam, Remove-GitHubTeam, and adds TeamName as an additional way to call into Get-GitHubTeam. [pr] | [cl]

  • Minor improvements to the new Teams commands to better support pipeline input and to provide alternative calling patterns (which can specify a team's slug or parent team's TeamId in order to minimize additional queries that would have to be done internally to complete your request). Added Rename-GitHubTeam as well. This also removes TeamId as a way to call Get-GitHubTeam or Get-GitHubTeamMember, as those API's have been deprecated by GitHub. You can now speficy a TeamSlug instead. [pr] | [cl]

  • All state-changing functions are now silent by default (no resulting output). If you want them to return the result, you can pass in -PassThru, which is a PowerShell standard design pattern. To truly get back to previous module behavior, you can set the new configuration property: DefaultPassThru. [pr] | [cl]

Fixes:

  • Module update check needs to be able to handle when the module in use is newer than the published version (since publication to PowerShellGallery happens a few hours after the version is updated in GitHub). [pr] | [cl]

  • Simplified -WhatIf handling within Invoke-GHRestMethod to only have a single ShouldProcess statement. This was the first attempt at simplifying how -WhatIf should work. There was a successive change that took things further (see below). [pr] | [cl]

  • Fixed exception that occurred when calling Set-GitHubRepositoryTopic with -Clear. [pr] | [cl]

  • Disabled the progress bar for Invoke-WebRequest which greatly improves its performance in PowerShell 5.1. [pr] | [cl]

  • Significantly increased the performance of Get-GitHubContent with some internal changes. [pr] | [cl]

  • Removed positional binding support on Set-GitHubConfiguration to solve a common misconfiguration problem introduced by accidentally setting the wrong configuration value state. [pr] | [cl]

  • The module will now restore the previous state of [Net.ServicePointManager]::SecurityProtocol after performing its operation. [pr] | [cl]

  • Some commands were not properly validating the OwnerName/RepositoryName input due to a misconfiguration. That has now been fixed. [pr] | [cl]

  • Added a ValidateSet to the Affiiliation parameter in Get-GitHubRepository to limit input to the set of permitted options. Comment-based help was updated for Get-GitHubRepositoryCollaborator and Move-GitHubRepositoryOwnership. Removed an unreachable codepath in Get-GitHubRepository. [pr] | [cl]

  • Fixes to module version update checking: Fixed regression introduced by the pipeline work, and suppressed its usage of the progress bar to speed it up further. [pr] | [cl]

  • Fixed pipeline support for the newly added New-GitHubRepositoryFromTemplate. [pr] | [cl]

  • Fixed how numerical configuration values are handled to accommodate behavior differences in PowerShell 5 and PowerShell 7 Core. [pr] | [cl]

  • Fixed pipeline input handling for the newly added Dependabot functions. [pr] | [cl]

  • Removed NoStatus completely from the module to complete the transitional work done for how status is handled in the module. [pr] | [cl]

Authors:


0.14.0 - (2020/05/30)

Features:

  • The module will now asynchronously check for updates up to once per day. This can be disabled if desired with the Set-GitHubConfiguration -DisableUpdateCheck. [pr] | [cl]
  • It turns out that Group-GitHubPullRequest which was written back in 0.2.0 was never actually exported. Now it is. [pr] | [cl]

Fixes:

  • Fixes the behavior of Get-GitHubRepository. It actually had a number of issues: [pr] | [cl]
    • -GetAllPublicRepositories didn't acutally work. Now it does, along with the newly added Since parameters.
    • Fixed the ParameterSet handling for all parameters to make sure that users can only specify the correct combination of parameters.
  • Fixes multi-result behavior across all versions of PowerShell. You can now reliably capture the result of an API call like this: @(Get-GitHubRepository ...) and be assured that you'll get an array result with the proper count of items. As a result, this fixes all remaining failing UT's on PowerShell 7. [pr] | [cl]
  • Fixed an erroneous exception that occurred when calling New-GitHubRepository when specifying a TeamId. [pr] | [cl]
  • The module is now PSScriptAnalyzer clean (again). This also fixed pipeline handling in Group-GitHubPullRequest, Group-GitHubIssue and ConvertFrom-GitHubMarkdown. [pr] | [cl]
  • Fixed some documentation which referenced that private repos were only available to paid GitHub plans. [pr] | [cl]
  • Fixed a bug preventing quering for a specifically named branch with Get-GitHubRepositoryBranch. [pr] | [cl]
  • Correctly fixed the hash that catches whether or not a developer has updated the settings file used when running this module's unit tests. It involved updating the hash and then also ensuring we always check the file out with consistent line endings. [pr] | [cl] && [pr] | [cl]
  • Documentation updates around configuring unattended authentication. [pr] | [cl]

Authors:


0.13.1 - (2020/05/12)

Fixes:

  • Ensure progress bar for Wait-JobWithAnimation gets marked as Completed [pr] | [cl]

Authors:


0.13.0 - (2020/05/12)

Improvement:

  • Migrate REST API progress status to use Write-Progress [pr] | [cl]

Authors:


0.12.0 - (2020/05/12)

Features:

  • Added core support for Projects [pr] | [cl]
  • Added suport for Project Columns [pr] | [cl]
  • Added suport for Project Cards [pr] | [cl]
  • Added sample usage documentation for the new Project API's [pr] | [cl]

Fixes:

  • Minor spelling fixes in documentation throughout module [pr] | [cl]
  • Fixed confirmation message for Rename-GitHubRepository [pr] | [cl]

Authors:


0.11.0 - (2020/04/03)

Features:

Author: @Shazwazza


0.10.0 - (2020/03/02)

Features:

  • Added Rename-GitHubRepository [pr] | [cl]

Author: @mtboren


0.9.2 - (2019/11/11)

Fixes:

  • Reduces the warning noise seen during execution of the unit tests. [pr] | [cl]

Author: @smaglio81


0.9.1 - (2019/09/24)

Fixes:

  • Ensure Milestone due_on always gets set to the desired date. (Attempts to work around odd GitHub behavior which uses PST/PDT's midnight to determine the date instead of UTC.) [pr] | [cl]
  • Fix Update-GitHubRepository to work correctly
    • The REST endpoint had a typo in it [pr] | [cl]
    • The Archived switch's value was being incorrectly inverted [pr] | [cl]

Author: @HowardWolosky


0.9.0 - (2019/09/19)

Features:

Fixes:

  • Updates the GitHub Enterprise support to use the http(s)://[hostname]/api/v3 syntax instead of the non-standard http(s)://api.[hostname]/ syntax. [pr] | [cl]
  • Minor Comment Based Help (CBH) update for Get-GitHubRepository [pr] | [cl]

Authors:


0.8.0 - (2019/04/12)

Features:

  • Added support for GitHub Enterprise users by adding a new ApiHostName configuration value. (more info) [pr] | [cl]

Fixes:

  • Renamed ConvertFrom-Markdown to ConvertFrom-GitHubMarkdown to avoid a conflict with PSCore's new ConvertFrom-Markdown command. [pr] | [cl]

Authors:


0.7.0 - (2019/03/15)

Features:

  • Added Test-GitHubOrganizationMember to test if a user is in an organization. [pr] | [cl]
  • Updated Get-GitHubTeamMember to optionally work directly with a TeamId. [pr] | [cl]

Fixes:

  • Modified all [int] parameters to be [int64] to avoid out of bounds issues with large ID's. [pr] | [cl]
  • Split-GitHubUri updated to work with the https://api.github.com/* uri's included in some of the REST responses. [pr] | [cl]

Author: @HowardWolosky


0.6.4 - (2019/01/16)

Fixes:

  • Updated the *-GitHubIssue functions to support specifying the MediaType that should be used for the returned result. [pr] | [cl]

Author: @joseartrivera


0.6.3 - (2019/01/07)

Fixes:

  • Updated all parameter sets to use CamelCase for the permitted options, and stopped any use of abbreviation, to be more consistent with the rest of PowerShell. [pr] | [cl]

Author: @HowardWolosky


0.6.2 - (2018/12/13)

Fixes:

  • Fixes a bug preventing Labels from being correctly added at the time of new Issue creation or modified when updating an issue. {[pr] | [cl] and [pr] | [cl]}

Authors:


0.6.1 - (2018/12/13)

Fixes:

  • Fixes a bug with checking Issues. When trying to list all issues, it tried to speficially look for Issue 0. [pr] | [cl]

Authors:


0.6.0 - (2018/12/13)

Features:

  • Completes all support for GitHub Issue API's:
  • Added new LogRequestBody configuration option to help with development, allowing you to see the exact body of the REST request being sent before it is sent over the wire. [pr] | [cl]

Authors:


0.5.0 - (2018/11/30)

Features:

Fixes:

  • Fixed bug that caused single or empty arrays returned within objects to be flattened (instead of remaining as arrays) [pr] | [cl]

Authors:


0.4.0 - (2018/11/16)

Features:

Fixes:

  • Made NuGet dll retrieval more robust by preventing potential file access problems from being written to the error stream. [pr] | [cl]
  • Prevented the possibility of Access Tokens from being written into the log file in plain text if explicitly passed-in [pr] | [cl]

Authors:


0.3.1 - (2018/11/13)

Fixes:

  • Minor static analysis issues fixed.
  • Corrected name of the test file for GitHubRepositoryForks
  • Ensured the getParams are used during execution of Get-GitHubRepositoryFork

More Info: [pr] | [cl]

Author: @HowardWolosky


0.3.0 - (2018/11/13)

Features:

  • Added support for querying forks and creating new ones.

Fixes:

  • Will only perform a retry when receiving a 202 response on a GET request. Previously, it would retry regardless of the method of the request.

More Info: [pr] | [cl]

Author: @HowardWolosky


0.2.0 - (2018/11/13)

Features:

  • Significant restructing and refactoring of entire module to make future expansion easier.
  • Significant documentation updates (CHANGELOG, CONTRIBUTING.md, GOVERNANCE.md, README.md, USAGE.md)
  • Added Set-GitHubAuthentication (and related methods) for securely caching the Access Token
  • Added Set-GitHubConfiguration (and related methods) to enable short and long-term configuration of the module.
  • Added ability to asynchronously see status update of REST requests.
  • Added logging and telemetry to the module (each can be disabled if desired).
  • Tests now auto-configure themselves across whatever account information is supplied in Tests/Config/Settings.ps1
  • Added support for a number of additional GitHub API's:
    • All Miscellaneous API's
    • Ability to fully query, update, remove, lock, and unlock Issues.
    • Enhanced pull request querying support
    • Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages.
    • Enhanced user query support as well as being able update information for the current user.

Fixes:

  • Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName)
  • Normalized all parameters to use SentenceCase
  • All functions that can take a Uri or OwnerName/RepositoryName now support both options.
  • Made all parameter names consistent across functions:
    • GitHubAccessToken -> AccessToken
    • RepositoryUrl -> Uri
    • Organization -> OrganizationName
    • Repository -> RepositoryName
    • Owner -> OwnerName
  • Normalized usage of Verbose, Info and Error streams

Functionality Modified from 0.1.0:

  • New-GitHubLabels was renamed to Set-GitHubLabel and can now optionally take in the labels to apply to the Repository.
  • Get-GitHubIssueForRepository has been removed and replaced with Get-GitHubIssue. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into Where-Object now that the returned objects from Get-GitHubIssue have actual [DateTime] values for the date properties. For an updated example of doing this, refer to example usage.
  • Get-GitHubWeeklyIssueForRepository has been removed and functionally replaced by Group-GitHubIssue. For an updated example of using it, refer to example usage
  • Get-GitHubTopIssueRepository has been removed. We have updated examples for how to accomplish the same scenario.
  • Get-GitHubPullRequestForRepository has been removed and replaced with Get-GitHubPullRequest. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into Where-Object now that the returned objects from Get-GitHubPullRequest have actual [DateTime] values for the date properties. For an updated example of doing this, refer to example usage.
  • Get-GitHubWeeklyPullRequestForRepository has been removed and functionally replaced by Group-GitHubPullRequest. For an updated example of using it, refer to example usage
  • Get-GitHubTopPullRequestRepository has been removed. We have updated examples for how to accomplish the same scenario.
  • Get-GitHubRepositoryNameFromUrl and GitHubRepositoryOwnerFromUrl have been removed and functionally replaced by Split-GitHubUri
  • Get-GitHubRepositoryUniqueContributor has been removed. We have an updated example for how to accomplish the same scenario.
  • GitHubOrganizationRepository has been removed. You can now retrieve repositories for an organization via Get-GitHubRepository -OrganizationName <name>.
  • Get-GitHubAuthenticatedUser has been replaced with Get-GitHubUser -Current.

More Info: [pr] | [cl]

Author: @HowardWolosky


0.1.0 - (2016/11/29)

Features:

  • Initial public release

More Info: [cl]

Author: @KarolKaczmarek