package main import ( "io" "io/fs" "os" "path/filepath" "strings" "pkg.jfrech.com/brief/internal/worlds" ) // OLD: ''case strings.Contains(msgidorfilename, "@") && !(strings.HasPrefix(msgidorfilename, "./") || strings.HasPrefix(msgidorfilename, "/")):'' ~> messageid attempt // // s is of msgid or "path/filepath" style func isprobablynotafilename(s string) bool { if strings.Contains(s, "@") { if strings.HasPrefix(s, "<") && strings.HasSuffix(s, ">") { return true } if strings.HasPrefix(filepath.ToSlash(s), "/") || strings.HasPrefix(filepath.ToSlash(s), "./") { return false } return true } return false } // TODO(jfrech): 2023-07-19: Consider disallowing importing from the brief repo. // // TODO(jfrech): 2024-05-22: Consider if osFilenames should check for duplicates (after normalization) in filenames (it currently doesn't). // // filenames are of "path/filepath" flavour. func osOtherworldlyFiles(filenames []string) ([]worlds.OtherworldlyFile, error) { cwd, err := os.Getwd() if err != nil { return nil, err } otherworldlyFiles := make([]worlds.OtherworldlyFile, 0, len(filenames)) for _, filename0 := range filenames { filename := filepath.Clean(filename0) if !filepath.IsAbs(filename) { filename = filepath.Join(cwd, filename) } if !filepath.IsAbs(filename) { panic("unreachable") } otherworldlyFiles = append(otherworldlyFiles, worlds.OtherworldlyFile{ Name: filename0, OpenFunc: func() (io.ReadCloser, error) { f, err := os.Open(filename) if err != nil { if err, ok := err.(*fs.PathError); ok { return nil, &fs.PathError{err.Op, filename0, err.Err} } return nil, err // unreachable } return f, nil }, }) } return otherworldlyFiles, nil } func osOtherworldlyFile(filename string) (worlds.OtherworldlyFile, error) { owfs, err := osOtherworldlyFiles([]string{filename}) if err != nil { return worlds.OtherworldlyFile{}, err } if len(owfs) != 1 { panic("unreachable") } return owfs[0], nil } /* func osMessageIdsOrOtherworldlyFiles(ss []string) ([]MessageIdOrOtherworldlyFile, error) { midOrOwfs := make([]MessageIdOrOtherworldlyFile, 0, len(ss)) for _, s := range ss { TODO osOtherworldlyFiles ... */