GithubHelp home page GithubHelp logo

dragonbox / uplift Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 7.0 9.61 MB

Uplift is a package manager for the Unity game engine.

Home Page: https://dragonbox.github.io/uplift_site/

License: MIT License

C# 97.28% Batchfile 0.07% Shell 0.07% Ruby 2.58%
package-manager unity3d unity3d-plugin

uplift's People

Contributors

dependabot[bot] avatar lacostej avatar niezbop avatar scassard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

uplift's Issues

Support Nuget Based Repository

As a new feature it would be nice to support the integration of a nuget repository as an uplift repository

Some packages, such as Humanizr, that are standard .net foundation compliant, must be integrated in our project as nuget packages

LoseVersionRequirement and MinimalVersionRequirement faulty behaviour

The behaviour described by this unit test

[Test]
            public void ResrictToMinimalRequirement()
            {
                MinimalVersionRequirement minimalRequirement;
                // When greater (1.1+)
                minimalRequirement = new MinimalVersionRequirement("1.1");
                Assert.Throws<IncompatibleRequirementException>(
                    delegate
                    {
                        requirement.RestrictTo(minimalRequirement);
                    }
                );

                // When more specific 1.0.4+
                minimalRequirement = new MinimalVersionRequirement("1.0.4");
                Assert.AreSame(requirement.RestrictTo(minimalRequirement), minimalRequirement);

                // When lesser (0.9+)
                minimalRequirement = new MinimalVersionRequirement("0.9");
                Assert.AreSame(requirement.RestrictTo(minimalRequirement), requirement);
}

is not completely correct: the second scenario is non sense and enables scenarii such as:

  • A depends on B 5.2
  • C depends on B 5.2.1+
  • Uplift merges those conflicts as B 5.2.1+, and later on chooses 5.5.2 which is incorrect behavior for first dependency.

PackageExport: remove template Upset file

The need to maintain both the packageexport.asset and the templateUpset.xml in a project is cumbersome and should be streamlined, by putting the depencies and the configuration into the asset directly.

To do this, we need to:

  • Extract the custom fields we use in the UpfileEditor.cs to keep things DRY
  • Introduce the dependencies and the configuration in the scriptable object

What needs to be considered:

  • Backwards compatiblity: any system relying on the packageexport.asset would fail if it relies on an template Upset. Should we then accept breaking changes (after all we're still in beta), or provide some sort of migration mechanism, perhaps relying on an Asset Processor?

update window: consistency issues

The update window, still experimental has several issues regarding the integrity and the consistency with the Upfile and the Upfile.lock

  • it is possible to update a package in this window even though the updated version would conflict with the requirements of the project. If we want to support this, we should at least warn that this may seriously break a project.

  • udpated dependencies in this fashion are not updated in the lockfile.

Lockfile modified when installing from lockfile

I've encountered an issue while using "Install dependencies (as specified in lockfile)". Several times, my lockfile was modified after this operation.
It does not happen at each time, but I figured out a case in which it happens.

Initial state of the lockfile :

[...]
# SOLVED DEPENDENCIES
A 1.0
    B 1.0+
B1.1

Then I updated B to 1.2 version

[...]
# SOLVED DEPENDENCIES
A 1.0
    B 1.0+
B1.2

And after running "Install dependencies (as specified in lockfile)", and the lockfile is modified as followed :

[...]
# SOLVED DEPENDENCIES
A 1.0
    B 0.9+
B1.2

And 0.9+ was a transitive dependency in a previous version of my package A.

UI Cleanup

In the perspective of Uplift leaving beta, I believe we should clean its UI. Finalizing the experimental windows, and overall spending some time designing the UI wouldn't go amiss.

What should be targeted in my opinion:

  • First and foremost the UpfileEditor.cs, by extracting our custom fields to a common class (something like UpliftGUILayout), as suggested in #47 , and redesigning this window
  • The other windows
  • The inspector for the PackageExport

What could be done:

  • Maybe create a "hub" with different tabs to have a single GUI entry point?

Log not aggregated on Unity 2017+ from the .unitypackage

When running Uplift with the .unitypackage from the releases, logs are not aggregated and the message On Unity < 5.3, Uplift doesn't aggregate logs shows up. But running with the source code, the log are correctly aggregated and the message doesn't appear.

Upfile dependencies not refreshed before installation

Despite the presence of a refresh option in the code it doesn't actually work, resulting in some less than explainable issue.

It is because we create an instance of the UpliftManager, from which we reset instances.

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.