Compare commits
2 Commits
41a0da0484
...
3d3b4f29b9
Author | SHA1 | Date | |
---|---|---|---|
3d3b4f29b9 | |||
f8d181ed6d |
24
main.go
24
main.go
@@ -56,17 +56,17 @@ func parseRepositoryFromPlugin(filePath string) (string, error) {
|
|||||||
|
|
||||||
scanner := bufio.NewScanner(file)
|
scanner := bufio.NewScanner(file)
|
||||||
repoRegex := regexp.MustCompile(`^#\s*Repository:\s*(.+?)\s*$`)
|
repoRegex := regexp.MustCompile(`^#\s*Repository:\s*(.+?)\s*$`)
|
||||||
|
|
||||||
// Читаем первые несколько строк файла
|
// Читаем первые несколько строк файла
|
||||||
lineCount := 0
|
lineCount := 0
|
||||||
for scanner.Scan() && lineCount < 10 {
|
for scanner.Scan() && lineCount < 10 {
|
||||||
line := strings.TrimSpace(scanner.Text())
|
line := strings.TrimSpace(scanner.Text())
|
||||||
lineCount++
|
lineCount++
|
||||||
|
|
||||||
if matches := repoRegex.FindStringSubmatch(line); matches != nil {
|
if matches := repoRegex.FindStringSubmatch(line); matches != nil {
|
||||||
return strings.TrimSpace(matches[1]), nil
|
return strings.TrimSpace(matches[1]), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если встретили строку без комментария, прекращаем поиск
|
// Если встретили строку без комментария, прекращаем поиск
|
||||||
if line != "" && !strings.HasPrefix(line, "#") {
|
if line != "" && !strings.HasPrefix(line, "#") {
|
||||||
break
|
break
|
||||||
@@ -135,7 +135,7 @@ func main() {
|
|||||||
if cfg.ReposBaseDir == "" {
|
if cfg.ReposBaseDir == "" {
|
||||||
cfg.ReposBaseDir = "/var/cache/alr-updater"
|
cfg.ReposBaseDir = "/var/cache/alr-updater"
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := os.Stat(cfg.ReposBaseDir); os.IsNotExist(err) {
|
if _, err := os.Stat(cfg.ReposBaseDir); os.IsNotExist(err) {
|
||||||
err = os.MkdirAll(cfg.ReposBaseDir, 0o755)
|
err = os.MkdirAll(cfg.ReposBaseDir, 0o755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -148,10 +148,10 @@ func main() {
|
|||||||
// Клонируем все сконфигурированные репозитории
|
// Клонируем все сконфигурированные репозитории
|
||||||
for repoName, repoConfig := range cfg.Repositories {
|
for repoName, repoConfig := range cfg.Repositories {
|
||||||
repoDir := filepath.Join(cfg.ReposBaseDir, repoName)
|
repoDir := filepath.Join(cfg.ReposBaseDir, repoName)
|
||||||
|
|
||||||
if _, err := os.Stat(repoDir); os.IsNotExist(err) {
|
if _, err := os.Stat(repoDir); os.IsNotExist(err) {
|
||||||
log.Info("Cloning repository").Str("name", repoName).Str("url", repoConfig.RepoURL).Send()
|
log.Info("Cloning repository").Str("name", repoName).Str("url", repoConfig.RepoURL).Send()
|
||||||
|
|
||||||
err = os.MkdirAll(repoDir, 0o755)
|
err = os.MkdirAll(repoDir, 0o755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error creating repository directory").Str("repo", repoName).Err(err).Send()
|
log.Fatal("Error creating repository directory").Str("repo", repoName).Err(err).Send()
|
||||||
@@ -164,7 +164,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error cloning repository").Str("repo", repoName).Err(err).Send()
|
log.Fatal("Error cloning repository").Str("repo", repoName).Err(err).Send()
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Info("Repository cloned successfully").Str("name", repoName).Send()
|
log.Info("Repository cloned successfully").Str("name", repoName).Send()
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
log.Fatal("Cannot stat repository directory").Str("repo", repoName).Err(err).Send()
|
log.Fatal("Cannot stat repository directory").Str("repo", repoName).Err(err).Send()
|
||||||
@@ -172,7 +172,7 @@ func main() {
|
|||||||
log.Info("Repository already exists").Str("name", repoName).Send()
|
log.Info("Repository already exists").Str("name", repoName).Send()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем, что есть хотя бы один репозиторий
|
// Проверяем, что есть хотя бы один репозиторий
|
||||||
if len(cfg.Repositories) == 0 {
|
if len(cfg.Repositories) == 0 {
|
||||||
log.Fatal("No repositories configured. At least one repository is required.").Send()
|
log.Fatal("No repositories configured. At least one repository is required.").Send()
|
||||||
@@ -191,21 +191,21 @@ func main() {
|
|||||||
|
|
||||||
for _, starFile := range starFiles {
|
for _, starFile := range starFiles {
|
||||||
pluginName := filepath.Base(strings.TrimSuffix(starFile, ".star"))
|
pluginName := filepath.Base(strings.TrimSuffix(starFile, ".star"))
|
||||||
|
|
||||||
// Парсим комментарий Repository из файла плагина
|
// Парсим комментарий Repository из файла плагина
|
||||||
repoName, err := parseRepositoryFromPlugin(starFile)
|
repoName, err := parseRepositoryFromPlugin(starFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error parsing repository from plugin").Str("file", starFile).Err(err).Send()
|
log.Fatal("Error parsing repository from plugin").Str("file", starFile).Err(err).Send()
|
||||||
}
|
}
|
||||||
if repoName == "" {
|
if repoName == "" {
|
||||||
log.Fatal("Plugin must specify repository").Str("file", starFile).Msg("Add '# Repository: repo-name' comment at the top")
|
log.Fatal("Plugin must specify repository").Str("file", starFile).Str("hint", "Add '# Repository: repo-name' comment at the top").Send()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем, что указанный репозиторий существует в конфигурации
|
// Проверяем, что указанный репозиторий существует в конфигурации
|
||||||
if _, exists := cfg.Repositories[repoName]; !exists {
|
if _, exists := cfg.Repositories[repoName]; !exists {
|
||||||
log.Fatal("Repository not found in configuration").Str("plugin", pluginName).Str("repository", repoName).Send()
|
log.Fatal("Repository not found in configuration").Str("plugin", pluginName).Str("repository", repoName).Send()
|
||||||
}
|
}
|
||||||
|
|
||||||
thread := &starlark.Thread{Name: pluginName}
|
thread := &starlark.Thread{Name: pluginName}
|
||||||
|
|
||||||
predeclared := starlark.StringDict{
|
predeclared := starlark.StringDict{
|
||||||
|
Reference in New Issue
Block a user