Giter Site home page Giter Site logo

dlang / dub-registry Goto Github PK

View Code? Open in Web Editor NEW
79.0 79.0 65.0 1.58 MB

Online registry for dub packages

License: Boost Software License 1.0

JavaScript 3.41% CSS 27.86% D 68.30% Shell 0.19% Dockerfile 0.19% Procfile 0.05%
d dlang dub dub-registry online-registry registry vibed

dub-registry's People

Contributors

andre2007 avatar antonmeep avatar bakkegaard avatar bausshf avatar brad-anderson avatar burner avatar coldencullen avatar dlang-bot avatar flying-toast avatar geod24 avatar gmueckl avatar ibuclaw avatar kripth avatar kubo39 avatar ljmf00 avatar majiang avatar martinnowak avatar maxhaton avatar mdondorff avatar mleise avatar nafees10 avatar pxlbuzzard avatar rjframe avatar s-ludwig avatar thewilsonator avatar vitalka200 avatar vnayar avatar webfreak001 avatar wilzbach avatar yharuhi39 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  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  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

dub-registry's Issues

Activation fails

I tried to register to submit my scrypt.d package to dub, but the link it sent me via email throws an error:

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../../../opt/vibe/source/vibe/inet/path.d(287): Empty path entries not allowed.
----------------
./allsites(bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5a107b]
./allsites(vibe.inet.path.PathEntry[] vibe.inet.path.splitPath(immutable(char)[])+0x2fa) [0x66e062]
./allsites(vibe.inet.path.Path vibe.inet.path.Path.__ctor(immutable(char)[])+0x25) [0x66c5f9]
./allsites(@property void vibe.inet.url.Url.localURI(immutable(char)[])+0x1aa) [0x66a4aa]
./allsites(void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse) vibe.http.proxy.reverseProxyRequest(immutable(char)[], ushort).void handleRequest(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x4f) [0x644f8f]
./allsites(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HttpServerSettings, ref bool)+0x1642) [0x653a7a]
./allsites(void vibe.http.server.handleHttpConnection(vibe.core.net.TcpConnection, vibe.http.server.HTTPServerListener)+0x1fc) [0x652338]
./allsites(void vibe.http.server.listenHttpPlain(vibe.http.server.HttpServerSettings, void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)).void doListen(vibe.http.server.HttpServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda52(vibe.core.net.TcpConnection)+0x36) [0x64f0d2]
./allsites(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2cb) [0x612507]
./allsites(void vibe.core.core.CoreTask.run()+0xf5) [0x61ec35]
./allsites(void core.thread.Fiber.run()+0x2a) [0x6ada6a]
./allsites(fiber_entryPoint+0x61) [0x6ad97d]
[(nil)]

It would be nice if I could be manually activated, the nickname I used was BitPuffin so it's pretty obvious that I'm the right guy haha

Build failling on OSX

The build is failing for me on OSX, with:

source/app.d(41): Error: function dub.internal.utils.jsonFromFile (Path file, bool silent_fail = false) is not callable using argument types (Path, bool)

Am I doing something wrong? Here's the output of running dub in the root: https://gist.github.com/3c1e67413cc2e761e020.

I'm on OSX 10.9.2, dmd version 2.065 and dub 0.9.21.

Impossible to see what sub-packages are about

Subpackages don't have their own web pages.
That means it's difficult to see upon which packages they depend.

Example: http://code.dlang.org/packages/gfm/~master
which is a "include all" package, unfortunately hide specifics of each package.

Note: I really like sub-packages :) but if they don't fit with your intended model (automatic license and dependencies retrieving) I'll abandon them.

Wrong repo name saved by server

I tried to create a new package from github with owner: "burner" and reponame: "inifile-D"

That failed telling me that the reponame is invalid. After renaming the github repo and entering "inifiled" as reponame. It failed again telling me: Package names must be all lower case, not "inifile-D". I even tried a different browser and got the same result.

Ideas?

Repeated activation shows bogus error message

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../userman/source/userman/controller.d(142): The activation code provided is not valid.

