Мне нужно создать конструктор (базовый) и конкретные сборщики для каждого типа сборки.
e.g.
builder for html project
builder for node.js project
builder for python project
builder for java project
....
Основная функциональность будет выглядеть следующим образом:
Файл: Builder.go
интерфейс
type Builder interface {
Build(string) error
}
Файл: nodebuilder.go
//This is the struct ???? not sure what to put here...
type Node struct {
}
func (n Node) Build(path string) error {
//e.g. Run npm install which build nodejs projects
command := exec.Command("npm", "install")
command.Dir = "../path2dir/"
Combined, err := command.CombinedOutput()
if err != nil {
log.Println(err)
}
log.Printf("%s", Combined)
}
...
//return new(error)
}
Основные предположения/процесс:
- Чтобы начать сборку на каждом модуле, мне нужно получить путь к ней.
- Мне нужно скопировать модуль во временную папку
- Мне нужно запустить сборку на нем (реализовать интерфейс сборки, например
mvn build
npm install
и т.д.) - После завершения сборки zip модуль с помощью dep
- Скопируйте его в новую целевую папку
Примечание: рядом с build
и path
(которые должны быть обработаны специально) все остальные функции идентичны
как zip
copy
Где я должен поместить
zip and copy
(в структуре) и, например, каким образом я должен реализовать их и связать их с конструктором?Должен ли я структурировать проект по-разному в соответствии с предположениями?