Coder Social home page Coder Social logo

fsprojects / syntacticversioning Goto Github PK

View Code? Open in Web Editor NEW
45.0 8.0 8.0 264 KB

Helper tool to verify semantic version changes based on API surface area changes

License: Other

Batchfile 0.17% F# 94.17% Shell 0.58% C# 4.16% Ruby 0.92%
fsharp semantic-versioning syntactic-versioning

syntacticversioning's Introduction

NuGet Status

SyntacticVersioning

Goal

Be able to get an idea about the semantic version changes based on the surface area changes of a .net assembly.

Developers should be able to use the tool to give a magnitude of any API changes. This is helpful when pushing NuGet-packages from a continuous integration server. Internally used NuGet packages of a .net developer organisation often focus on delivering on business goals; the versioning is easily forgotten. I.e. we want to be able to use this from TeamCity and others.

When upgrading a package you want to know the magnitude of the changes. In many cases the easiest way right now is to upgrade and look at the compilation errors. Having more information directly in NuGet helps.

Integration

  • You can use the SynVer.Lib found on NuGet NuGet Status
  • In order to integrate with FAKE you can use the NuGet NuGet Status

Requirements

SyntacticVersioning requires a local git installation. You can download git from Git Downloads.

Maintainer(s)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)

syntacticversioning's People

Contributors

baronfel avatar dependabot[bot] avatar tomakita avatar wallymathieu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

syntacticversioning's Issues

Allow source to be a nuget package

Description

I'd like to be able to use a previously published nuget package instead of having a dll locally. We could solve this one a few ways.

  • specifying the nuget url
  • another switch type with just a name of a package and version

Known workarounds

Download the nuget package outside the tool on to your local machine

Related information

  • Operating system
  • Branch
  • .NET Runtime, CoreCLR or Mono Version
  • Performance information, links to performance testing scripts

Dependency on chiron

Description

We will take a dependency on chiron

Goals

  • Be able to serialise an assembly surface area to some simple format
  • Have chiron (or other simple tool) as a file reference and that module should be internal.
  • Be able to diff an assembly and serialised in some simple format

Order of enum members

Description

Is the order of enum members a part of an API? For instance if you have something like:

type Enum = | Foo = 0 | Bar = 2 | Qux = 5 | Baz = 3  

that get changed to

type Enum = | Foo = 0 | Bar = 2 | Baz = 3 | Qux = 5  

Is that considered a change?

While for instance this change:

type Enum = | Baz = 3 | Foo = 0 | Bar = 2 | Qux = 5 

that get changed to

type Enum = | Foo = 0 | Bar = 2 | Baz = 3 | Qux = 5  

would change the meaning of

T temp = default(T);

Port fake script to SyntacticVersioning

Description

Port the following script:

https://github.com/wallymathieu/SemVer.FromAssembly/blob/master/SemVer.FromAssembly.FAKE.fsx

The parts that need to be ported are the following:

let bumpVersion magnitude (version:SemVerInfo)=
    match magnitude with
        | Magnitude.Major -> { version with Major=version.Major+1; Minor=0; Patch=0 }
        | Magnitude.Minor -> { version with Minor=version.Minor+1; Patch=0 }
        | Magnitude.Patch -> { version with Patch=version.Patch+1 }
        | m                -> failwithf "Unknown magnitude %s" (m.ToString())

let getMagnitude original new_=
    let maybeMagnitude = SemVer.getMagnitude original new_
    match maybeMagnitude with 
    | Result.Ok m -> m
    | Result.Error err->
        failwithf "Error: %s" err

Expected behavior

  • There might be a need for a new sub library that depends on the Fake.SemVerHelper in order to have a dependency on Fake
  • A script similar to the above should be possible

Version 0.0.1 or 1.0.0 ?

Description

I accidentally uploaded two NuGet packages while pushing to NuGet. The question is if NuGet will remove the 1.0.0 version or if we should start with version 1.0.0 ?

consider distributing as a dotnet-cli global tool

Description

First off, this tool is great and I have used it several times to solve problems related to API surface area.

I think usability-wise it would be excellent if the current binary was also packaged/shipped as a dotnet sdk global/local tool, so that users could do something like

dotnet tool install synver -g
synver bump .
// or 
synver diff dllA dllB --format json

etc. This would also allow for users adding the tool to their tool manifest so it's restored alongside other packages.

I'd be willing to do this work if you like the suggestion, but it might be a bit because I'm prepping for OpenF# at the moment.

Fix build on Windows

  • Issues building on Appveyor: Start of process '/c/Program Files/dotnet/dotnet' failed
  • Issues building on Windows 10 cmd prompt: Could not find executable which ...

Inheriting from interfaces

Description

When you add an interface is possibly a minor change. While removing an interface is probably a major change.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.