Command line utilities for tab-separated value files

Puming via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue Apr 12 18:41:52 PDT 2016


On Tuesday, 12 April 2016 at 07:17:05 UTC, Jon D wrote:
> On Tuesday, 12 April 2016 at 06:22:55 UTC, Puming wrote:
>> On Tuesday, 12 April 2016 at 00:50:24 UTC, Jon D wrote:
>>> Hi all,
>>>
>>> I've open sourced a set of command line utilities for 
>>> manipulating tab-separated value files. They are 
>>> complementary to traditional unix tools like cut, grep, etc. 
>>> They're useful for manipulating large data files. I use them 
>>> when prepping files for R and similar tools. These tools were 
>>> part of my 'explore D' programming exercises.
>>>
>>> [...]
>>
>> Interesting, I have large csv files, and this lib will be 
>> useful.
>> Can you put it onto code.dlang.org so that we could use it 
>> with dub?
>
> I'd certainly like to make it available via dub, but I wasn't 
> sure how to set it up. There are two issues. One is that the 
> package builds multiple executables, which dub doesn't seem to 
> support easily. More problematic is that quite a bit of the 
> test suite is run against the executables, which I could 
> automate using make, but didn't see how to do it with dub.
>
> If there are suggestions for setting this up in dub that'd be 
> great. An example project doing something similar would be 
> really helpful.
>
> --Jon

Here is what I know of it, using subPackages:

Say you have a project named myapp, and you need three 
executables, app1, app2, app3, they all depend on a common code 
base, which you name it common.

Using dub, you can have a parent project myapp, that does nothing 
but is a container of the three apps and their common code.

dub.sdl in myapp dir:

```
name "myapp"

dependency ":common" version="*"
subPackage "./common/"

dependency ":app1" version="*"
subPackage "./app1/"

dependency ":app2" version="*"
subPackage "./app2/"

dependency ":app3" version="*"
subPackage "./app3/"
```

the comma in dependency name ":common" is equal to "myapp:common"

now use `dub init common` and the like to create subdirectories.

change dub.sdl in the subdirectory common so that it becomes a 
library type:

```
name "common"

targetType "library"

```

change dub.sdl in myapp* subdirectories to depend on common:

```
name "app1"
targetType "executable"

dependency "myapp:common" version="*"
```

note here you need to add root project name "myapp:common".

Then you should register your whole project into the local dub 
repo, so that subpackages can find its dependencies when building:

in the project root directory:

dub add-local .

Now you can build each executable with:

dub build :app1
dub build :app2
dub build :app3

Unfortunately dub does not build all sub packages at once when 
you dub in the root directory.

But I think there might be a better way to handle multiple 
executables?




More information about the Digitalmars-d-announce mailing list