Skip to content

Display packages published on openupm in the package window #10

mob-sakai started this conversation in Ideas
Display packages published on openupm in the package window #10
Dec 27, 2019 · 12 comments

Hi @favoyang

First of all, thank you for starting this GREAT service.
Many Unity users will welcome your service!

I will work on developing an editor extension that displays packages published on openupm in the package window.

Thanks!

Replies

Hi @mob-sakai, thanks for creating many useful upm packages. I was being asked a few times for the editor integration. Certainly that’s on my todo list, but not my current focus. As I blogged on the pateron post that I will focus on the infrastructure of the service and contents instead. Another reason is that I’m not sure what is the most affordable way to implement it. There seems many options on the table. I will definitely learn a lot from you when I reach the point.

I trend to keep this issue open for further conversation.

0 replies

Hi @favoyang, it's been a long time.

I succeeded in displaying any package info on the Package Manager UI!
Is it possible to get package.json for all packages and all versions that exist in OpenUPM?

For example, the unity field is required to display the supported Unity version, and the dependencies field is required to display dependent packages.

I know that we can get it with the following command:

  • npm info <package>@<version> --registry https://package.openupm.com.

But I am worried about server load...

Thanks

0 replies

@mob-sakai,

Sounds great! Please checkout information below:

To get package info

The official way to get a package info (include unity and dependencies fields) is using the /package endpoint, the one served the npm info and the detail page of Unity Package Manager.

curl -s https://package.openupm.com/com.littlebigfun.addressable-importer

To get package list info

Unity Package Manager using the old /-/all endpoint to fetch meta of all packages to construct the list page. The information is limited to name, displayName, description, latest version, license, author and modified time.

 curl -s https://package.openupm.com/-/all

{"_updated":99999,
 ...,
 "jp.setchi.fancyscrollview": {                                                               
   "name": "jp.setchi.fancyscrollview",                                                       
   "displayName": "FancyScrollView",                                                          
   "description": "A scrollview component that can implement highly flexible animation.",     
   "dist-tags": {                                                                             
     "latest": "1.8.6"                                                                        
   },                                                                                         
   "maintainers": [                                                                           
     {                                                                                        
       "name": "openupm",                                                                     
       "email": "openupm"                                                                     
     }                                                                                        
   ],                                                                                         
   "author": {                                                                                
     "name": "setchi"                                                                         
   },                                                                                         
   "readmeFilename": "README.md",                                                             
   "license": "MIT",                                                                          
   "time": {                                                                                  
     "modified": "2020-01-21T12:41:04.000Z"                                                   
   },                                                                                         
   "versions": {                                                                              
     "1.8.6": "latest"                                                                        
   }                                                                                          
 }                                                                                            

The endpoint can also return packages added since a timestamp. But you can ignore it for now. Refs

If you reply on the standard endpoint API of the npm protocol, then it can be used for any UPM registry. And you don't need worry about the server load for now.

0 replies

Thank you!

0 replies

WIP

All packages in openupm can be displayed in UI.

0 replies

@mob-sakai,

Awesome!

One question, can this solve custom dependencies automatically?

For example pkg-a => pkg-b => pkg-c, and all these packages are available on the custom registry. openupm add pkg-a will resolve the dependency tree and put all packages to the scope field.

 "dependencies": {
    "pkg-a": "1.0.0"
 },
 "scopedRegistries": [                                                                                 
   {                                                       
     "name": "package.openupm.com",                        
     "url": "https://package.openupm.com",                 
     "scopes": [                                           
       "com.openupm", "pkg-a", "pkg-b", "pkg-c"                                       
     ]                                                     
   }                                                       
 ],                                                        
0 replies

@favoyang

Oh shoot, it totally slipped my mind!

0 replies

@mob-sakai I realize this is a bit of an old issue and I'm not sure if you're still working on it. However, I was wondering if you're still working on this and how you achieved this :). I've been looking into things like this as well!

0 replies

@Thundernerd
I am not currently focused on that.
The internal implementation of UPM (& UPM UI) changes so often that I've found it difficult to maintain it on an ongoing basis.

A practical way to do this is to display Open UPM on the webview, as in the Asset Store.
When you press Install button in the page, it will install via openupm-cli.

NOTE: openupm-cli requires node environment, but I believe it can be rebuilt to run on Unity built-in node.

0 replies

OMG, WebView API on editor is gone in Unity 2020.1 or later.

0 replies

Mmh. While that could've been a nice idea (well, not for 2020+) I'd like to have something more integrated into Packman. I've found my way in and around it a bit now so I can at least show a custom page for a custom registry :).

0 replies

Because of the Unity terms changes: https://forum.unity.com/threads/updates-to-our-terms-of-service-and-new-package-guidelines.999940/

https://unity3d.com/legal/terms-of-service/software/package-guidelines

The Package Guidelines apply to you anytime you directly or indirectly leverage the Unity Editor as a marketing or distribution platform for Packages, other than via the Unity Authorized Channels (governed by their own terms and guidelines).
...
Certain kinds of external distribution are not permitted.
If you directly or indirectly leverage the Unity Editor as a marketing or distribution platform for Packages to third parties (other than your Designated Users), the following restrictions apply:
...
B. You cannot create a marketplace, store, or platform to promote, advertise, or distribute your Packages, products or services to third parties (other than your Designated Users) from within the Unity Editor.

Any efforts that trying to create a lister UI of OpenUPM packages within the Unity Editor, would break the terms. But you can still download packages from the OpenUPM website as it is now. So unless Unity updates the terms or gives a new explanation, OpenUPM will not put more effort into this feature.

0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Ideas
Labels
None yet
3 participants
Converted from issue