./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5c632f]
./dub-registry(void userman.controller.UserManController.activateUser(immutable(char)[], immutable(char)[])+0x1e7) [0x72ad7f]
./dub-registry(void userman.web.UserManWebInterface.activate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x134) [0x72e408]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x640f41]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16b9) [0x636f49]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x146) [0x6357ca]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda50(vibe.core.net.TCPConnection)+0x2c) [0x63223c]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2e2) [0x651c46]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x65ba62]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x7629ca]
./dub-registry(fiber_entryPoint+0x61) [0x7628dd]
[(nil)]

code.dlang.org down

500 - Internal Server Error

Internal Server Error

Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/core/drivers/libevent2_tcp.d(120): Trying to acquire a TCP connection that is currently owned.
----------------
./dub-registry(_d_assert_msg+0x45) [0xa12b0d]
./dub-registry(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.acquire()+0xe3) [0x7a0b27]
./dub-registry(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.close()+0x6e) [0x7a0df2]
./dub-registry(void vibe.db.mongo.connection.MongoConnection.disconnect()+0x7b) [0x85621f]
./dub-registry(vibe.db.mongo.connection.Reply vibe.db.mongo.connection.MongoConnection.query(immutable(char)[], vibe.db.mongo.connection.QueryFlags, int, int, vibe.data.bson.Bson, vibe.data.bson.Bson)+0x17b) [0x856827]
./dub-registry(void vibe.db.mongo.cursor.MongoCursorData.startIterating()+0x9c) [0x85f9b0]
./dub-registry(@property bool vibe.db.mongo.cursor.MongoCursorData.empty()+0x7c) [0x85f3a8]
./dub-registry(@property bool vibe.db.mongo.cursor.MongoCursor.empty()+0x5f) [0x85ee23]
./dub-registry(_D11dubregistry12dbcontroller12DbController14getAllPackagesMFZS11dubregistry12dbcontroller12DbController14getAllPackagesM123__T9MapResultS7011dubregistry12dbcontroller12DbController14getAllPackagesM10__lambda20TS4vibe2db5mongo6cursor11MongoCursorZ9MapResult123__T9MapResultS7011dubregistry12dbcontroller12DbController14getAllPackagesM10__lambda20TS4vibe2db5mongo6cursor11MongoCursorZ9MapResult5emptyMFNdZb+0x51) [0x8f2415]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x21c) [0x77c188]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x794a6d]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x17da) [0x789b2e]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x12b) [0x788267]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda60(vibe.core.net.TCPConnection)+0x2c) [0x7844d8]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x7a2d42]
./dub-registry(_D4vibe4core4core12__T7runTaskZ7runTaskFDFZvZS4vibe4core4task4Task12callDelegateFC4vibe4core4core8CoreTaskZv+0x2b) [0x7b7f1f]
./dub-registry(void vibe.core.core.CoreTask.run()+0x14a) [0x7b400e]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xa522fe]
./dub-registry(fiber_entryPoint+0x61) [0xa52209]
[(nil)]

Sorting all by update date

