Comments (9)
Another option for the tool name is something like minver-cli
, which would play nicer with dotnet tool list -g
:
Package Id Version Commands
-------------------------------------------------
dotnet-outdated 2.0.0 dotnet-outdated
dotnet-script 0.25.0 dotnet-script
git-status-cli 1.0.0 git-status
Again, my OCD is averse to adding a PascalCased.WithDots
package ID to that list.
from minver.
After more thought, I'm homing in on these names as my favourites (for both project and package):
MinVer
: The canonical package. Just install into a project and build.minver-cli
: The tool package, with command nameminver
.MinVer.Lib
: The class lib used by both the above packages. I don't think there's any point in publishing a package until a use case arises. For now, that allows us to break the interface freely.
@bording does that make things clearer?
from minver.
One thing I'm not keen on is MinVer.Core
. I think I'd be less averse to MinVer.Lib
. I've never liked the "core" naming strategy. One option is to keep the class lib named MinVer
, but it may desirable to publish that as it's own package at some point, and the current build package is occupying that package name. Still, the package hasn't gone past alpha yet, so that package name could be repurposed for this instead.
Regarding the tool package, it's tempting to call it minver
, but again, that slot (case-insensitive) is already taken up the current build package. But since the command name can be controlled independently, it can be called something else. Still, it's a shame not to be able to write dotnet tool install -g minver
and then then minver
. The problem is, the package is currently pascal cased, MinVer
, and I don't think that can be changed now. dotnet tool install MinVer
, dotnet minver
, isn't much nicer than dotnet tool install MinVer.XXX
, minver
.
So here are some options:
Project | Package | Description |
---|---|---|
MinVer /MinVer.Build /MinVer.MSBuild /MinVer.Targets /MinVer.Task |
(same as project) | For use in .NET SDK projects (canonical usage). MinVer would require a rename of the class lib. |
MinVer.Cli /MinVer.Tool /MinVer.CommandLine /dotnet-minver |
(same as project) | For ad-hoc use in any Git repo. The command name in all cases would be minver . |
MinVer /MinVer.Lib /MinVer.Core |
(same as project)/(none) | For programmatic use on a netstandard2.0 + platform (not entirely sure if we need this yet) |
(none) | MinVer /(none) |
A meta-package representing the canonical usage. Just takes a dep on the build package (or just de-list this package and stop publishing it) |
from minver.
For reference: https://github.com/natemcmaster/dotnet-tools
from minver.
@adamralph I'm having some trouble understanding the options you've presented.
from minver.
What about following the same convention here: https://github.com/RetireNet/dotnet-retire
dotnet tool install -g dotnet-minver
dotnet minver
from minver.
@thefringeninja I think I prefer the command name to be just minver
. Commands like dotnet watch
and dotnet retire
are specifically designed for use with .NET SDK projects so it makes sense that you invoke them as a sub-command of dotnet
. The MinVer CLI is useful for any git repo, and I think it makes more sense when you're in a nodejs, ruby, or go repo to be typing just minver
rather than dotnet minver
.
from minver.
@adamralph That does make things much clearer, thanks! I like those names for the projects as well.
With that project structure, I assume the actual commandline code would be in the minver-cli
project, and then the MinVer
project would have something that gets a copy of minver-cli
output to bundle into its package?
Then, in the future, MinVer
could change to being an MSBuild task, removing the need to bundle minver-cli
, and everything is still layered properly.
from minver.
@bording it's slightly different to that. For now, MinVer
will remain as a CLI project, since it needs to do MSBuild-specific logging in its Main
method. Effectively, it is emulating an MSBuild task, and the values it accepts for the verbosity
option reflect that. minver-cli
will have no MSBuild knowledge. When MinVer
changes to an MSBuild task, that will be a purely internal change in that project to switch from invoking the CLI via the Exec
task to using the MinVer
task (or whatever it's called).
from minver.
Related Issues (20)
- Package version without preview suffix HOT 1
- 4.0.0 release
- CS7035 - The specified version string does not conform to the recommended format - major.minor.build.revision HOT 7
- Again a case for "autoincrement=none" HOT 2
- Tags are ignore when using tag prefixes in repository with mupltiple projects HOT 3
- Fails on `osx-arm64` HOT 9
- .NET 6 binaries HOT 2
- 4.1.0 release
- Error when git not installed HOT 5
- Produce an MSBuild error when "git" is not present in PATH HOT 2
- Remove redundant MSB3073 error when a MinVer MSBuild error is produced HOT 1
- MinVer in WPF projects HOT 6
- 4.2.0 release
- Allow tags with the format v1.0 or v1.1 HOT 4
- 4.3.0 release
- Tags ignored with actions/checkout@v3 HOT 2
- Do not include MinVerBuildMetadata in PackageVersion HOT 5
- Allow for disabling the pre-release additions by a property value HOT 4
- disable MinVerAutoIncrement HOT 5
- 5.0.0 release
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from minver.