check pattern on startup

This commit is contained in:
2022-10-24 14:49:23 +02:00
parent 5e65726cb0
commit 5c42f7ab9a
4 changed files with 22 additions and 3 deletions

View File

@@ -4,7 +4,7 @@
- rm printYamlData() log.Fatal(), maybe return error on all printers?
- refactor parser, there's some duplicate code
- refactor parser, there's some duplicate code, remove pattern from parser args
## Features to be implemented
@@ -14,6 +14,4 @@
- add --no-headers option
- add input parsing support for CSV including unquoting of stuff
like: `"xxx","1919 b"` etc, maybe an extra option for unquoting

View File

@@ -17,9 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package cfg
import (
"errors"
"fmt"
"github.com/gookit/color"
"os"
"regexp"
)
const DefaultSeparator string = `(\s\s+|\t)`
@@ -36,6 +38,7 @@ type Config struct {
OutputMode int
InvertMatch bool
Pattern string
PatternR *regexp.Regexp
SortMode string
SortDescending bool
@@ -163,3 +166,15 @@ func (c *Config) ApplyDefaults() {
c.NoNumbering = true
}
}
func (c *Config) PreparePattern() error {
PatternR, err := regexp.Compile(c.Pattern)
if err != nil {
return errors.Unwrap(fmt.Errorf("Regexp pattern %s is invalid: %w", c.Pattern, err))
}
c.PatternR = PatternR
return nil
}

View File

@@ -73,6 +73,11 @@ func Execute() {
conf.CheckEnv()
conf.PrepareModeFlags(modeflag)
conf.PrepareSortFlags(sortmode)
if err := conf.PreparePattern(); err != nil {
return err
}
conf.ApplyDefaults()
// actual execution starts here

View File

@@ -21,6 +21,7 @@ import (
"bufio"
"encoding/csv"
"errors"
"fmt"
"github.com/alecthomas/repr"
"github.com/tlinden/tablizer/cfg"
"io"