Right now when sorting by update date it always puts the packages which have a version number (aren't tracking branches) at the top. This is intentional from what I can gather looking at the code. Seems more useful to me to just sort by update date.

Feel free to close this if you disagree since this is just a matter of taste (though I am curious what the rationale is).

Error or warning for packages without a valid license field

It's crucial to know which licenses are in the game when using foreign projects. It should be enforced/encouraged to have this information available for every package in the registry.

If only warnings are used, displaying the license as "proprietary" and making it incompatible with every other package so that dub warns about it (dlang/dub#117) is probably the way to go.

Server exception on code.dlang.org

Just by going to code.dlang.org

500 - Internal Server Error

Internal Server Error

Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/http/client.d(252): Interleaved request detected!
----------------
./allsites(_d_assert_msg+0x45) [0x6f0d55]
./allsites(bool vibe.http.client.HTTPClient.doRequest(scope void delegate(vibe.http.client.HTTPClientRequest))+0x74) [0x5b6108]
./allsites(void vibe.http.client.HTTPClient.request(scope void delegate(scope vibe.http.client.HTTPClientRequest), scope void delegate(scope vibe.http.client.HTTPClientResponse))+0x98) [0x5b5e54]
./allsites(void vibe.http.client.requestHTTP(vibe.inet.url.URL, scope void delegate(scope vibe.http.client.HTTPClientRequest), scope void delegate(scope vibe.http.client.HTTPClientResponse))+0x23f) [0x5b5823]
./allsites(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) vibe.http.proxy.reverseProxyRequest(vibe.http.proxy.HTTPReverseProxySettings).void handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x91) [0x5af87d]
./allsites(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16c8) [0x5a9124]
./allsites(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x143) [0x5a7997]
./allsites(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda17(vibe.core.net.TCPConnection)+0x2c) [0x5a3f40]
./allsites(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x5be502]
./allsites(void vibe.core.core.CoreTask.run()+0xf2) [0x5cc466]
./allsites(void core.thread.Fiber.run()+0x2a) [0x722942]
./allsites(fiber_entryPoint+0x61) [0x72284d]
[(nil)]

Headers sent:

GET / HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.15
Host: code.dlang.org
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Connection: Keep-Alive

Headers received:

HTTP/1.1 500 Internal Server Error
Content-Encoding: gzip
Server: vibe.d/0.7.17
Date: Fri, 18 Oct 2013 18:00:01 GMT
Keep-Alive: timeout=10
Content-Type: text/plain; charset=UTF-8

I'm also getting the same response for favicon.ico

Can't change repo URL

There are a number of reasons why a repo URL could change, so it should be possible to edit that field in the my packages configuration.
Also if the dub registry permanently fails to locate a package, it should notify the owner via e-mail.

Get the package's actual output binary via dub cmd?

Hi Sรถnke,

As I'm currently improving Mono-D to be bypass-free compatible to dub packages,
I noticed that I have no (obvious) chance for retrieving the project's target executable path which is needed (at least) for automatically launching the debugger.
Calling dub describe or trying to deduce the executable's name from the package.json contents might not be perfect otherwise.
dub describe won't to the job for me! :-/

Besides, what about a 'clean' command - to clean the executable and support files up (recursively)?

I appreciate dub very much though!
Alex

Site is broken

I'm trying to go to the front page but it's throwing the following error:

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../../../opt/vibe/source/vibe/data/json.d(692): Trying to access JSON of type Null as Json[string].
----------------
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5ec62b]
./dub-registry(const(void function()) vibe.data.json.Json.checkType!(vibe.data.json.Json[immutable(char)[]]).checkType+0xa5) [0x69ca5d]
./dub-registry(ref vibe.data.json.Json vibe.data.json.Json.opIndex(immutable(char)[])+0x63) [0x69a653]
./dub-registry(ref @property vibe.data.json.Json vibe.data.json.Json.opDispatch!("versions").opDispatch()+0x5f) [0x69cc7f]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).immutable(char)[] getDate(vibe.data.json.Json)+0x15) [0x5e33c5]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).pure bool __lambda7!(vibe.data.json.Json, vibe.data.json.Json).__lambda7(vibe.data.json.Json, vibe.data.json.Json)+0x60) [0x5e51a0]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).void __T23optimisticInsertionSortS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7TAS4vibe4data4json4JsonZ.optimisticInsertionSort(vibe.data.json.Json[])+0xca) [0x603252]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).void __T13quickSortImplS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7TAS4vibe4data4json4JsonZ.quickSortImpl(vibe.data.json.Json[])+0x29c) [0x602ddc]
./dub-registry(_D11dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv206__T4sortS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7VE3std9algorithm12SwapStrategy0TAS4vibe4data4json4JsonZ4sortMFAS4vibe4data4json4JsonZS11dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv183__T11SortedRangeTAS4vibe4data4json4JsonS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7Z11SortedRange+0x2a) [0x5e4fe6]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x17f) [0x5e337f]
./dub-registry(void vibe.http.router.UrlRouter.handleRequest(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x179) [0x719c69]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HttpServerSettings, ref bool)+0x163f) [0x727467]
./dub-registry(void vibe.http.server.handleHttpConnection(vibe.core.net.TcpConnection, vibe.http.server.HTTPServerListener)+0x1f9) [0x725d2d]
./dub-registry(void vibe.http.server.listenHttpPlain(vibe.http.server.HttpServerSettings, void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)).void doListen(vibe.http.server.HttpServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda102(vibe.core.net.TcpConnection)+0x36) [0x722a36]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2b3) [0x6a6367]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x6b3646]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x78b5be]
./dub-registry(fiber_entryPoint+0x61) [0x78b4d1]
[(nil)] 

