Skip to content

Commit

Permalink
feat: Add query flag with RegExp and string.Contains() support
Browse files Browse the repository at this point in the history
  • Loading branch information
caffeine-addictt committed Apr 8, 2024
1 parent 511eba9 commit ad27fc6
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ package src
import (
"fmt"
"os"
"regexp"
"strings"

"github.com/caffeine-addictt/video-manager/src/utils"
"github.com/spf13/cobra"
)

var listFlags struct {
query string
allowExt []string
rejectExt []string
count int
Expand Down Expand Up @@ -42,11 +44,24 @@ var listCommand = &cobra.Command{
Debug(fmt.Sprintf("Merged extensions: %v", extMap))

Info("Filtering extensions...")
if considerAllow || considerReject {
if considerAllow || considerReject || listFlags.query != "" {
for i := 0; i < len(filenames); i++ {
split := strings.Split(filenames[i], ".")
extension := split[len(split)-1]

// if !strings.Contains(filenames[i], listFlags.query) {
match, err := regexp.MatchString(listFlags.query, filenames[i])
if err != nil {
Info("RegExp failed to match " + filenames[i] + ": " + err.Error())
}

if (err != nil && !match) || (err == nil && !strings.Contains(filenames[i], listFlags.query)) {
Debug(fmt.Sprintf("%s does not contain or match %s", filenames[i], listFlags.query))
filenames[len(filenames)-1], filenames[i], filenames = "", filenames[len(filenames)-1], filenames[:len(filenames)-1]
i--
continue
}

_, ok := extMap[extension]
if (considerAllow && !ok) || (considerReject && ok) {
filenames[len(filenames)-1], filenames[i], filenames = "", filenames[len(filenames)-1], filenames[:len(filenames)-1]
Expand All @@ -66,6 +81,7 @@ var listCommand = &cobra.Command{
func init() {
rootCommand.AddCommand(listCommand)
listCommand.Flags().IntVarP(&listFlags.count, "count", "n", 0, "Number of videos to list [0 = all] (defaults to 0)")
listCommand.Flags().StringVarP(&listFlags.query, "query", "q", "", "Query string to filter results (defaults to '')")
listCommand.Flags().StringSliceVarP(&listFlags.allowExt, "allow", "a", []string{}, "The extensions of the videos to list [mp4 etc.] (defaults to [])")
listCommand.Flags().StringSliceVarP(&listFlags.rejectExt, "exclude", "e", []string{}, "The extensions of the videos to list exclude [mp4 etc] (defaults to [])")

Expand Down

0 comments on commit ad27fc6

Please sign in to comment.