qwertie / ecsharp

Home of LoycCore, the LES language of Loyc trees, the Enhanced C# parser, the LeMP macro preprocessor, and the LLLPG parser generator.
http://ecsharp.net
Other
177 stars 25 forks source link

Step up our NuGet game #45

Closed jonathanvdc closed 7 years ago

jonathanvdc commented 7 years ago

I thought Loyc's NuGet packages could use some love, so I went and hacked together a quick PR. If merged in, it will apply the following changes:

I think I got the package dependencies, file lists, and web links right. The package summaries and descriptions might need some further review. I pretty much just copied some snippets from the EC# website and put them together.

I was hoping you'd be willing to take a quick look at my (proposed) changes and maybe try to build the NuGet packages on your own machine. I tried them out on AppVeyor, which worked fine.

Any feedback would be much appreciated as well.

qwertie commented 7 years ago

You shouldn't need to change the nuspec to exclude Loyc.Ecs.dll. The nuspec refers to Bin\Release*\, which really means \Core\Bin\Release*\ because the nuspec is supposed to be built from the Core folder. The higher level assemblies are built into \Bin\Release*\, not Core, so the nuspec file should not include them.

The failing appveyor test is my fault btw (again! sorry).

I've been meaning to split LoycCore into four separate nuget packages... and to also make packages out of Ecs, LeMP and maybe LLLPG... so this PR could help me get started. Thank you! I have been busy editing LESv3 and somehow everything takes longer than I expected - see here - I plan to finish those changes soon and then setting up the nuget packages will be my next goal.

jonathanvdc commented 7 years ago

I've split LoycCore into five separate NuGet packages, and turned LoycCore itself into a meta-package that lists all of those packages as dependencies. This should provide backward compatibility for existing users of the LoycCore package (a set of which I happen to be an element). I've also created an LLLPG package.

It's a shame that the AppVeyor checks are failing. Once all tests are successful AppVeyor can be configured to build and upload NuGet packages to nuget.org automatically whenever you create a new git tag. It takes like five minutes to encrypt your NuGet key, paste it here, and that's it. AppVeyor will take it from there. This functionality has saved me lots of pain and trouble when managing Flame releases, so I'd absolutely recommend it.

Either way, I hope this PR is at least somewhat useful. Maybe I have been a little gung ho in creating all of these nuspecs without checking with you about what exactly you'd like them to include. But I suppose they make for a fair strawman, and I'd be more than happy to apply any additional suggestions.

jonathanvdc commented 7 years ago

I've also updated the copyright notices in the nuspec files. Happy New Year!

qwertie commented 7 years ago

I merged the changes locally, changing a few things

Cool how github saw that my commit was really your PR in disguise. But that's a really large number of commits, I kinda wish I had done some kind of squashing operation or whatever it's called.

qwertie commented 7 years ago

It would be nice if I could somehow verify that the nuget packages will actually work properly before uploading them to nuget.org... anyway I am now trying to enable that deploy-from-appveyor thingie. But I suppose I'll test it later, as the new version of LoycCore is already on NuGet.org.

LeMP really should include ICSharpCode.TextEditor.dll. IIRC, it's a forked copy edited slightly so it works on Linux - I probably don't want to reference the existing ICSharpCode.TextEditor nuget package. I don't know, I don't have Linux handy to test with. But for the purpose of using LeMP programmatically, it should still work without that DLL.

jonathanvdc commented 7 years ago

It would be nice if I could somehow verify that the NuGet packages will actually work properly before uploading them to nuget.org

I know right? I always worry that I might have made a mistake in the dependency names or versions when I git tag. This StackOverflow thread seems relevant but doesn't suggest any simple solutions for our problem.

Deploy-from-appveyor seems to work! I'll test the NuGet packages you pushed on Flame and ecsc now.

jonathanvdc commented 7 years ago

Update: the Loyc packages are working great! Thanks!