exact alias matching for alias, unalias, rm, unrm

master
Sina Siadat 9 years ago
parent b064658837
commit b2612b4f0c

@ -51,7 +51,7 @@ eton show processes
# edit items
eton edit {1..3} 4 prcs
# alias matching is fuzzy
# alias matching is fuzzy for cat, show, edit, mark, unmark commands
eton cat prcs
# pass items to xargs as filenames:

@ -35,7 +35,7 @@ func cmdShow(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, false)
//fmt.Printf(attr.GetValue())
printToLess(attr.GetValue())
}
@ -53,7 +53,7 @@ func cmdCat(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, false)
fmt.Printf(attr.GetValue())
}
return true
@ -226,7 +226,7 @@ func cmdAddAttr(db *sql.DB, id int, attrs []string) bool {
}
func cmdUnalias(db *sql.DB, opts Options) bool {
attr := findAttributeByAlias(db, opts.Alias)
attr := findAttributeByAlias(db, opts.Alias, true)
if attr.GetID() == -1 {
log.Fatalf("alias \"%s\" not found", opts.Alias)
} else {
@ -250,8 +250,8 @@ func cmdAlias(db *sql.DB, opts Options) bool {
attr.SetAlias(db, opts.Alias2)
}
} else if len(opts.Alias1) > 0 && len(opts.Alias2) > 0 {
attr1 := findAttributeByAlias(db, opts.Alias1)
attr2 := findAttributeByAlias(db, opts.Alias2)
attr1 := findAttributeByAlias(db, opts.Alias1, true)
attr2 := findAttributeByAlias(db, opts.Alias2, true)
if attr1.GetID() > 0 && attr2.GetID() <= 0 {
attr1.SetAlias(db, opts.Alias2)
@ -277,7 +277,7 @@ func cmdEdit(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, false)
totalUpdated += attr.Edit(db)
}
@ -298,7 +298,7 @@ func cmdRm(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, true)
totalUpdated += attr.Rm(db)
}
@ -318,7 +318,7 @@ func cmdUnrm(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, true)
totalUpdated += attr.Unrm(db)
}
@ -342,7 +342,7 @@ func cmdMark(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, false)
totalUpdated += attr.SetMark(db, 1)
}
@ -358,7 +358,7 @@ func cmdUnmark(db *sql.DB, opts Options) bool {
}
for _, alias := range opts.Aliases {
attr := findAttributeByAlias(db, alias)
attr := findAttributeByAlias(db, alias, false)
totalUpdated += attr.SetMark(db, 0)
}

@ -20,7 +20,7 @@ const dbfilename string = ".etondb"
const usage string = `Usage:
eton new [-|<note>] [-v]
eton (ls|grep) [<filters>...] [-Rsl] [-o OFFSET] [-L LIMIT] [--after AFTER]
eton (ls|grep) [<filters>...] [-asl] [-o OFFSET] [-L LIMIT] [--after AFTER]
eton edit [<ids>...] [-v]
eton alias <id1> <id2>
eton unalias <alias>
@ -41,7 +41,7 @@ Options:
-l, --list-files list items as filenames
-s, --short short mode lists rows with aliases only
-v, --verbose talk a lot
-R, --removed-only only list removed notes
-a, --all include removed items as well
`
func main() {

@ -335,9 +335,9 @@ func (attr Attr) SetAlias(db *sql.DB, alias string) {
//check(err)
if err == nil {
if unset {
fmt.Printf("alias NULL set for ID:%d\n", attr.GetID())
fmt.Printf("ID:%d unaliased\n", attr.GetID())
} else {
fmt.Printf("alias \"%s\" set for ID:%d\n", alias, attr.GetID())
fmt.Printf("alias set: %s => %s\n", attr.GetIdentifier(), alias)
}
} else {
log.Fatalf("error while setting alias \"%s\" for ID:%d -- alias must be unique\n", alias, attr.GetID()) // , err)
@ -511,7 +511,7 @@ func findAttributeByID(db *sql.DB, ID int64) (attr Attr) {
return
}
func findAttributeByAlias(db *sql.DB, alias string) (attr Attr) {
func findAttributeByAlias(db *sql.DB, alias string, exactMatchOnly bool) (attr Attr) {
var err error
var stmt *sql.Stmt
@ -529,6 +529,10 @@ func findAttributeByAlias(db *sql.DB, alias string) (attr Attr) {
return
}
if exactMatchOnly {
return
}
stmt, err = db.Prepare("SELECT " + sqlSelect + " FROM attributes WHERE alias LIKE ? ORDER BY " + orderby + " LIMIT 1")
check(err)
@ -556,7 +560,7 @@ func findAttributeByAlias(db *sql.DB, alias string) (attr Attr) {
}
func findAttributeByAliasOrID(db *sql.DB, alias_or_id string) (attr Attr) {
attr = findAttributeByAlias(db, alias_or_id)
attr = findAttributeByAlias(db, alias_or_id, false)
if attr.GetID() <= 0 {
intID, err := strconv.Atoi(alias_or_id)
@ -574,15 +578,15 @@ func findAttributeByAliasOrID(db *sql.DB, alias_or_id string) (attr Attr) {
func listWithFilters(db *sql.DB, opts Options) (attrs []Attr) {
var stmt *sql.Stmt
var rows *sql.Rows
var nolimit = opts.Limit == -1
var nolimit = opts.Limit == -1 || opts.IncludeRemoved
var sqlConditions string
var sqlLimit string
queryValues := make([]interface{}, 0, 5)
if opts.RemovedOnly {
sqlConditions = "deleted_at IS NOT NULL"
if opts.IncludeRemoved {
sqlConditions = "1"
} else {
sqlConditions = "deleted_at IS NULL"
}

@ -23,7 +23,7 @@ type Options struct {
Filters []string
FromStdin bool
Recursive bool
RemovedOnly bool
IncludeRemoved bool
ShortMode bool
Verbose bool
ListFilepaths bool
@ -109,7 +109,7 @@ func OptionsFromArgs(args map[string]interface{}) (opts Options) {
opts.Filters = args["<filters>"].([]string)
opts.FromStdin = args["-"].(bool)
opts.Recursive = false // args["--recursive"].(bool)
opts.RemovedOnly = args["--removed-only"].(bool)
opts.IncludeRemoved = args["--all"].(bool)
opts.ShortMode = args["--short"].(bool)
opts.Verbose = args["--verbose"].(bool)

Loading…
Cancel
Save