Provide an example of the buildTypes field in package.json

Based on my reading of http://code.dlang.org/package-format#standard-fields, I should have a field "buildTypes" at the root. Based on my reading of http://code.dlang.org/package-format#build-settings, this "buildTypes" should be an object, of which one of the keys is "dflags". The value of "dflags" is a "String[]", meaning an array of Strings.

Thus, I write the following package.jon file:

{
    "name": "tmp",
    "description": "My Project",
    "copyright": "Copyright ยฉ 2013, Nebu Pookins",
    "authors": ["Nebu Pookins"],
    "dependencies": {
    },
    "buildTypes": {
        "dflags": [
            "-Idwt/imp",
            "-Jdwt/org.eclipse.swt.gtk.linux.x86/res"
        ],
    }
}

However, when I run dub, I get the following error:

Failed to parse package description in /home/nebu/dev/tmp
Failed to parse package description in /home/nebu/dev/tmp
Error: Got .dflags of type array - expected object.

Run 'dub help' for usage information.

Implement package categories

Each package should have 1 to 3 categories associated with it to make it easier to later find a package even with many regsitered packages. There is a categories.json already in the repository. It has to be parsed and the web front end logic has to be written.

Activating account and logging in on an previously opened tab causes Internal Server Error

As the assert nicely tells us, the server tried to start another session.
What I did was, I had the package list open from yesterday. Today I found the activation email in my spam box and clicked on the activation link. Ignoring the tab that opened (those activation links usually don't take me where I want to be), I clicked on Login in the old tab and logged in, resulting in:

500 - Internal Server Error

Internal Server Error

Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/http/server.d(810): Try to start a session, but already started one.
----------------
./dub-registry(_d_assert_msg+0x45) [0x73ba15]
./dub-registry(vibe.http.session.Session vibe.http.server.HTTPServerResponse.startSession(immutable(char)[], bool)+0xff) [0x632c17]
./dub-registry(void userman.web.UserManWebInterface.login(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x23d) [0x72fa41]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x63fff1]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16b9) [0x635ff9]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x146) [0x63487a]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda50(vibe.core.net.TCPConnection)+0x2c) [0x6312ec]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2e2) [0x650c42]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x65aa5e]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x764ada]
./dub-registry(fiber_entryPoint+0x61) [0x7649ed]
[(nil)]

web api

Would it be possible to add a simple web api to retrieve the packages in the repository with a get request + query string? I'd like to integrate dub with a graphical tool i'm writing, allowing to browse all packages (currently I'm scraping the website). The query could return a json array of all package.json's or similar.

Use push notifications for repository updates

The registry is currently living on the edge with it's GitHub API use. 60 non-cached requests per hour are allowed and jus registering two projects at once that contain some tags/branches will hit that limit.

When using OAuth2 to access the API, the limit gets increased to 2000 and it also becomes possible to use the PubSubHubbub API to avoid polling, making the registry more responsive and saving bandwith.

Bitbucket probably has something similar.

Can't register more packages

I have already registered 13 packages. When I click on "Register new package", I get

403 - Forbidden

You don't have access rights for this package.

Internal error information:
vibe.http.common.HTTPStatusException@../vibe/source/vibe/http/common.d(107): You don't have access rights for this package.
----------------
./dub-registry(bool vibe.http.common.enforceHTTP!(bool).enforceHTTP(bool, vibe.http.status.HTTPStatus, lazy immutable(char)[])+0x36) [0x9e14d2]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.enforceUserPackage(userman.controller.User, immutable(char)[])+0x5b) [0xa757ff]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.getMyPackagesPackage(immutable(char)[], userman.controller.User, immutable(char)[])+0x98) [0xa74fc4]
./dub-registry(void vibe.web.web.handleRequest!("getMyPackagesPackage", _D11dubregistry3web22DubRegistryWebFrontend20getMyPackagesPackageMFAyaS7userman10controller4UserAyaZv, dubregistry.web.DubRegistryWebFrontend).handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings)+0x3ce) [0x9e6c12]
./dub-registry(void vibe.web.web.__T20registerWebInterfaceTC11dubregistry3web22DubRegistryWebFrontendVE4vibe3web6common11MethodStylei5Z.registerWebInterface(vibe.http.router.URLRouter, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings).__lambda36!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda36(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x2d) [0x9d3e21]
./dub-registry(_D4vibe4http6router9URLRouter13handleRequestMFC4vibe4http6server17HTTPServerRequestC4vibe4http6server18HTTPServerResponseZ21__T9__lambda3TmTAAyaZ9__lambda3MFmMAAyaZv+0x210) [0xb87b64]
./dub-registry(void vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope void delegate(ulong, scope immutable(char)[][]))+0x1dc) [0xb88250]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x1a6) [0xb878e2]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16ee) [0xbf3e9a]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x19c) [0xbf26a8]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings).doListen(vibe.http.server.HTTPServerSettings, ulong, immutable(char)[]).__lambda4(vibe.core.net.TCPConnection)+0x62) [0xbf20aa]
./dub-registry(void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).ClientTask.execute()+0x4d4) [0xb4608c]
./dub-registry(void vibe.core.core.makeTaskFuncInfo!(void delegate()).makeTaskFuncInfo(ref void delegate()).callDelegate(vibe.core.core.TaskFuncInfo*)+0x72) [0x97e2c6]
./dub-registry(void vibe.core.core.CoreTask.run()+0x18f) [0xb2dd47]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xc8ed1e]
./dub-registry(fiber_entryPoint+0x61) [0xc8ec31]
[(nil)]

registering new packages is currently broken (403 - Forbidden)

I get a 403 for the http://code.dlang.org/my_packages/register? page to which I'm send when clicking "Register new package".

403 - Forbidden

You don't have access rights for this package.

Internal error information:
vibe.http.common.HTTPStatusException@../vibe/source/vibe/http/common.d(107): You don't have access rights for this package.
----------------
./dub-registry(void vibe.http.common.enforceHTTP!(bool).enforceHTTP(bool, vibe.http.status.HTTPStatus, immutable(char)[])+0x36) [0x84f36a]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.enforceUserPackage(userman.controller.User, immutable(char)[])+0x67) [0x8d44eb]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.getMyPackagesPackage(immutable(char)[], userman.controller.User, immutable(char)[])+0x8c) [0x8d3b60]
./dub-registry(void vibe.web.web.handleRequest!("getMyPackagesPackage", _D11dubregistry3web22DubRegistryWebFrontend20getMyPackagesPackageMFAyaC7userman10controller4UserAyaZv, dubregistry.web.DubRegistryWebFrontend).handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings)+0x289) [0x8524dd]
./dub-registry(void vibe.web.web.__T20registerWebInterfaceTC11dubregistry3web22DubRegistryWebFrontendVE4vibe3web6common11MethodStyle5Z.registerWebInterface(vibe.http.router.URLRouter, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings).__lambda18!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda18(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x2d) [0x841fd9]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).void __lambda3!(ulong, immutable(char)[][]).__lambda3(ulong, scope immutable(char)[][])+0x1dc) [0x984ce4]
./dub-registry(void vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope void delegate(ulong, scope immutable(char)[][]))+0x1dc) [0x985324]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x1a6) [0x984a96]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x165d) [0xa0447d]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x1a3) [0xa02d3f]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings).doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).__lambda4(vibe.core.net.TCPConnection)+0x2c) [0xa02a2c]
./dub-registry(void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).ClientTask.execute()+0x316) [0x95692e]
./dub-registry(_D4vibe4core4core27__T16makeTaskFuncInfoTDFZvZ16makeTaskFuncInfoFNbDFZvZS4vibe4core4core12TaskFuncInfo12callDelegateFPS4vibe4core4core12TaskFuncInfoZv+0xda) [0x7e8f5e]
./dub-registry(void vibe.core.core.CoreTask.run()+0x16a) [0x93f1a2]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xa91bf6]
./dub-registry(fiber_entryPoint+0x61) [0xa91b01]
[(nil)]

