tartrazine/README.md

126 lines
3.2 KiB
Markdown
Raw Normal View History

2017-06-21 09:02:33 +00:00
# enry [![GoDoc](https://godoc.org/gopkg.in/src-d/enry.v1?status.svg)](https://godoc.org/gopkg.in/src-d/enry.v1) [![Build Status](https://travis-ci.org/src-d/enry.svg?branch=master)](https://travis-ci.org/src-d/enry) [![codecov](https://codecov.io/gh/src-d/enry/branch/master/graph/badge.svg)](https://codecov.io/gh/src-d/enry)
2016-12-09 12:30:21 +00:00
File programming language detector and toolbox to ignore binary or vendored files. *enry*, started as a port to _Go_ of the original [linguist](https://github.com/github/linguist) _Ruby_ library, that has an improved *performance of 100x*.
2016-12-09 12:30:21 +00:00
Installation
------------
The recommended way to install simple-linguist
```
2017-06-08 07:27:27 +00:00
go get gopkg.in/src-d/enry.v1/...
2016-12-09 12:30:21 +00:00
```
2017-07-07 09:20:54 +00:00
To build enry's CLI you must run
make build-cli
it generates a binary in the project's root directory called `enry`. You can move this binary to anywhere in your `PATH`.
2016-12-09 12:30:21 +00:00
Examples
--------
```go
lang, _ := GetLanguageByExtension("foo.go")
fmt.Println(lang)
// result: Go
lang, _ = GetLanguageByContent("foo.m", "<matlab-code>")
fmt.Println(lang)
// result: Matlab
2017-06-21 10:06:16 +00:00
lang, _ = GetLanguageByContent("bar.m", "<objective-c-code>")
2016-12-09 12:30:21 +00:00
fmt.Println(lang)
// result: Objective-C
2017-06-21 07:07:55 +00:00
// all strategies together
lang := enry.GetLanguage("foo.cpp", "<cpp-code>")
2017-04-05 17:03:20 +00:00
```
2017-07-06 11:30:01 +00:00
CLI
-----------------
You can use enry as a command,
```bash
$ enry --help
enry, A simple (and faster) implementation of github/linguist
usage: enry <path>
enry <path> [--json] [--breakdown]
enry [--json] [--breakdown]
```
and it will return an output similar to *linguist*'s output,
```bash
$ enry
11.11% Gnuplot
22.22% Ruby
55.56% Shell
11.11% Go
```
but not only the output, also its flags are the same as *linguist*'s ones,
```bash
$ enry --breakdown
11.11% Gnuplot
22.22% Ruby
55.56% Shell
11.11% Go
Gnuplot
plot-histogram.gp
Ruby
linguist-samples.rb
linguist-total.rb
Shell
parse.sh
plot-histogram.sh
run-benchmark.sh
run-slow-benchmark.sh
run.sh
Go
parser/main.go
```
even the JSON flag,
```bash
$ enry --json
{"Gnuplot":["plot-histogram.gp"],"Go":["parser/main.go"],"Ruby":["linguist-samples.rb","linguist-total.rb"],"Shell":["parse.sh","plot-histogram.sh","run-benchmark.sh","run-slow-benchmark.sh","run.sh"]}
```
Note that even if enry's CLI is compatible with linguist's, its main point is that, contrary to linguist, **_enry doesn't need a git repository to work!_**
Development
2017-06-21 06:22:22 +00:00
-----------
2017-07-06 11:30:01 +00:00
2017-06-21 10:06:16 +00:00
*enry* re-uses parts of original [linguist](https://github.com/github/linguist) especially data in `languages.yml` to generate internal data structures. In oreder to update to latest upstream run
2017-06-21 06:22:22 +00:00
2017-06-21 07:07:55 +00:00
make clean code-generate
2017-06-21 06:22:22 +00:00
To run the tests
make test
2017-06-08 07:27:27 +00:00
Why Enry?
---------
2017-07-06 11:30:01 +00:00
2017-06-09 18:27:37 +00:00
In the movie [My Fair Lady](https://en.wikipedia.org/wiki/My_Fair_Lady), [Professor Henry Higgins](http://www.imdb.com/character/ch0011719/?ref_=tt_cl_t2) is one of the main characters. Henry is a linguist and at the very beginning of the movie enjoys guessing the nationality of people based on their accent.
2017-06-08 07:27:27 +00:00
2017-06-09 18:27:37 +00:00
`Enry Iggins` is how [Eliza Doolittle](http://www.imdb.com/character/ch0011720/?ref_=tt_cl_t1), [pronounces](https://www.youtube.com/watch?v=pwNKyTktDIE) the name of the Professor during the first half of the movie.
2017-06-08 07:27:27 +00:00
2017-04-05 17:03:20 +00:00
License
-------
2017-04-17 15:57:18 +00:00
MIT, see [LICENSE](LICENSE)