Standardized: use recommend extension & forward compatibility before 1.0

This commit is contained in:
Dreamacro 2019-06-18 20:55:26 +08:00
parent 6adafde9a0
commit 407de7388c
4 changed files with 19 additions and 4 deletions

View file

@ -64,7 +64,7 @@ If you have Docker installed, you can run clash directly using `docker-compose`.
The default configuration directory is `$HOME/.config/clash` The default configuration directory is `$HOME/.config/clash`
The name of the configuration file is `config.yml` The name of the configuration file is `config.yaml`
If you want to use another directory, you can use `-d` to control the configuration directory If you want to use another directory, you can use `-d` to control the configuration directory

View file

@ -87,11 +87,26 @@ type rawConfig struct {
Rule []string `yaml:"Rule"` Rule []string `yaml:"Rule"`
} }
// forward compatibility before 1.0
func readRawConfig(path string) ([]byte, error) {
data, err := ioutil.ReadFile(path)
if err == nil && len(data) != 0 {
return data, nil
}
if filepath.Ext(path) != ".yaml" {
return nil, err
}
path = path[:len(path)-5] + ".yml"
return ioutil.ReadFile(path)
}
func readConfig(path string) (*rawConfig, error) { func readConfig(path string) (*rawConfig, error) {
if _, err := os.Stat(path); os.IsNotExist(err) { if _, err := os.Stat(path); os.IsNotExist(err) {
return nil, err return nil, err
} }
data, err := ioutil.ReadFile(path) data, err := readRawConfig(path)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -63,7 +63,7 @@ func Init(dir string) error {
} }
} }
// initial config.yml // initial config.yaml
if _, err := os.Stat(C.Path.Config()); os.IsNotExist(err) { if _, err := os.Stat(C.Path.Config()); os.IsNotExist(err) {
log.Info("Can't find config, create an empty file") log.Info("Can't find config, create an empty file")
os.OpenFile(C.Path.Config(), os.O_CREATE|os.O_WRONLY, 0644) os.OpenFile(C.Path.Config(), os.O_CREATE|os.O_WRONLY, 0644)

View file

@ -42,7 +42,7 @@ func (p *path) HomeDir() string {
} }
func (p *path) Config() string { func (p *path) Config() string {
return P.Join(p.homedir, "config.yml") return P.Join(p.homedir, "config.yaml")
} }
func (p *path) MMDB() string { func (p *path) MMDB() string {