github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/util/acme/autocert/cache.go (about) 1 // Copyright 2020 Asim Aslam 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // 15 // Original source: github.com/micro/go-micro/v3/api/server/acme/autocert/cache.go 16 17 package autocert 18 19 import ( 20 "os" 21 "path/filepath" 22 "runtime" 23 ) 24 25 func homeDir() string { 26 if runtime.GOOS == "windows" { 27 return os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") 28 } 29 if h := os.Getenv("HOME"); h != "" { 30 return h 31 } 32 return "/" 33 } 34 35 func cacheDir() string { 36 const base = "golang-autocert" 37 switch runtime.GOOS { 38 case "darwin": 39 return filepath.Join(homeDir(), "Library", "Caches", base) 40 case "windows": 41 for _, ev := range []string{"APPDATA", "CSIDL_APPDATA", "TEMP", "TMP"} { 42 if v := os.Getenv(ev); v != "" { 43 return filepath.Join(v, base) 44 } 45 } 46 // Worst case: 47 return filepath.Join(homeDir(), base) 48 } 49 if xdg := os.Getenv("XDG_CACHE_HOME"); xdg != "" { 50 return filepath.Join(xdg, base) 51 } 52 return filepath.Join(homeDir(), ".cache", base) 53 }