Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separating lib from cli #655

Merged
merged 16 commits into from Mar 29, 2022
Merged

Conversation

heynemann
Copy link
Contributor

@heynemann heynemann commented Mar 22, 2022

This PR corresponds to issue #654.

It extends Revive usage as a library to more than just cli usage. Clients can now use parts of the revive workflow (Lint, Format) and pass configuration to the flow themselves, instead of loading from a toml file.

After this PR users can use the library with:

        // removed error handling for clarity
	conf, _ := config.GetConfig("./defaults.toml")

	revive, _ := revivelib.New(
		conf,  // config
		true,  // set exit code
		2048,  // max open files
		[]string{"./tests"},  // exclude
		revivelib.NewExtraRule(&mockRule{}, lint.RuleConfig{}),  // extra rules
	)

	// Now they can lint
     	failuresChan, _ := revive.Lint("../testdata/if-return.go")

	// Get the []lint.failure list
        failureList := revive.GetLintFailures(failuresChan)

        // Or just get the formatted output and exit code
	failures, exitCode, _ := revive.Format("stylish", failuresChan)

@heynemann
Copy link
Contributor Author

@chavacava can you review this PR? If you want I can change revivelib to just lib. I just felt like doing:

revive, err := revivelib.New(...)

Feels nicer than lib.New(...).

@heynemann heynemann marked this pull request as ready for review March 22, 2022 03:17
@chavacava
Copy link
Collaborator

Hi @heynemann, I did not forget your PR, I'll try to check it this we. Thanks!

Copy link
Collaborator

@chavacava chavacava left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I've left a couple of comments/questions but nothing relevant.
Let me know when you are ok to merge

cli/main.go Outdated Show resolved Hide resolved
revivelib/core.go Outdated Show resolved Hide resolved
@heynemann
Copy link
Contributor Author

Sorry for the initial low quality of this PR. It feels much better now. If you feel like it is up to par, just merge it :D

@chavacava chavacava merged commit 318db94 into mgechev:master Mar 29, 2022
@chavacava
Copy link
Collaborator

@heynemann thanks for the PR! Nice work.

subham-deepsource pushed a commit to DeepSourceCorp/revive that referenced this pull request Apr 8, 2022
* Separating lib from cli

* Renamed NewRevive to New

* Added GetLintFailures helper function

* Moved formatter to call to format since that's when it's needed

* makes fields of Revive struct non-public

* minor modifs in tests: remove unnamed constats

* Added lint package management to lint command

* README message for using revive as a library

* README formatting

* Removed unused method

* Slightly improved wording in README

* Handling format errors

* Renaming file to better reflect intent

* Refactoring pattern usage

* README heads

* renames excludePaths into excludePatterns

Co-authored-by: Bernardo Heynemann <bernardo.heynemann@coinbase.com>
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
subham-deepsource pushed a commit to DeepSourceCorp/revive that referenced this pull request Aug 5, 2022
* Separating lib from cli

* Renamed NewRevive to New

* Added GetLintFailures helper function

* Moved formatter to call to format since that's when it's needed

* makes fields of Revive struct non-public

* minor modifs in tests: remove unnamed constats

* Added lint package management to lint command

* README message for using revive as a library

* README formatting

* Removed unused method

* Slightly improved wording in README

* Handling format errors

* Renaming file to better reflect intent

* Refactoring pattern usage

* README heads

* renames excludePaths into excludePatterns

Co-authored-by: Bernardo Heynemann <bernardo.heynemann@coinbase.com>
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>
subham-deepsource pushed a commit to DeepSourceCorp/revive that referenced this pull request Aug 5, 2022
* Separating lib from cli

* Renamed NewRevive to New

* Added GetLintFailures helper function

* Moved formatter to call to format since that's when it's needed

* makes fields of Revive struct non-public

* minor modifs in tests: remove unnamed constats

* Added lint package management to lint command

* README message for using revive as a library

* README formatting

* Removed unused method

* Slightly improved wording in README

* Handling format errors

* Renaming file to better reflect intent

* Refactoring pattern usage

* README heads

* renames excludePaths into excludePatterns

Co-authored-by: Bernardo Heynemann <bernardo.heynemann@coinbase.com>
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>
subham-deepsource pushed a commit to DeepSourceCorp/revive that referenced this pull request Aug 5, 2022
* Separating lib from cli

* Renamed NewRevive to New

* Added GetLintFailures helper function

* Moved formatter to call to format since that's when it's needed

* makes fields of Revive struct non-public

* minor modifs in tests: remove unnamed constats

* Added lint package management to lint command

* README message for using revive as a library

* README formatting

* Removed unused method

* Slightly improved wording in README

* Handling format errors

* Renaming file to better reflect intent

* Refactoring pattern usage

* README heads

* renames excludePaths into excludePatterns

