Skip to content
Snippets Groups Projects
Commit 9d0f67f0 authored by jensilo's avatar jensilo
Browse files

fix error when creating new file

parent 439a8696
No related branches found
No related tags found
No related merge requests found
...@@ -76,17 +76,13 @@ func DirSearch(baseDir string, query string) ([]string, error) { ...@@ -76,17 +76,13 @@ func DirSearch(baseDir string, query string) ([]string, error) {
return dirs, nil return dirs, nil
} }
// FileSearch searches the base directory + a specified sub-path for .csv-files containing the query string in their name. // FileSearch searches a specified subdirectory for .csv-files containing the query string in their name.
// Only files with the .csv-extension are considered. The search is case-insensitive. Returns a slice of matching files. // Only files with the .csv-extension are considered. The search is case-insensitive. Returns a slice of matching files.
func FileSearch(baseDir string, subPath string, query string) ([]string, error) { func FileSearch(dirPath string, query string) ([]string, error) {
var files []string var files []string
queryLower := strings.ToLower(query) queryLower := strings.ToLower(query)
if subPath != "" { err := filepath.WalkDir(dirPath, func(path string, d os.DirEntry, err error) error {
subPath = filepath.Clean(subPath)
}
err := filepath.WalkDir(filepath.Join(baseDir, subPath), func(path string, d os.DirEntry, err error) error {
if err != nil { if err != nil {
return err return err
} }
...@@ -109,7 +105,7 @@ func FileSearch(baseDir string, subPath string, query string) ([]string, error) ...@@ -109,7 +105,7 @@ func FileSearch(baseDir string, subPath string, query string) ([]string, error)
return nil return nil
}) })
if err != nil { if err != nil && !os.IsNotExist(err) { // ignore "file/dir does not exist" errors - the search might be submitted before the file/dir is created
return nil, err return nil, err
} }
... ...
......
...@@ -269,7 +269,7 @@ func parseRequirement(appCtx *hctx.AppCtx, webCtx *web.Ctx, cfg Cfg) http.Handle ...@@ -269,7 +269,7 @@ func parseRequirement(appCtx *hctx.AppCtx, webCtx *web.Ctx, cfg Cfg) http.Handle
templateID := web.URLParam(request, "templateID") templateID := web.URLParam(request, "templateID")
variant := web.URLParam(request, "variant") variant := web.URLParam(request, "variant")
outputDir := BuildDirPath(cfg.Output.BaseDir, request.FormValue("elicitationOutputDir")) outputDir := BuildDirPath(cfg.Output.BaseDir, request.FormValue("elicitationOutputDir"))
outputFile := BuildFilename(request.FormValue("elicitationOutputFile")) outputFileRaw := request.FormValue("elicitationOutputFile")
formData, err := TemplateFormFromRequest( formData, err := TemplateFormFromRequest(
ctx, ctx,
...@@ -284,6 +284,11 @@ func parseRequirement(appCtx *hctx.AppCtx, webCtx *web.Ctx, cfg Cfg) http.Handle ...@@ -284,6 +284,11 @@ func parseRequirement(appCtx *hctx.AppCtx, webCtx *web.Ctx, cfg Cfg) http.Handle
return io.InlineError(err) return io.InlineError(err)
} }
if outputFileRaw == "" {
outputFileRaw = formData.Template.Name
}
outputFile := BuildFilename(outputFileRaw)
segmentMap, err := SegmentMapFromRequest(request, len(formData.Variant.Rules)) segmentMap, err := SegmentMapFromRequest(request, len(formData.Variant.Rules))
if err != nil { if err != nil {
return io.InlineError(web.ErrInternal) return io.InlineError(web.ErrInternal)
...@@ -391,7 +396,7 @@ func outputFileSearch(appCtx *hctx.AppCtx, webCtx *web.Ctx, cfg Cfg) http.Handle ...@@ -391,7 +396,7 @@ func outputFileSearch(appCtx *hctx.AppCtx, webCtx *web.Ctx, cfg Cfg) http.Handle
query := request.FormValue("output-file") query := request.FormValue("output-file")
dir := request.FormValue("output-dir") dir := request.FormValue("output-dir")
files, err := FileSearch(cfg.Output.BaseDir, dir, query) files, err := FileSearch(BuildDirPath(cfg.Output.BaseDir, dir), query)
if err != nil { if err != nil {
return io.InlineError(web.ErrInternal, err) return io.InlineError(web.ErrInternal, err)
} }
... ...
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
</div> </div>
</div> </div>
<div class="accordion mt-5 eiffel-elicitation-template-info" id="eiffelTemplateInfoAccordion"> <div class="accordion mt-4 eiffel-elicitation-template-info" id="eiffelTemplateInfoAccordion">
<div class="accordion-item"> <div class="accordion-item">
<h2 class="accordion-header" id="headingConstruction"> <h2 class="accordion-header" id="headingConstruction">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConstruction" aria-expanded="true" aria-controls="collapseConstruction"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseConstruction" aria-expanded="true" aria-controls="collapseConstruction">
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment