diff --git a/main.go b/main.go index 045527a6811..9639d432bea 100644 --- a/main.go +++ b/main.go @@ -69,12 +69,16 @@ func main() { } func initRuntime() { - setting.NewConfigContext(&setting.CommandLineArgs{ + err := setting.NewConfigContext(&setting.CommandLineArgs{ Config: *configFile, HomePath: *homePath, Args: flag.Args(), }) + if err != nil { + log.Fatal(3, err.Error()) + } + log.Info("Starting Grafana") log.Info("Version: %v, Commit: %v, Build date: %v", setting.BuildVersion, setting.BuildCommit, time.Unix(setting.BuildStamp, 0)) setting.LogConfigurationInfo() diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 6d702bf3732..b706d5a0957 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -6,6 +6,7 @@ package setting import ( "bytes" "encoding/json" + "errors" "fmt" "net/url" "os" @@ -355,24 +356,26 @@ func setHomePath(args *CommandLineArgs) { } } -func getStaticRootPath(configValue string) string { - if configValue != "public" { - return configValue +var skipStaticRootValidation bool = false + +func validateStaticRootPath() error { + if skipStaticRootValidation { + return nil } - if _, err := os.Stat(path.Join(HomePath, configValue, "css")); err == nil { - return configValue + if _, err := os.Stat(path.Join(StaticRootPath, "css")); err == nil { + return nil } - if _, err := os.Stat(path.Join(HomePath, "public_gen", "css")); err == nil { - return "public_gen" + if _, err := os.Stat(StaticRootPath + "_gen/css"); err == nil { + StaticRootPath = StaticRootPath + "_gen" + return nil } - log.Fatal(3, "Failed to detect generated css or javascript files in static root (%s), have you executed default grunt task?", configValue) - return "" + return errors.New("Failed to detect generated css or javascript files in static root (%s), have you executed default grunt task?") } -func NewConfigContext(args *CommandLineArgs) { +func NewConfigContext(args *CommandLineArgs) error { setHomePath(args) loadConfiguration(args) @@ -391,10 +394,14 @@ func NewConfigContext(args *CommandLineArgs) { Domain = server.Key("domain").MustString("localhost") HttpAddr = server.Key("http_addr").MustString("0.0.0.0") HttpPort = server.Key("http_port").MustString("3000") - StaticRootPath = makeAbsolute(getStaticRootPath(server.Key("static_root_path").String()), HomePath) RouterLogging = server.Key("router_logging").MustBool(false) EnableGzip = server.Key("enable_gzip").MustBool(false) EnforceDomain = server.Key("enforce_domain").MustBool(false) + StaticRootPath = makeAbsolute(server.Key("static_root_path").String(), HomePath) + + if err := validateStaticRootPath(); err != nil { + return err + } // read security settings security := Cfg.Section("security") @@ -455,6 +462,8 @@ func NewConfigContext(args *CommandLineArgs) { if VerifyEmailEnabled && !Smtp.Enabled { log.Warn("require_email_validation is enabled but smpt is disabled") } + + return nil } func readSessionConfig() { diff --git a/pkg/setting/setting_test.go b/pkg/setting/setting_test.go index 00da9b4f416..ef44f55551c 100644 --- a/pkg/setting/setting_test.go +++ b/pkg/setting/setting_test.go @@ -11,9 +11,11 @@ import ( func TestLoadingSettings(t *testing.T) { Convey("Testing loading settings from ini file", t, func() { + skipStaticRootValidation = true Convey("Given the default ini files", func() { - NewConfigContext(&CommandLineArgs{HomePath: "../../"}) + err := NewConfigContext(&CommandLineArgs{HomePath: "../../"}) + So(err, ShouldBeNil) So(AdminUser, ShouldEqual, "admin") }) diff --git a/public/app/controllers/signupCtrl.ts b/public/app/controllers/signupCtrl.ts index 20cd41c263e..27f0aeabac4 100644 --- a/public/app/controllers/signupCtrl.ts +++ b/public/app/controllers/signupCtrl.ts @@ -1,10 +1,8 @@ -/// -/// -/// -/// +/// +/// -var angular = require('angular'); -var config = require('config'); +import angular = require('angular'); +declare var config : any; var module = angular.module('grafana.controllers'); diff --git a/public/app/core/filters/filters.ts b/public/app/core/filters/filters.ts index be9c3742866..67a3fa655f8 100644 --- a/public/app/core/filters/filters.ts +++ b/public/app/core/filters/filters.ts @@ -1,5 +1,5 @@ /// -// + import angular = require('angular'); import jquery = require('jquery'); import moment = require('moment');