invalid error for missing semver tag

I added a tag (v3.16.0) to the Deimos project I want to register, but I still get the following error message.
This is probably an issue with caching because it works when I run the dub-registry locally.
https://github.com/D-Programming-Deimos/FreeImage

The repository must have at least one tagged version (SemVer format, e.g. "v1.0.0" or "v0.0.1") to be published on the registry. Please add a proper tag using "git tag" or equivalent means and see http://semver.org for more information. 

VisualD project broken with 0.9.21

After updating, to 0.9.21 "dub generate visuald" no longer
generates "release" and "unittest"configurations for VisualD -
only "debug" is available. I downgraded to 0.9.20 to make sure
and indeed this version generates VisualD projects correctly
(with all 3 configurations)

gh-pages branch need not contain a package.json.

I get the following message:
Branch ~gh-pages: Found neither dub.json, nor package.json in the repository.

But the gh-pages is useful to display documentation hosted on github. It isn't meant to have a package.json somewhere.

Category select should use optgroups

I think the category select should use optgroups instead of the putting |_ in front of every option. I cannot "search" in the select box as it is now.

Logging in with email causes user-specific pages to fail.

I tried logging in with my username, and it worked fine.

The error page (/my_packages):

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../userman/source/userman/controller.d(230): The specified user name is not registered.
----------------
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x62a93b]
./dub-registry(userman.controller.User userman.controller.UserManController.getUserByName(immutable(char)[])+0x124) [0x7e5c3c]
./dub-registry(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) userman.web.UserManWebInterface.auth(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, userman.controller.User)).void requestHandler(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0xdf) [0x7e953f]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x6eafd1]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x1638) [0x6dfc88]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x143) [0x6de58b]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda52(vibe.core.net.TCPConnection)+0x2c) [0x6dab34]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x6f88e6]
./dub-registry(void vibe.core.core.CoreTask.run()+0xf2) [0x7067c2]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x827b9a]
./dub-registry(fiber_entryPoint+0x61) [0x827aa5]
[(nil)]

Implement conflict detection

Packages should be scanned for all D packages that they occupy. A reverse search could then find all package candidates for a certain namespace. Especially useful for tools that want to automatically determine the list of dependencies using just the source code. Also useful to avoid package conflicts when choosing a namespace for a new library.

code.dlang.org broken

Stranges with this site.

http://code.dlang.org/download - 500 error code

500 - Internal Server Error

Internal Server Error

