code.vegaprotocol.io/vega@v0.79.0/paths/interface.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package paths 17 18 // nolint: interfacebloat 19 type Paths interface { 20 CreateCachePathFor(CachePath) (string, error) 21 CreateCacheDirFor(CachePath) (string, error) 22 CreateConfigPathFor(ConfigPath) (string, error) 23 CreateConfigDirFor(ConfigPath) (string, error) 24 CreateDataPathFor(DataPath) (string, error) 25 CreateDataDirFor(DataPath) (string, error) 26 CreateStatePathFor(StatePath) (string, error) 27 CreateStateDirFor(StatePath) (string, error) 28 CachePathFor(CachePath) string 29 ConfigPathFor(ConfigPath) string 30 DataPathFor(DataPath) string 31 StatePathFor(StatePath) string 32 } 33 34 // New instantiates the specific implementation of the Paths interface based on 35 // the value of the customHome. If a customHome is specified the custom 36 // implementation CustomPaths is returned, the standard DefaultPaths otherwise. 37 func New(customHome string) Paths { 38 if len(customHome) != 0 { 39 return &CustomPaths{ 40 CustomHome: customHome, 41 } 42 } 43 44 return &DefaultPaths{} 45 }