func (config *Config) ConfigureSettingsDirectory() error { usr, err := user.Current() if err != nil { return err } config.SettingsDir = filepath.Join(usr.HomeDir, "."+TITLE) if ok, _ := utils.Exists(config.SettingsDir); !ok { log.Println("Creating settings directory: ", config.SettingsDir) if err := os.Mkdir(config.SettingsDir, 0755); err != nil { return err } } config.SavesDir = filepath.Join(config.SettingsDir, "saves") if ok, _ := utils.Exists(config.SavesDir); !ok { log.Println("Creating saves directory: ", config.SavesDir) if err := os.Mkdir(config.SavesDir, 0755); err != nil { return err } } return nil }
/** * Создать новую информационную базу * * @param код результата, который вернуло приложение * @param шаблон конфигурации на основании которого необходимо создать информационную базу (может быть не указан) * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) Create(pathToTemplate string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Создание новой ИБ: "+pathToTemplate) if len(pathToTemplate) > 0 { var exist bool exist, err = utils.Exists(pathToTemplate) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } else if !exist { err = errors.New("Файл не найден: " + pathToTemplate) utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } } err = utils.RemoveIfExist(ib.connectionSettings.GetIbPath()) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, "Ошибка удаления каталога: "+ib.connectionSettings.GetIbPath()+":"+err.Error()) return } /* 1С предлагает для создания новой конфигурации на основе существующего cf файла использование параметра /UseTemplate, но по какой-то причине на некоторых версия платформы он работает не корректно. Поэтому делаем в два этапа: 1. создаем новую конфигурацию 2. загружаем в нее нужный cf файл 3. обновляем конфигурацию информационной базы */ args := []string{} resultCode, err = ib.runApplication(MODE_CREATE, args) if err == nil && len(pathToTemplate) > 0 { resultCode, err = ib.LoadCfg(pathToTemplate) } if err == nil { resultCode, err = ib.UpdateDBCfg() } utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Создание новой ИБ: %t", err == nil)) return }
func (c *Config) Init() error { settingsFilepath := filepath.Join(c.SettingsDir, "config.json") if ok, _ := utils.Exists(settingsFilepath); ok { log.Println("Loading configuration from file:", settingsFilepath) file, err := ioutil.ReadFile(settingsFilepath) if err != nil { return err } //Make sure all settings keys are present var initialMap map[string]interface{} err = json.Unmarshal(file, &initialMap) if err != nil { return ConfigSettingsParseError(fmt.Sprintf("%v", err)) } for _, v := range []string{"Title", "ScreenSize", "ColorMode", "SkipBoot", "DisplayFPS"} { if _, ok := initialMap[v]; !ok { return ConfigValidationError("Could not find settings key: \"" + v + "\" in settings file") } } //Now parse into struct err = json.Unmarshal(file, &c) if err != nil { return err } //Perform validations err = c.Validate() if err != nil { return err } //these are defaults c.Debug = *debug c.BreakOn = *breakOn c.DumpState = *dumpState } else { log.Println("Could not find settings file at", settingsFilepath, "using default values instead...") c.LoadDefaultConfig() } return nil }
/** * Загрузить конфигурацию из cf файла * * @param полный путь к cf файлу * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) LoadCfg(pathToFile string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Загрузка cf:"+pathToFile) exist, err := utils.Exists(pathToFile) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } else if !exist { err = errors.New("Файл не найден: " + pathToFile) utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } args := []string{"/LoadCfg", pathToFile} resultCode, err = ib.runApplication(MODE_DESIGNER, args) utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Загрузка cf: %t", err == nil)) return }
/** * Загрузка свойств объектов метаданных конфигурации * * @param код результата, который вернуло приложение * @param каталог, содержащий XML-файлы конфигурации * * @result код результата и информация об ошибке (если есть) */ func (ib InformationBase) LoadConfigFromFiles(pathToDirectory string) (resultCode int, err error) { utils.AddTextToLog(utils.LogLevel_INFO, "Загрузка конфигурации из xml: "+pathToDirectory) exist, err := utils.Exists(pathToDirectory) if err != nil { utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } else if !exist { err = errors.New("Каталог не найден: " + pathToDirectory) utils.AddTextToLog(utils.LogLevel_ERROR, err.Error()) return } args := []string{"/LoadConfigFromFiles", pathToDirectory} resultCode, err = ib.runApplication(MODE_DESIGNER, args) utils.AddTextToLog(utils.LogLevel_INFO, fmt.Sprintf("-Загрузка конфигурации из xml: %t", err == nil)) return }
func (self *NewsManager) generateVoiceFile(vNews *VoiceNews, speaker int) { //title := strings.Replace(vNews.Title, "/", "", -1) fileName := fmt.Sprintf("%s.mp3", vNews.Id) filePath := self.opt.SpeechFileDir + fileName if utils.Exists(filePath) { l4g.Debug("Voice file exist, news_id=[%s], title=[%s]", vNews.Id, vNews.Title) vNews.VoiceFile = filePath vNews.VoiceStatCh <- 1 vNews.VoiceStatus = 1 return } l4g.Debug("Start generating speech, news_id=[%s], title=[%s]", vNews.Id, vNews.Title) voiceFile, err := self.ttsManager.GenerateSpeechFiles(vNews.Content, fileName, speaker) if err != nil { l4g.Error("Generating speech error, news_id=[%s], title=[%s], error: %s", vNews.Id, vNews.Title, err.Error()) vNews.VoiceStatCh <- -1 vNews.VoiceStatus = -1 return } l4g.Debug("Generating speech complete, news_id=[%s], title=[%s]", vNews.Id, vNews.Title) vNews.VoiceFile = voiceFile vNews.VoiceStatCh <- 1 vNews.VoiceStatus = 1 }