feat #99: support recursive processDir
This commit is contained in:
parent
b8e6196248
commit
0d071a82be
@ -143,6 +143,7 @@ func appMain(c *cli.Context) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc := &processor{
|
proc := &processor{
|
||||||
|
inputDir: input,
|
||||||
outputDir: output,
|
outputDir: output,
|
||||||
skipNoopDecoder: c.Bool("skip-noop"),
|
skipNoopDecoder: c.Bool("skip-noop"),
|
||||||
removeSource: c.Bool("remove-source"),
|
removeSource: c.Bool("remove-source"),
|
||||||
@ -164,6 +165,7 @@ func appMain(c *cli.Context) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type processor struct {
|
type processor struct {
|
||||||
|
inputDir string
|
||||||
outputDir string
|
outputDir string
|
||||||
|
|
||||||
skipNoopDecoder bool
|
skipNoopDecoder bool
|
||||||
@ -234,11 +236,14 @@ func (p *processor) processDir(inputDir string) error {
|
|||||||
|
|
||||||
var lastError error = nil
|
var lastError error = nil
|
||||||
for _, item := range items {
|
for _, item := range items {
|
||||||
|
filePath := filepath.Join(inputDir, item.Name())
|
||||||
if item.IsDir() {
|
if item.IsDir() {
|
||||||
|
if err = p.processDir(filePath); err != nil {
|
||||||
|
lastError = err
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
filePath := filepath.Join(inputDir, item.Name())
|
|
||||||
if err := p.processFile(filePath); err != nil {
|
if err := p.processFile(filePath); err != nil {
|
||||||
lastError = err
|
lastError = err
|
||||||
logger.Error("conversion failed", zap.String("source", item.Name()), zap.Error(err))
|
logger.Error("conversion failed", zap.String("source", item.Name()), zap.Error(err))
|
||||||
@ -355,8 +360,13 @@ func (p *processor) process(inputFile string, allDec []common.NewDecoderFunc) er
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inputRelDir, err := filepath.Rel(p.inputDir, filepath.Dir(inputFile))
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("get relative dir failed: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
inFilename := strings.TrimSuffix(filepath.Base(inputFile), filepath.Ext(inputFile))
|
inFilename := strings.TrimSuffix(filepath.Base(inputFile), filepath.Ext(inputFile))
|
||||||
outPath := filepath.Join(p.outputDir, inFilename+params.AudioExt)
|
outPath := filepath.Join(p.outputDir, inputRelDir, inFilename+params.AudioExt)
|
||||||
|
|
||||||
if !p.overwriteOutput {
|
if !p.overwriteOutput {
|
||||||
_, err := os.Stat(outPath)
|
_, err := os.Stat(outPath)
|
||||||
|
Loading…
Reference in New Issue
Block a user