Skip to content

drgarcia1986/sif

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SIF

Build Status Go Report Card codecov

Search In Files
An experimental ack written in Go.

Installation

If you have a Golang environment setup, you can simply run:

$ go get -u github.com/drgarcia1986/sif/cmd/sif

Or get binaries on releases

For windows users: Colors works only in PowerShell

Example

Run against repo dir:

$ sif better
_tests/golang.txt
9: A little copying is better than a little dependency.
14: Clear is better than clever.

_tests/python.txt
3: Beautiful is better than ugly.
4: Explicit is better than implicit.
5: Simple is better than complex.
6: Complex is better than complicated.
7: Flat is better than nested.
8: Sparse is better than dense.
17: Now is better than never.
18: Although never is often better than *right* now.

sif_test.go
14:             {"python.txt", "better", []int{3, 4, 5, 6, 7, 8, 17, 18}},

Same search with ack, grep and sif, time comparison:

$ time ack better
...
        0.11 real         0.07 user         0.01 sys
$ time grep better -rn *
...
        0.04 real         0.03 user         0.00 sys
$ time sif better
...
        0.01 real         0.00 user         0.00 sys

Library Usage Example

package main

import (
	"fmt"

	"github.com/drgarcia1986/sif"
)

func main() {
	s, _ := sif.New("fmt", sif.Options{CaseInsensitive: false})
	fm, err := s.ScanFile("./main.go")
	if err != nil {
		panic(err)
	}
	if fm != nil {
		for _, m := range fm.Matches {
			fmt.Printf("Line: %d, Text: %s\n", m.Line, m.Text)
		}
	}
}

About

A minimal (and experimental) ACK written in Go

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors