Skip to content
This repository has been archived by the owner on May 31, 2020. It is now read-only.

nilium/jsondir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

jsondir
-------
<https://godoc.org/go.spiff.io/jsondir>

   $ go get go.spiff.io/jsondir

jsondir is a tool to map directory structures and their contents to JSON.

It walks a directory tree and convert files found to what it thinks is an
appropriate JSON representation. Boolean values are true/TRUE and false/FALSE,
numerics are any normal value handled by strconv.ParseInt, floats any string
convertible by strconv.ParseFloat, the string "null" or "NULL" is a null value,
and everything else is treated as a string. Type precedence is null, boolean,
integer, float, and then string as a catch-all. Empty files are empty strings,
and jsondir will by default trim trailing spaces.

Files ending in an '@' (at sign) are treated as raw JSON values and will be
unmarshaled upon loading to verify they're valid. Invalid data is a failure.
Each tree walked is emitted as a separate JSON blob, with each blob separated by
a newline. If the output is not compact, there is still a newline separating the
start and end of the JSON blobs.

If the -x flag is set, executable files will be run to generate JSON output.
This can be used to nest jsondir calls if necessary (e.g., including a separate
directory tree). By default, executable files are run in a temporary directory,
just for the sake of confusing them. You can disable this by passing -rx or -nt
to either execute files in the directory they're located in or in jsondir's
working directory, respectively.

By default, dot files are ignored. If you pass an ignore parameter, this default
no longer applies.

Each path is converted to a JSON value. The path may refer to a file or
directory -- in the case of a directory, it will produce either an object or an
array. If a directory's name ends in "[]" (minus quotes), the directory is
treated as an array. If the name ends in "{}", it's an object. The first of
either "{}" or "[]" are trimmed from key names when nesting directories. As
such, to include "[]" at the end of a directory's key name without turning the
directory into an array, you can name it "yourDirectory[]{}".


Usage
-----

   jsondir [OPTIONS] [path...]


Options
-------

All boolean flags can be passed as their name only to imply true. E.g., -v is
the same as -v=true. All boolean flags default to false except for -c (compact).

-v=true|false
   Enable verbose logging. Useful for debugging, not much else.

-c=true|false
   Emit compact output. This defaults to false if stdout is a TTY.

-s=true|false
   Whether to follow symlinks. By default, symlinks are ignored.

-ws=true|false
   Whether to keep trailing whitespace.

-x=true|false
   Run executables to produce output. Off by default for obvious sanity reasons.

-nt=true|false
   If -x is true, -nt tells jsondir to run executables from the PWD instead of
   a temporary directory. If your executables are safe and well-behaved, this is
   probably fine.

-rx=true|false
   If -x is true, -rx tells jsondir to run executables from the executables'
   directory instead of the PWD. It implies -nt.

-i PATTERN
   Ignore the given file pattern. Follows Go's filepath.Match rules. If the
   pattern does not contain slashes, it will only be matched against a file's
   basename.


License
-------
jsondir is licensed under the two-clause BSD license. You can read the license
in LICENSE.txt.

About

Tool to map directory structures to JSON. Probably evil. (Migrated to https://git.sr.ht/~nilium/jsondir)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages