datadir_android.go raw

   1  // SPDX-License-Identifier: Unlicense OR MIT
   2  
   3  // +build android
   4  
   5  package app
   6  
   7  import "C"
   8  
   9  import (
  10  	"os"
  11  	"path/filepath"
  12  	"sync"
  13  
  14  	"github.com/p9c/p9/pkg/gel/gio/app/internal/wm"
  15  )
  16  
  17  var (
  18  	dataDirOnce sync.Once
  19  	dataPath    string
  20  )
  21  
  22  func dataDir() (string, error) {
  23  	dataDirOnce.Do(func() {
  24  		dataPath = wm.GetDataDir()
  25  		// Set XDG_CACHE_HOME to make os.UserCacheDir work.
  26  		if _, exists := os.LookupEnv("XDG_CACHE_HOME"); !exists {
  27  			cachePath := filepath.Join(dataPath, "cache")
  28  			os.Setenv("XDG_CACHE_HOME", cachePath)
  29  		}
  30  		// Set XDG_CONFIG_HOME to make os.UserConfigDir work.
  31  		if _, exists := os.LookupEnv("XDG_CONFIG_HOME"); !exists {
  32  			cfgPath := filepath.Join(dataPath, "config")
  33  			os.Setenv("XDG_CONFIG_HOME", cfgPath)
  34  		}
  35  		// Set HOME to make os.UserHomeDir work.
  36  		if _, exists := os.LookupEnv("HOME"); !exists {
  37  			os.Setenv("HOME", dataPath)
  38  		}
  39  	})
  40  	return dataPath, nil
  41  }
  42