Internal error information:
std.file.FileException@std/file.d(2394): public/files: Too many open files
----------------
./dub-registry(bool std.file.DirIteratorImpl.stepIn(immutable(char)[])+0x61) [0xac17f1]
./dub-registry(ref std.file.DirIteratorImpl std.file.DirIteratorImpl.__ctor(immutable(char)[], std.file.SpanMode, bool)+0x9d) [0xac1b0d]
./dub-registry(std.file.DirIteratorImpl* std.conv.emplace!(std.file.DirIteratorImpl, immutable(char)[], std.file.SpanMode, bool).emplace(std.file.DirIteratorImpl*, ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x48) [0xabf70c]
./dub-registry(void std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted.RefCountedStore.initialize!(immutable(char)[], std.file.SpanMode, bool).initialize(ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x83) [0xaaaa37]
./dub-registry(ref std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted.__ctor!(immutable(char)[], std.file.SpanMode, bool).__ctor(ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x11) [0xaaa9a9]
./dub-registry(ref std.file.DirIterator std.file.DirIterator.__ctor(immutable(char)[], std.file.SpanMode, bool)+0x40) [0xa95f90]
./dub-registry(std.file.dirEntries.FilterResult!(_D3std4file10dirEntries1fMFS3std4file8DirEntryZb, std.file.DirIterator).FilterResult std.file.dirEntries(immutable(char)[], immutable(char)[], std.file.SpanMode, bool)+0x77) [0xa9646b]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showDownloads(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x537) [0x7b350b]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x7cc44d]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x17da) [0x7c150e]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x12b) [0x7bfc47]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda60(vibe.core.net.TCPConnection)+0x2c) [0x7bbeb8]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x7da80a]
./dub-registry(_D4vibe4core4core12__T7runTaskZ7runTaskFDFZvZS4vibe4core4task4Task12callDelegateFC4vibe4core4core8CoreTaskZv+0x2b) [0x7f2bdf]
./dub-registry(void vibe.core.core.CoreTask.run()+0x14a) [0x7eecce]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xab4f6e]
./dub-registry(fiber_entryPoint+0x61) [0xab4e79]
[(nil)]

GNU/Linux. Range violation

Platform: Fedora 19 x86
Dub version: v0.9.19-2-gb08454b
dmd version: v2.063.2

Running on CI server, thus jenkins $HOME dir is /var/lib/jenkins. Package borey-engine is added as local package (doesn't updated in dub registry):

git clone https://github.com/NCrashed/BoreyEngine.git
cd BoreyEngine && dub add-local . ~master

Original problem package is not available, but there is reduced package.json which cause problem:

{
    "name": "test",
    "sourcePaths": [],
    "targetPath": "bin",

    "configurations": [
        {
            "name": "client",
            "sourcePaths": ["source"],
            "libs-posix": ["dl"], 
            "targetType": "executable",
            "targetName": "client",
            "dependencies": 
            {
                "borey-engine": "~master",
                "borey-engine:interface": "~master",
            }
        }
    ]
}

source/app.d:

void main() {}

Dub is called with:

dub build --config=client --build=unittest --vverbose

Output:

dub: /lib/libcurl.so.4: no version information available (required by dub)
Using dub registry url 'http://code.dlang.org/'
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Failed to run git: git rev-parse failed: fatal: Not a git repository: '/var/lib/jenkins/jobs/FMTG/workspace/testprj/.git'

Note: Failed to determine version of package test at /var/lib/jenkins/jobs/FMTG/workspace/testprj. Assuming ~master.
Collecting dependencies for test
Found dependency borey-engine:interface ~master: true
Collecting dependencies for borey-engine:interface
Found dependency derelict:util ~master: true
Collecting dependencies for derelict:util
Found dependency borey-engine ~master: true
Collecting dependencies for borey-engine
Found dependency derelict:opengl3 ~master: true
Collecting dependencies for derelict:opengl3
Found dependency derelict:glfw3 ~master: true
Collecting dependencies for derelict:glfw3
Checking dependencies in '/var/lib/jenkins/jobs/FMTG/workspace/testprj'
Try to resolve ["borey-engine"]
There are 1 packages missing.
Adding package to graph: borey-engine
Found installed package borey-engine ~master
Try to resolve ["derelict"]
There are 1 packages missing.
Adding package to graph: derelict
Found installed package derelict ~master
Required package 'borey-engine' found with version '~master'
Required package 'derelict' found with version '~master'
Generating using build
Creating build generator.
Including test client -> borey-engine:interface library
Including test client -> borey-engine application
Including borey-engine:interface library -> derelict:util library
Including borey-engine application -> derelict:opengl3 library
Including borey-engine application -> borey-engine:interface library
Including borey-engine application -> derelict:glfw3 library
Including borey-engine application -> derelict:util library
Including derelict:opengl3 library -> derelict:util library
Including borey-engine:interface library -> derelict:util library
Including derelict:glfw3 library -> derelict:util library
Error: Range violation

Full exception: [email protected](271): Range violation
----------------
dub(_d_array_bounds+0x2b) [0x826287b]
dub() [0x81e1153]
dub(const(immutable(char)[][immutable(char)[]] function(const(dub.compilers.compiler.BuildPlatform), immutable(char)[])) dub.project.Project.getPackageConfigs.bool isReachableByAllParentPacks(uint)+0x71) [0x81de005]
dub(const(immutable(char)[][immutable(char)[]] function(const(dub.compilers.compiler.BuildPlatform), immutable(char)[])) dub.project.Project.getPackageConfigs+0x1a9) [0x81dd6dd]
dub(const(void function(ref dub.compilers.compiler.BuildSettings, const(dub.compilers.compiler.BuildPlatform), immutable(char)[], const(dub.package_.Package))) dub.project.Project.addBuildSettings+0x63) [0x81de66f]
dub(void dub.generators.build.BuildGenerator.generateProject(dub.generators.generator.GeneratorSettings)+0x98) [0x81e5304]
dub(void dub.dub.Dub.generateProject(immutable(char)[], dub.generators.generator.GeneratorSettings)+0x6f) [0x81ca0c3]
dub(_Dmain+0x134c) [0x81c20d8]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain()+0x10) [0x8262f38]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())+0x27) [0x8262ab7]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll()+0x64) [0x8262fac]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())+0x27) [0x8262ab7]
dub(_d_run_main+0x162) [0x8262a72]
dub(main+0x2a) [0x82628fa]
/lib/libc.so.6(__libc_start_main+0xf3) [0x44058963]
Run 'dub help' for usage information.

Readme file isn't displayed unless named exactly README.md

This means casing is important. Offending line:

try rep.readFile(reference.sha, Path("/README.md"), 
(scope input) { dbver.readme = input.readAllUTF8(); });

Note that (at least Github) allows all sorts of names for the readme: readme.md, readme.markdown, README.md, README.markdown, etc. I'm not sure whether all supported combinations are listed anywhere.

There's also .rst support on Github but I don't know if we have any D .rst parsers around for use with dub-registry.

Unable to register new user on http://code.dlang.org/register

I'm trying to fill in the fields, put them all in but get an error with "Missing user name field.". No confirmation email is sent, no warnings if I am reusing another user name, no idea how to log in so that I can add projects to the registry.

Unexpected reply Moved Permanently

I am getting following messages for all my packages (at 'manage package' page):

Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/ec962075eb6a67ee1dc03365c29f4e61d441d11c/package.json': Moved Permanently

For instance my dlogg package:


Package errors:

Version 0.1.0-docs: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/7b7fd1405240ef1b337cd2a3e1129e15f80af108/dub.json': Moved Permanently
Version 0.1.0: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/ec962075eb6a67ee1dc03365c29f4e61d441d11c/package.json': Moved Permanently
Version 0.1.1: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/4dbf22b9e8308eace6ef7640b923bd01e75923c6/package.json': Moved Permanently
Version 0.1.2: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/65ff66bb303f1de33a378349271e46df1faa24e0/package.json': Moved Permanently
Version 0.1.3: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/0b28135f4f78d52072b8cb351a5c237af3da06d4/package.json': Moved Permanently
Version 0.2.0: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f267d3eff40f8a6c45343d2a4360db2bd5821c0b/dub.json': Moved Permanently
Branch ~master: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f267d3eff40f8a6c45343d2a4360db2bd5821c0b/dub.json': Moved Permanently
Branch ~gh-pages: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f3e16d2a79ff96c4841e11e6e610ce4bfec19768/dub.json': Moved Permanently

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.