52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
package create
|
||
|
||
import (
|
||
"encoding/json"
|
||
"log"
|
||
"os"
|
||
"path"
|
||
"path/filepath"
|
||
"runtime"
|
||
|
||
"git.gulenok.ru/greenhaze/old_carga/internal/global"
|
||
"git.gulenok.ru/greenhaze/old_carga/internal/utils"
|
||
)
|
||
|
||
func CreateProject() {
|
||
//выдает абсолютный путь (по крайней мере на маке) типо
|
||
// /Users/greenhaze/Programming/rela/old_carga
|
||
current_dir, err := os.Getwd()
|
||
if err != nil {
|
||
log.Fatalln("карга не смогла получить текущую директорию")
|
||
}
|
||
|
||
is_empty, err := utils.IsDirEmpty(current_dir)
|
||
if err != nil {
|
||
log.Fatalln("карга не смогла проверить является ли текущая директория пустой")
|
||
}
|
||
if !is_empty {
|
||
log.Fatalln("Текущая директория не пустая. Карга не может создать тут проект")
|
||
}
|
||
createProjectFile(current_dir)
|
||
os.Mkdir(path.Join(current_dir, "исх"), 0755)
|
||
}
|
||
func createProjectFile(dir string) {
|
||
// для примера я добавил базовые таргеты
|
||
base_file := global.ProjectFile{
|
||
ProjectName: filepath.Base(dir),
|
||
Target: runtime.GOOS,
|
||
Modules: make([]global.IncludeModule, 0),
|
||
}
|
||
file_str, err := json.Marshal(&base_file)
|
||
if err != nil {
|
||
log.Fatalln("Карга не смогла собрать базовый файл. Пните пожалуйста разработчика")
|
||
}
|
||
carga_project := filepath.Join(dir, "карга.json")
|
||
|
||
err = os.WriteFile(carga_project, file_str, 0644)
|
||
if err != nil {
|
||
log.Fatalln("карга не смогла записать карга.json в директорию")
|
||
}
|
||
|
||
}
|