Command line client for Write.as https://write.as/apps/cli
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

75 rindas
1.4 KiB

  1. package config
  2. import (
  3. "os"
  4. "path/filepath"
  5. ini "gopkg.in/ini.v1"
  6. )
  7. const (
  8. // ConfigFile is the full filename for application configuration files
  9. ConfigFile = "config.ini"
  10. )
  11. type (
  12. // APIConfig is not currently used
  13. APIConfig struct {
  14. }
  15. // PostsConfig stores the directory for the user post cache
  16. PostsConfig struct {
  17. Directory string `ini:"directory"`
  18. }
  19. // DefaultConfig stores the default host and user to authenticate with
  20. DefaultConfig struct {
  21. Host string `ini:"host"`
  22. User string `ini:"user"`
  23. }
  24. // Config represents the entire base configuration
  25. Config struct {
  26. API APIConfig `ini:"api"`
  27. Default DefaultConfig `ini:"default"`
  28. Posts PostsConfig `ini:"posts"`
  29. }
  30. )
  31. func LoadConfig(dataDir string) (*Config, error) {
  32. // TODO: load config to var shared across app
  33. cfg, err := ini.LooseLoad(filepath.Join(dataDir, ConfigFile))
  34. if err != nil {
  35. return nil, err
  36. }
  37. // Parse INI file
  38. uc := &Config{}
  39. err = cfg.MapTo(uc)
  40. if err != nil {
  41. return nil, err
  42. }
  43. return uc, nil
  44. }
  45. func SaveConfig(dataDir string, uc *Config) error {
  46. cfg := ini.Empty()
  47. err := ini.ReflectFrom(cfg, uc)
  48. if err != nil {
  49. return err
  50. }
  51. return cfg.SaveTo(filepath.Join(dataDir, ConfigFile))
  52. }
  53. var editors = []string{"WRITEAS_EDITOR", "EDITOR"}
  54. func GetConfiguredEditor() string {
  55. for _, v := range editors {
  56. if e := os.Getenv(v); e != "" {
  57. return e
  58. }
  59. }
  60. return ""
  61. }