Пример #1
0
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
}
Пример #2
0
/**
* Создать новую информационную базу
*
* @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
}
Пример #3
0
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
}
Пример #4
0
/**
* Загрузить конфигурацию из 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
}
Пример #5
0
/**
* Загрузка свойств объектов метаданных конфигурации
*
* @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
}
Пример #6
0
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
}