func New(opts ...config.Option) (core.Identifier, error) { for _, v := range opts { v() } loc, err := newLOC(config.LOC()) if err != nil { return nil, err } // set updated updated := loc.(fdds).Updated().Format(dateFmt) // add extensions for _, v := range config.Extend() { e, err := newLOC(v) if err != nil { return nil, fmt.Errorf("LOC: error loading extension file %s; got %s", v, err) } loc = identifier.Join(loc, e) } // apply config loc = identifier.ApplyConfig(loc) // return identifier return &Identifier{ infos: infos(loc.Infos()), Base: identifier.New(loc, config.ZipLOC(), updated), }, nil }
// set identifiers joins signatures in the DROID signature file with any extra reports and adds that to the pronom object func (p *pronom) setParseables() error { d, err := newDroid(config.Droid()) if err != nil { return fmt.Errorf("Pronom: error loading Droid file; got %s\nYou must have a Droid file to build a signature", err) } // if noreports set if config.Reports() == "" { p.Parseable = d } else { // otherwise build from reports // get list of puids that applies limit or exclude filters (actual filtering of Parseable delegated to core/identifier) puids := d.IDs() if config.HasLimit() { puids = config.Limit(puids) } else if config.HasExclude() { puids = config.Exclude(puids) } r, err := newReports(puids, d.idsPuids()) if err != nil { return fmt.Errorf("Pronom: error loading reports; got %s\nYou must download PRONOM reports to build a signature (unless you use the -noreports flag). You can use `roy harvest` to download reports", err) } p.Parseable = r } // add extensions for _, v := range config.Extend() { e, err := newDroid(v) if err != nil { return fmt.Errorf("Pronom: error loading extension file; got %s", err) } p.Parseable = identifier.Join(p.Parseable, e) } // exclude byte signatures where also have container signatures, unless doubleup set if !config.DoubleUp() { p.Parseable = doublesFilter{ config.ExcludeDoubles(p.IDs(), p.c.IDs()), p.Parseable, } } return nil }
func New(opts ...config.Option) (core.Identifier, error) { for _, v := range opts { v() } mi, err := newMIMEInfo(config.MIMEInfo()) if err != nil { return nil, err } // add extensions for _, v := range config.Extend() { e, err := newMIMEInfo(v) if err != nil { return nil, fmt.Errorf("MIMEinfo: error loading extension file %s; got %s", v, err) } mi = identifier.Join(mi, e) } // apply config mi = identifier.ApplyConfig(mi) // return identifier return &Identifier{ infos: infos(mi.Infos()), Base: identifier.New(mi, config.ZipMIME()), }, nil }