May 24, 2012
On Wednesday, 23 May 2012 at 23:14:19 UTC, Walter Bright wrote:
> Anyone want to implement such? It ought to be fairly straightforward, and will be a nice timesaver for a lot of people.

Oh, and maybe I'm a bit to pessimistic on that, but a project that takes »only one or two days« and »doesn't require much of any design« probably won't offer much functionality over »git/hg/<xyz> clone <url>«, and thus is likely to rather be a needless complication than much of a timesaver.

With dget in place, you either still need to go to the respective hosting site to find out that the project even exists, or we need a central list of available libraries, in which case we are already halfway towards a package manager. Now add versioning, a very ubiquitous concern, into the mix…

By the way, if you really just need to fetch the latest source tree for a GitHub project, you don't even need a local Git client. Just click the big »ZIP« button (taking you e.g. to https://github.com/D-Programming-Language/phobos/zipball/master) – works for branches and tags as well.

David
May 24, 2012
On 5/24/2012 7:43 AM, David Nadlinger wrote:
> By the way, if you really just need to fetch the latest source tree for a GitHub
> project, you don't even need a local Git client. Just click the big »ZIP« button
> (taking you e.g. to
> https://github.com/D-Programming-Language/phobos/zipball/master) – works for
> branches and tags as well.

It's still multiple steps.

May 25, 2012
> Anyone want to implement such? It ought to be fairly straightforward, and will be a nice timesaver for a lot of people.

https://gist.github.com/2786276

usage:

rdmd dget dsimcha/TempAlloc libevent
May 26, 2012
On 5/25/2012 1:32 AM, Martin Nowak wrote:
>> Anyone want to implement such? It ought to be fairly straightforward, and will
>> be a nice timesaver for a lot of people.
>
> https://gist.github.com/2786276
>
> usage:
>
> rdmd dget dsimcha/TempAlloc libevent

Holy Mackerel! I'm going to give it a try.
May 26, 2012
On 5/25/2012 1:32 AM, Martin Nowak wrote:
>> Anyone want to implement such? It ought to be fairly straightforward, and will
>> be a nice timesaver for a lot of people.
>
> https://gist.github.com/2786276
>
> usage:
>
> rdmd dget dsimcha/TempAlloc libevent

How about slapping a Boost license on it and creating a pull request for:


https://github.com/D-Programming-Language/tools

?
May 26, 2012
Le mercredi 23 mai 2012 à 16:14 -0700, Walter Bright a écrit :
> Currently, getting D code from github is a multistep process, that isn't always obvious. I propose the creation of a dget program, which will:
> 
>      dget https://github.com/D-Programming-Deimos/libevent
> 
> download the libevent code and install it in a subdirectory named libevent. Of course, the url could also be:
> 
>      dget github.com/D-Programming-Deimos/libevent
> 
> since https is assumed, or:
> 
>      dget D-Programming-Deimos/libevent
> 
> since github is assumed. And since Deimos is a known library,
> 
>      dget libevent
> 
> can also be hardwired into dget.
> 
> Anyone want to implement such? It ought to be fairly straightforward, and will be a nice timesaver for a lot of people.

yes it is a feature i wish to add but the repository should be always
the same or by a config file understand where is the source code (root
of dir in  src dir ...), if it is a lib, a desktop application, a web
application (which vied, serenity ..), detect dependencies
i have start a little project for build common D project (80% of use
case) https://github.com/organizations/dbuilder-developers

this tool could in more download and build/install easilly if you put at
root of the github repo a config file (example of config file supported
https://github.com/dbuilder-developers/dbuilder/blob/master/examples/dbuilder.cfg )
 Any help are welcome, this tool goal to be easy to use
$ dbuilder get xxx // not implemented
$ dbuilder build
$ dbuilder install

in more from command line you can override value in config file

Sorry for my english


)

May 26, 2012
On Sat, 26 May 2012 03:35:13 +0200, Walter Bright <newshound2@digitalmars.com> wrote:

> On 5/25/2012 1:32 AM, Martin Nowak wrote:
>>> Anyone want to implement such? It ought to be fairly straightforward, and will
>>> be a nice timesaver for a lot of people.
>>
>> https://gist.github.com/2786276
>>
>> usage:
>>
>> rdmd dget dsimcha/TempAlloc libevent
>
> How about slapping a Boost license on it and creating a pull request for:
>
>
> https://github.com/D-Programming-Language/tools
>
> ?

I will do that after some cleanup.
May 27, 2012
On 5/26/2012 3:04 PM, Martin Nowak wrote:
> On Sat, 26 May 2012 03:35:13 +0200, Walter Bright <newshound2@digitalmars.com>
> wrote:
>
>> On 5/25/2012 1:32 AM, Martin Nowak wrote:
>>>> Anyone want to implement such? It ought to be fairly straightforward, and will
>>>> be a nice timesaver for a lot of people.
>>>
>>> https://gist.github.com/2786276
>>>
>>> usage:
>>>
>>> rdmd dget dsimcha/TempAlloc libevent
>>
>> How about slapping a Boost license on it and creating a pull request for:
>>
>>
>> https://github.com/D-Programming-Language/tools
>>
>> ?
>
> I will do that after some cleanup.

Great!
May 27, 2012
On Saturday, 26 May 2012 at 22:04:34 UTC, Martin Nowak wrote:
> On Sat, 26 May 2012 03:35:13 +0200, Walter Bright <newshound2@digitalmars.com> wrote:
>
>> On 5/25/2012 1:32 AM, Martin Nowak wrote:
>>>> Anyone want to implement such? It ought to be fairly straightforward, and will
>>>> be a nice timesaver for a lot of people.
>>>
>>> https://gist.github.com/2786276
>>>
>>> usage:
>>>
>>> rdmd dget dsimcha/TempAlloc libevent
>>
>> How about slapping a Boost license on it and creating a pull request for:
>>
>>
>> https://github.com/D-Programming-Language/tools
>>
>> ?
>
> I will do that after some cleanup.

I saw your comment in the code:

// doesn't work because it already timeouts after 2 minutes
// return get!(HTTP, ubyte)();

You can actually set timeouts using the get function by providing the HTTP instance as a second parameter to get() e.g.:

auto client = HTTP();
client.dataTimeout = dur!"seconds"(100000);
auto data = get!(HTTP,ubyte)("www.dlang.org", client);

/Jonas


May 29, 2012
> You can actually set timeouts using the get function by providing the HTTP instance as a second parameter to get() e.g.:
>
> auto client = HTTP();
> client.dataTimeout = dur!"seconds"(100000);
> auto data = get!(HTTP,ubyte)("www.dlang.org", client);
>
> /Jonas

Good to know, thanks.

I used the chance to add progress output and gathered
the data in an appender rather than doing array cat.