fubumvcarchive / ripple Goto Github PK
View Code? Open in Web Editor NEWSuper charged dependency management with Nuget without the merge hell
Home Page: http://fubuworld.com/ripple
License: Other
Super charged dependency management with Nuget without the merge hell
Home Page: http://fubuworld.com/ripple
License: Other
When we read in file paths from a nuspec file, we need to convert paths with backward slashes with forward slashes.
Thank you MS.
Create a new class project, and then try to go ripple install [some nuget].
Blows up with an NRE. Create a ripple .dependencies.config file in that project and try again. Succeeds on the 2nd go round.
Blows up trying to walk its dependencies
I'm seeing this in the fubu solution. Run rake once, everything is good. Run it again, and the restore tries to replace FubuMVC.StructureMap, blows up in the middle, and leaves the unexploded nukpg file in place that has to be cleared out by hand.
Sometimes it whines because of trying to delete a non-empty directory
ripple update --nuget FubuMVC.SelfHost --force --feeds 'http://build.fubu-project.org/guestAuth/app/nuget/v1/FeedService.svc/'
I'd dearly love to say something like:
ripple force FubuMVC.SelfHost
And since you're gonna be in ripple tonight...
It updates ripple.config, but doesn't replace what's really installed.
Go back to the commits before we converted to the new ripple. Re-run the "convert" command and fix the problems that come up.
Saw this a couple times, specifically when I converted the slickgrid bottle
Might be handy to have this for the purpose of speed
An orphaned .nupkg file under the packages directory should just be killed/ignored.
We want ripple.exe to be usable as a CLI tool on the PATH. We'll need to change SolutionFiles accordingly. The parent.parent() off the buildsupport does not work.
We need to write our own code for determining which assemblies should be attached to a project. The way we're doing it is too greedy, you end up with references to silverlight assemblies.
Not nearly as valuable as it was, but maybe.
This bit me with structuremap vs. StructureMap. Just a placeholder to remind myself to do write the tests that I have in the back of my head.
If you do not have your nuget specification XML namespaced ripple restore
currently throws a NullReferenceException
Current nuspec XML required
<?xml version="1.0"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<!-- ...-->
</metadata>
</package>
Why is this namespacing in effect? The current nuget spec command does not include the nuget xml namespaces when generating a blank nuspec.
Josh and I had a conversation about being able to do this on Skype tonight and he asked me to log an issue about it.
The read the tea leaves if there's a packages.config assume that it's classic mode is biting me. This shouldn't happen, but does-->
Say you get a packages.config file that gets bundled into a bottle that gets exploded out. Ripple thinks it's a classic mode package and hilarity results.
I'm expecting that ripple update will update any and all of the floats. I had to do ripple clean then ripple restore to get the new version of a published nuget.
It'd be nice to make ripple restore check the versions against the packages model instead of just assuming that what's exploded is right.
Saw this by changing versions in the ripple.config for a locked dependency, then did ripple restore. Did not upgrade to the designated version. Ran ripple clean, then ripple restore and it did the trick.
I'm seeing this a lot on TeamCity more than anything. I can't tell if it's a ripple thing or a NuGet thing yet, so I'm logging it here for now:
[Execute update_all_dependencies] ERROR: System.NullReferenceException: Object reference not set to an instance of an object.
[03:39:05]: [Execute update_all_dependencies] at lambda_method(Closure , IPackage )
[03:39:05]: [Execute update_all_dependencies] at System.Linq.Enumerable.WhereEnumerableIterator1.MoveNext() [03:39:05]: [Execute update_all_dependencies] at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable
1 source)
[03:39:05]: [Execute update_all_dependencies] at lambda_method(Closure )
[03:39:05]: [Execute update_all_dependencies] at System.Linq.EnumerableExecutor1.Execute() [03:39:05]: [Execute update_all_dependencies] at System.Linq.EnumerableQuery
1.System.Linq.IQueryProvider.Execute[S](Expression expression)
[03:39:05]: [Execute update_all_dependencies] at NuGet.AggregateQuery1.Execute[TResult](IQueryable queryable, Expression expression) [03:39:05]: [Execute update_all_dependencies] at NuGet.AggregateQuery
1.TryExecute[TResult](IQueryable queryable, Expression expression)
[03:39:05]: [Execute update_all_dependencies] at NuGet.AggregateQuery1.Execute[TResult](Expression expression) [03:39:05]: [Execute update_all_dependencies] at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable
1 source)
[03:39:05]: [Execute update_all_dependencies] at ripple.Nuget.NugetService.GetLatest(String nugetName) in c:\code\ripple\src\ripple\Nuget\NugetService.cs:line 53
[03:39:05]: [Execute update_all_dependencies] at ripple.Commands.UpdateCommand.<>c__DisplayClass3.<>c__DisplayClass5.b__2(String name) in c:\code\ripple\src\ripple\Commands\UpdateCommand.cs:line 65
[03:39:05]: [Execute update_all_dependencies] at System.Collections.Generic.GenericEnumerableExtensions.Each[T](IEnumerable1 values, Action
1 eachAction) in d:\Builds\FubuCore\src\FubuCore\EnumerableExtensions.cs:line 78
[03:39:05]: [Execute update_all_dependencies] at ripple.Commands.UpdateCommand.<>c__DisplayClass3.b__1(Solution solution) in c:\code\ripple\src\ripple\Commands\UpdateCommand.cs:line 63
[03:39:05]: [Execute update_all_dependencies] at System.Collections.Generic.GenericEnumerableExtensions.Each[T](IEnumerable1 values, Action
1 eachAction) in d:\Builds\FubuCore\src\FubuCore\EnumerableExtensions.cs:line 78
[03:39:05]: [Execute update_all_dependencies] at ripple.Commands.UpdateCommand.Execute(UpdateInput input) in c:\code\ripple\src\ripple\Commands\UpdateCommand.cs:line 53
[03:39:05]: [Execute update_all_dependencies] at FubuCore.CommandLine.FubuCommand`1.Execute(Object input) in d:\Builds\FubuCore\src\FubuCore\CommandLine\FubuCommand.cs:line 17
[03:39:05]: [Execute update_all_dependencies] at FubuCore.CommandLine.CommandRun.Execute() in d:\Builds\FubuCore\src\FubuCore\CommandLine\CommandRun.cs:line 10
[03:39:05]: [Execute update_all_dependencies] at FubuCore.CommandLine.CommandExecutor.Execute(String[] args) in d:\Builds\FubuCore\src\FubuCore\CommandLine\CommandExecutor.cs:line 22
[03:39:05]: [Execute update_all_dependencies] at ripple.Program.Main(String[] args) in c:\code\ripple\src\ripple\Program.cs:line 18
Missed this one. The force update works for fixed nugets but we need to be able to delete the local copy and restore to latest.
Absolutely have to make the tracking smarter to avoid unnecessary writes.
ripple install Selenium.WebDriver -m Fixed blew up. ripple install Selenium.WebDriver worked fine.
Found this when trying to download nuget package: Spark.Web.Mvc3.
It appears that when ripple is trying to parse the version, if it ends in a number, it is prepending that number to the version string to search for.
Here is the log that ripple generated:
[Debug] Searching for Spark.Web.Mvc3 from http://nuget.org/api/v2
[Error] Error executing DownloadMissingNugets
[Error] System.AggregateException: One or more errors occurred. ---> System.ArgumentException: '3.1.7.5.1' is not a valid version string.
Notice the exception points out it search for '3.1.7.5.1' but the version on nuget.org is '1.7.5.1'.
Here is also a stack trace that is included in the ripple log:
at NuGet.SemanticVersion.Parse(String version)
at ripple.Nuget.NugetName.Parse(String input) in c:\home\github\bob-ripple\src\ripple\Nuget\NugetFile.cs:line 45
at ripple.Nuget.NugetFile..ctor(String path, SolutionMode mode) in c:\home\github\bob-ripple\src\ripple\Nuget\NugetFile.cs:line 64
at ripple.Nuget.NugetFolderCache.<findNugetFiles>b__2(String file) in c:\home\github\bob-ripple\src\ripple\Nuget\NugetFolderCache.cs:line 63
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at ripple.Nuget.NugetFolderCache.findNugetFiles() in c:\home\github\bob-ripple\src\ripple\Nuget\NugetFolderCache.cs:line 61
at System.Lazy`1.CreateValue()
The file gets deleted, but not the reference in the csproj file
Tried it in FubuWorld to upgrade Selenium.WebDriver. The first try threw the "you must use the --force" flag, and that's fine, but you had to scroll way up to see it.
Tried it a 2nd time and it just didn't do anything. Threw an exception about having more than one value in a sequence somewhere we're calling Single()
I hit this every now and again where I install something in NuGet and SOMETHING updates (but not all references to it) and then my restore command is hosed.
Maybe we do an easy "latest" command that uses the max version found in the solution and forces it across all projects?
Be nice to maybe have it spitting out a little bit more about what it's doing. Is there more room to parallelize the version checks?
Doesn't do this today.
Less important now but still need it
I created a new fubusln project using fubu.exe. When I ran 'ripple convert' the ripple.config file is updated to the new structure. I then ran 'ripple install FubuMVC.Diagnostics -p PROJECTNAME' I received an unauthorized exception thrown. Upon further checking the private nuget feed is missing the trailing '/' character. When I add the trailing '/' character I no longer recieve the unauthorized exception and diagnostics is installed to my project.
This isn't super high-priority for the Fubu projects since we only create nugets from Windows. But still.
Look at how we're doing it for the CsProjFile class. The XElement stuff is Mono-friendly.
nuspec says look in bin/release, but the rake script puts it in bin/debug. What to do here?
ExplodeTo is blowing up on Mono. Need to smuggle more information into that exception to give more visibility into the file system.
Swallows problems right now, and it's burned me several times. Fix it.
Might be fixed with latest changes.
Try to install WebDriver. Blows up with an NRE in the install command.
Only happens with the strongly named refs. I vote we just kill those.
The big Describe() text blob is hard to read and it hides what really went wrong. Today this just errors out. Maybe list similar nugets?
Added a new dependency to fubu.nuspec, then updated in the FubuWorld repository. rippple did not install the new dependency.
Right now the behavior for ripple is to ignore system assemblies. This should be smarter to know if the system assembly came through a nuget package.
So let's say that we manage to have the wrong version of an exploded nuget, then run ripple restore. The old, exploded nuget is left in place even though it's the wrong version according to our ripple.config.
Does this every single time, even if you close the solution:
Error executing ExplodeDownloadedNugets
IOException: System.IO.IOException: The directory is not empty.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive)
at FubuCore.FileSystem.CleanDirectory(String directory)
at ripple.Nuget.NugetFile.ExplodeTo(String directory) in c:\code\ripple\src\ripple\Nuget\NugetFile.cs:line 102
at ripple.Steps.ExplodeDownloadedNugets.b__0(INugetFile nuget) in c:\code\ripple\src\ripple\Steps\ExplodeDownloadedNugets.cs:line 20
at System.Collections.Generic.GenericEnumerableExtensions.Each[T](IEnumerable1 values, Action
1 eachAction)
at ripple.Steps.ExplodeDownloadedNugets.Execute(SolutionInput input, IRippleStepRunner runner) in c:\code\ripple\src\ripple\Steps\ExplodeDownloadedNugets.cs:line 16
Maybe we're doing something wrong timing wise. Either way, it leaves the solution directory in an invalid state. Usually takes a ripple restore afterward to make it usable again.
Totally gums up the works. I think that if an error happens in the middle of exploding a nuget, we're left w/ the remnants and we get the nukpg file hanging around.
Did "ripple install Selenium.WebDriver" to the solution,
then...
ripple install Selenium.WebDriver -p fubu.Testing
Re-fetched and exploded the nuget. Needs to be smarter here about what does and does not need to be done.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.