// This file is part of the happyDomain (R) project. // Copyright (c) 2020-2024 happyDomain // Authors: Pierre-Olivier Mercier, et al. // // This program is offered under a commercial and under the AGPL license. // For commercial licensing, contact us at . // // For AGPL licensing: // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . package config // import "git.happydns.org/happyDomain/config" import ( "bufio" "fmt" "os" "strings" ) // parseFile opens the file at the given filename path, then treat each line // not starting with '#' as a configuration statement. func (o *Options) parseFile(filename string) error { fp, err := os.Open(filename) if err != nil { return err } defer fp.Close() scanner := bufio.NewScanner(fp) n := 0 for scanner.Scan() { n += 1 line := strings.TrimSpace(scanner.Text()) if len(line) > 0 && !strings.HasPrefix(line, "#") && strings.Index(line, "=") > 0 { err := o.parseLine(line) if err != nil { return fmt.Errorf("%v:%d: error in configuration: %w", filename, n, err) } } } return nil }