diff --git a/.goreleaser.debug.yaml b/.goreleaser.debug.yaml index fb6f160..04e112a 100644 --- a/.goreleaser.debug.yaml +++ b/.goreleaser.debug.yaml @@ -113,24 +113,22 @@ builds: goarm: - "7" archives: - - name_template: "{{ .Os }}-{{ .Arch }}-{{ .ProjectName }}-v{{ .Version }}" + - name_template: >- + {{ .Os }}-{{- if eq .Arch "arm" }}arm-7{{- else }}{{ .Arch }}{{- end }}-{{ .ProjectName }}-v{{ .Version }} id: casaos builds: - casaos-amd64 - casaos-arm64 - casaos-arm-7 - replacements: - arm: arm-7 files: - build/**/* - - name_template: "{{ .Os }}-{{ .Arch }}-{{ .ProjectName }}-migration-tool-v{{ .Version }}" + - name_template: >- + {{ .Os }}-{{- if eq .Arch "arm" }}arm-7{{- else }}{{ .Arch }}{{- end }}-{{ .ProjectName }}-migration-tool-v{{ .Version }} id: casaos-migration-tool builds: - casaos-migration-tool-amd64 - casaos-migration-tool-arm64 - casaos-migration-tool-arm-7 - replacements: - arm: arm-7 files: - build/sysroot/etc/**/* checksum: diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 40cd42c..f4f67c7 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -143,24 +143,22 @@ builds: goarm: - "7" archives: - - name_template: "{{ .Os }}-{{ .Arch }}-{{ .ProjectName }}-v{{ .Version }}" + - name_template: >- + {{ .Os }}-{{- if eq .Arch "arm" }}arm-7{{- else }}{{ .Arch }}{{- end }}-{{ .ProjectName }}-v{{ .Version }} id: casaos builds: - casaos-amd64 - casaos-arm64 - casaos-arm-7 - replacements: - arm: arm-7 files: - build/**/* - - name_template: "{{ .Os }}-{{ .Arch }}-{{ .ProjectName }}-migration-tool-v{{ .Version }}" + - name_template: >- + {{ .Os }}-{{- if eq .Arch "arm" }}arm-7{{- else }}{{ .Arch }}{{- end }}-{{ .ProjectName }}-migration-tool-v{{ .Version }} id: casaos-migration-tool builds: - casaos-migration-tool-amd64 - casaos-migration-tool-arm64 - casaos-migration-tool-arm-7 - replacements: - arm: arm-7 files: - build/sysroot/etc/**/* checksum: diff --git a/build/sysroot/usr/lib/systemd/system/casaos.service b/build/sysroot/usr/lib/systemd/system/casaos.service index 332062b..c5ba181 100644 --- a/build/sysroot/usr/lib/systemd/system/casaos.service +++ b/build/sysroot/usr/lib/systemd/system/casaos.service @@ -1,7 +1,6 @@ [Unit] After=casaos-message-bus.service After=rclone.service -ConditionFileNotEmpty=/etc/casaos/casaos.conf Description=CasaOS Main Service [Service] diff --git a/cmd/migration-tool/main.go b/cmd/migration-tool/main.go index 91a68a4..83c41d1 100644 --- a/cmd/migration-tool/main.go +++ b/cmd/migration-tool/main.go @@ -77,7 +77,7 @@ func init() { } } - config.InitSetup(configFlag) + config.InitSetup(configFlag, "") if len(dbFlag) == 0 { dbFlag = config.AppInfo.DBPath + "/db" diff --git a/main.go b/main.go index 82c8733..0240a0e 100644 --- a/main.go +++ b/main.go @@ -48,6 +48,9 @@ var ( //go:embed api/casaos/openapi.yaml _docYAML string + //go:embed build/sysroot/etc/casaos/casaos.conf.sample + _confSample string + configFlag = flag.String("c", "", "config address") dbFlag = flag.String("db", "", "db path") versionFlag = flag.Bool("v", false, "version") @@ -63,7 +66,7 @@ func init() { println("git commit:", commit) println("build date:", date) - config.InitSetup(*configFlag) + config.InitSetup(*configFlag, _confSample) logger.LogInit(config.AppInfo.LogPath, config.AppInfo.LogSaveName, config.AppInfo.LogFileExt) if len(*dbFlag) == 0 { diff --git a/pkg/config/config.go b/pkg/config/config.go index 385644b..2fcc724 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -10,6 +10,10 @@ */ package config -const ( - USERCONFIGURL = "/etc/casaos/casaos.conf" +import ( + "path/filepath" + + "github.com/IceWhaleTech/CasaOS-Common/utils/constants" ) + +var CasaOSConfigFilePath = filepath.Join(constants.DefaultConfigPath, "casaos.conf") diff --git a/pkg/config/init.go b/pkg/config/init.go index abd6068..853a738 100644 --- a/pkg/config/init.go +++ b/pkg/config/init.go @@ -14,80 +14,72 @@ import ( "fmt" "log" "os" - "path" "path/filepath" - "runtime" - "strings" + "github.com/IceWhaleTech/CasaOS-Common/utils/constants" + "github.com/IceWhaleTech/CasaOS/common" "github.com/IceWhaleTech/CasaOS/model" "github.com/go-ini/ini" ) -// 系统配置 -var SysInfo = &model.SysInfoModel{} +var ( + SysInfo = &model.SysInfoModel{} + AppInfo = &model.APPModel{ + DBPath: constants.DefaultDataPath, + LogPath: constants.DefaultLogPath, + LogSaveName: common.SERVICENAME, + LogFileExt: "log", + ShellPath: "/usr/share/casaos/shell", + UserDataPath: filepath.Join(constants.DefaultDataPath, "conf"), + } + CommonInfo = &model.CommonModel{ + RuntimePath: constants.DefaultRuntimePath, + } + ServerInfo = &model.ServerModel{} + SystemConfigInfo = &model.SystemConfig{} + FileSettingInfo = &model.FileSetting{} -// 用户相关 -var AppInfo = &model.APPModel{} - -var CommonInfo = &model.CommonModel{} - -// var RedisInfo = &model.RedisModel{} - -// server相关 -var ServerInfo = &model.ServerModel{} - -var SystemConfigInfo = &model.SystemConfig{} - -var FileSettingInfo = &model.FileSetting{} - -var Cfg *ini.File + Cfg *ini.File + ConfigFilePath string +) // 初始化设置,获取系统的部分信息。 -func InitSetup(config string) { - configDir := USERCONFIGURL +func InitSetup(config string, sample string) { + ConfigFilePath = CasaOSConfigFilePath if len(config) > 0 { - configDir = config + ConfigFilePath = config } - if runtime.GOOS == "darwin" { - configDir = "./conf/conf.conf" - } - var err error - // 读取文件 - Cfg, err = ini.Load(configDir) - if err != nil { - Cfg, err = ini.Load("/etc/casaos.conf") + + // create default config file if not exist + if _, err := os.Stat(ConfigFilePath); os.IsNotExist(err) { + fmt.Println("config file not exist, create it") + // create config file + file, err := os.Create(ConfigFilePath) if err != nil { - Cfg, err = ini.Load("/casaOS/server/conf/conf.ini") - if err != nil { - fmt.Printf("Fail to read file: %v", err) - os.Exit(1) - } + panic(err) + } + defer file.Close() + + // write default config + _, err = file.WriteString(sample) + if err != nil { + panic(err) } } + + var err error + + // 读取文件 + Cfg, err = ini.Load(ConfigFilePath) + if err != nil { + panic(err) + } + mapTo("app", AppInfo) - // mapTo("redis", RedisInfo) mapTo("server", ServerInfo) mapTo("system", SystemConfigInfo) mapTo("file", FileSettingInfo) mapTo("common", CommonInfo) - SystemConfigInfo.ConfigPath = configDir - if len(AppInfo.DBPath) == 0 { - AppInfo.DBPath = "/var/lib/casaos" - } - if len(AppInfo.LogPath) == 0 { - AppInfo.LogPath = "/var/log/casaos/" - } - if len(AppInfo.ShellPath) == 0 { - AppInfo.ShellPath = "/usr/share/casaos/shell" - } - if len(AppInfo.UserDataPath) == 0 { - AppInfo.UserDataPath = "/var/lib/casaos/conf" - } - if len(CommonInfo.RuntimePath) == 0 { - CommonInfo.RuntimePath = "/var/run/casaos" - } - Cfg.SaveTo(configDir) - // AppInfo.ProjectPath = getCurrentDirectory() //os.Getwd() } // 映射 @@ -97,21 +89,3 @@ func mapTo(section string, v interface{}) { log.Fatalf("Cfg.MapTo %s err: %v", section, err) } } - -// 获取当前执行文件绝对路径(go run) -func getCurrentAbPathByCaller() string { - var abPath string - _, filename, _, ok := runtime.Caller(0) - if ok { - abPath = path.Dir(filename) - } - return abPath -} - -func getCurrentDirectory() string { - dir, err := filepath.Abs(filepath.Dir(os.Args[0])) - if err != nil { - log.Fatal(err) - } - return strings.Replace(dir, "\\", "/", -1) -}