Co-authored-by: Bernardo Heynemann <bernardo.heynemann@coinbase.com>
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>
subham-deepsource added a commit to DeepSourceCorp/revive that referenced this pull request Aug 5, 2022
* Separating lib from cli (mgechev#655)

* Separating lib from cli

* Renamed NewRevive to New

* Added GetLintFailures helper function

* Moved formatter to call to format since that's when it's needed

* makes fields of Revive struct non-public

* minor modifs in tests: remove unnamed constats

* Added lint package management to lint command

* README message for using revive as a library

* README formatting

* Removed unused method

* Slightly improved wording in README

* Handling format errors

* Renaming file to better reflect intent

* Refactoring pattern usage

* README heads

* renames excludePaths into excludePatterns

Co-authored-by: Bernardo Heynemann <bernardo.heynemann@coinbase.com>
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* Update the contributors list

Signed-off-by: subham sarkar <subham@deepsource.io>

* Remove debugging output (mgechev#672)

Noticed during migration from our heavily modified "go-lint" to "revive" that there is an additional line printed. I am unsure that the convention for this project is on this, we do not allow adding such a call.

Signed-off-by: subham sarkar <subham@deepsource.io>

* Remove built-in types that existing only for the Go documentation (mgechev#675)

Since these types only exist for documenting Go's standard library there
should be no reason to mark them.

Closes mgechev#673

Signed-off-by: subham sarkar <subham@deepsource.io>

* Fix/677 (mgechev#678)

Signed-off-by: subham sarkar <subham@deepsource.io>

* Lint cleanup (mgechev#679)

Signed-off-by: subham sarkar <subham@deepsource.io>

* add rule datarace (mgechev#683)

Signed-off-by: subham sarkar <subham@deepsource.io>

* Fixes issue mgechev#619 imports-blacklist support regex (mgechev#684)

* Fixes issue mgechev#619 imports-blacklist support regex

* refactors method name and error message

* restores original test cases

Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* fix(var-naming): set node to package name for underscore in package name (mgechev#689)

Setting the entire file AST as the node causes golangci-lint to print
the entire file source as the context, and line and column numbers set
to 1. Point to the package name node instead.

Closes mgechev#688

Signed-off-by: subham sarkar <subham@deepsource.io>

* fix(deps): update module golang.org/x/tools to v0.1.11 (mgechev#696)

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* fix(deps): update github.com/chavacava/garif digest to 908ad76 (mgechev#695)

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* fix(receiver-naming): distinguish types with parameters (mgechev#692)

* fix(receiver-naming): distinguish types with parameters

* chore: run tests using supported Go versions matrix

Signed-off-by: subham sarkar <subham@deepsource.io>

* Make package comment more confident (mgechev#694)

Signed-off-by: subham sarkar <subham@deepsource.io>

* fix(deps): update github.com/chavacava/garif digest to d6fd61e (mgechev#699)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* fix issue mgechev#691 (mgechev#700)

Signed-off-by: subham sarkar <subham@deepsource.io>

* fix(deps): update github.com/chavacava/garif digest to 9351721 (mgechev#702)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* Allow to customize user functions in rule `error-strings` (mgechev#703)

* Allow to customize user functions in rule `error-strings`

* Rollback the Available Rules table format in README

* adds memoization of the rule's configuration

Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* doc: add devlake to README usage (mgechev#704)

Co-authored-by: linyh <yanghui@meri.co>
Signed-off-by: subham sarkar <subham@deepsource.io>

* Check whether the tag name is duplicate or not (mgechev#706)

* Check whether the tag name is duplicate or not

* - minor refactoring
- continues checking tag even if name is repeated

* adds test cases for duplicated tag names

* adds test case with two tag types (json & yaml)

* Fix allow the same tag name in different tag key

* fix checks on protobuf tag names

Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Signed-off-by: subham sarkar <subham@deepsource.io>

* fix mgechev#670 (mgechev#708)

Signed-off-by: subham sarkar <subham@deepsource.io>

* Fix module name

Signed-off-by: subham sarkar <subham@deepsource.io>

Co-authored-by: Bernardo Heynemann <heynemann@gmail.com>
Co-authored-by: Bernardo Heynemann <bernardo.heynemann@coinbase.com>
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
Co-authored-by: mgechev <mgechev@gmail.com>
Co-authored-by: Markus Zimmermann <markus.zimmermann@symflower.com>
Co-authored-by: Markus Zimmermann <markus.zimmermann@nethead.at>
Co-authored-by: Yudai Takada <13041216+ydah@users.noreply.github.com>
Co-authored-by: Ville Skyttä <ville.skytta@iki.fi>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ivan Trubach <mr.trubach@icloud.com>
Co-authored-by: okhowang <3352585+okhowang@users.noreply.github.com>
Co-authored-by: hulk <hulk.website@gmail.com>
Co-authored-by: likyh <l@likyh.com>
Co-authored-by: linyh <yanghui@meri.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants