diff --git a/browsers.go b/browsers.go index 1ec0296..c8e73fe 100644 --- a/browsers.go +++ b/browsers.go @@ -13,7 +13,6 @@ import ( "gomark/database" "gomark/index" "gomark/parsing" - "gomark/profiles" "gomark/tree" "gomark/watch" "io" @@ -49,7 +48,9 @@ type BrowserPaths struct { type IBrowser interface { IWatchable - Init() error // browser initializiation goes here + + Name() string // Browser name + Init() error // browser initializiation goes here RegisterHooks(...parsing.Hook) Load() error // Loads bookmarks to db without watching Shutdown() // Graceful shutdown, it should call the BaseBrowser.Close() @@ -96,9 +97,6 @@ type BaseBrowser struct { baseInit bool bufferInit bool - - //TODO: profile manager here - ProfileManager profiles.ProfileManager } func (bw *BaseBrowser) GetWatcher() *Watcher { @@ -109,8 +107,12 @@ func (bw *BaseBrowser) GetWatcher() *Watcher { } return nil } + +func (bw *BaseBrowser) Name() string { + return bw.name +} + func (bw *BaseBrowser) Load() error { - log.Debug("base loader") if !bw.baseInit { return fmt.Errorf("base init on <%s> missing, call Init() on BaseBrowser !", bw.name) @@ -194,13 +196,15 @@ func (bw *BaseBrowser) ResetWatcher() { } func (bw *BaseBrowser) Close() error { - err := bw.watcher.W.Close() - if err != nil { - return err + if bw.watcher != nil { + err := bw.watcher.W.Close() + if err != nil { + return err + } } if bw.bufferInit { - err = bw.BufferDB.Close() + err := bw.BufferDB.Close() if err != nil { return err } @@ -218,7 +222,6 @@ func (b *BaseBrowser) Shutdown() { } func (b *BaseBrowser) Init() error { - log.Debug("base init") // Init browser buffer err := b.initBuffer() @@ -236,7 +239,7 @@ func (b *BaseBrowser) Init() error { } func (b *BaseBrowser) RebuildIndex() { - log.Debugf("Rebuilding index based on current nodeTree") + log.Debugf("<%s> rebuilding index based on current nodeTree", b.name) b.URLIndex = index.NewIndex() tree.WalkBuildIndex(b.NodeTree, b.URLIndex) } @@ -268,7 +271,7 @@ func (b *BaseBrowser) initBuffer() error { } func (b *BaseBrowser) RegisterHooks(hooks ...parsing.Hook) { - log.Debug("Registering hooks") + log.Debugf("<%s> registering hooks", b.name) for _, hook := range hooks { b.parseHooks = append(b.parseHooks, hook) } diff --git a/chrome.go b/chrome.go index d9e91a4..bc4db99 100644 --- a/chrome.go +++ b/chrome.go @@ -1,6 +1,7 @@ package main import ( + "gomark/chrome" "gomark/database" "gomark/parsing" "gomark/tree" @@ -17,8 +18,7 @@ import ( //TODO: replace with new profile manager var ChromeData = BrowserPaths{ - BookmarkFile: "Bookmarks", - BookmarkDir: "/home/spike/.config/google-chrome-unstable/Default/", + BookmarkDir: "/home/spike/.config/google-chrome-unstable/Default/", } var jsonNodeTypes = struct { @@ -86,7 +86,7 @@ func NewChromeBrowser() IBrowser { browser.name = "chrome" browser.bType = TChrome browser.baseDir = ChromeData.BookmarkDir - browser.bkFile = ChromeData.BookmarkFile + browser.bkFile = chrome.BookmarkFile browser.Stats = new(parsing.Stats) browser.NodeTree = &tree.Node{Name: "root", Parent: nil, Type: "root"} browser.useFileWatcher = true @@ -116,7 +116,6 @@ func (bw *ChromeBrowser) Watch() bool { } func (bw *ChromeBrowser) Init() error { - log.Debug("chrome init") return bw.BaseBrowser.Init() } diff --git a/chrome/config.go b/chrome/config.go new file mode 100644 index 0000000..4af3d0a --- /dev/null +++ b/chrome/config.go @@ -0,0 +1,5 @@ +package chrome + +const ( + BookmarkFile = "Bookmarks" +) diff --git a/commands.go b/commands.go index 079791d..82036a0 100644 --- a/commands.go +++ b/commands.go @@ -46,14 +46,14 @@ func startServer(c *cli.Context) { err := b.Init() if err != nil { - log.Critical(err) + log.Criticalf("<%s> %s", b.Name(), err) b.Shutdown() continue } err = b.Load() if err != nil { - log.Critical(err) + log.Criticalf("<%s> %s", b.Name(), err) b.Shutdown() continue } diff --git a/firefox.go b/firefox.go index 3afee5d..327fedc 100644 --- a/firefox.go +++ b/firefox.go @@ -137,13 +137,17 @@ func NewFFBrowser() IBrowser { } func (bw *FFBrowser) Shutdown() { + fflog.Debugf("shutting down ... ") + + if bw.places != nil { + + err := bw.places.Close() + if err != nil { + fflog.Critical(err) + } - err := bw.places.Close() - if err != nil { - fflog.Critical(err) } - fflog.Debugf("shutting down ... ") bw.BaseBrowser.Shutdown() } @@ -160,7 +164,6 @@ func (bw *FFBrowser) Watch() bool { } func (browser *FFBrowser) Init() error { - log.Debug("ff init") // Initialize `places.sqlite` bookmarkPath := path.Join(browser.baseDir, browser.bkFile) diff --git a/mozilla/config_default.go b/mozilla/config.go similarity index 66% rename from mozilla/config_default.go rename to mozilla/config.go index 1bfbada..d507c2a 100644 --- a/mozilla/config_default.go +++ b/mozilla/config.go @@ -2,6 +2,16 @@ package mozilla import ( "gomark/database" + "gomark/logging" +) + +const ( + BookmarkFile = "places.sqlite" +) + +var ( + log = logging.GetLogger("FF") + ConfigFolder = "$HOME/.mozilla/firefox" ) var FirefoxDefaultConfig = &FirefoxConfig{ diff --git a/mozilla/firefox.go b/mozilla/firefox.go deleted file mode 100644 index e4d8eae..0000000 --- a/mozilla/firefox.go +++ /dev/null @@ -1,14 +0,0 @@ -package mozilla - -import ( - "gomark/logging" -) - -const ( - BookmarkFile = "places.sqlite" -) - -var ( - log = logging.GetLogger("FF") - ConfigFolder = "$HOME/.mozilla/firefox" -) diff --git a/mozilla/firefox_profiles.go b/mozilla/firefox_profiles.go index 6f3a7f6..df71fd5 100644 --- a/mozilla/firefox_profiles.go +++ b/mozilla/firefox_profiles.go @@ -15,7 +15,7 @@ import ( ) type ProfileManager = profiles.ProfileManager -type ProfileGetter = profiles.ProfileGetter +type INIProfileLoader = profiles.INIProfileLoader type PathGetter = profiles.PathGetter const ( @@ -25,7 +25,7 @@ const ( var ( ReIniProfiles = regexp.MustCompile(`(?i)profile`) - firefoxProfile = &ProfileGetter{ + firefoxProfile = &INIProfileLoader{ //BasePath to be set at runtime in init ProfilesFile: ProfilesFile, } diff --git a/mozilla/firefox_profiles_test.go b/mozilla/firefox_profiles_test.go index 9e36578..1070cc2 100644 --- a/mozilla/firefox_profiles_test.go +++ b/mozilla/firefox_profiles_test.go @@ -4,23 +4,17 @@ import ( "testing" ) -var OkProfile = &ProfileGetter{ +var OkProfile = &INIProfileLoader{ BasePath: "testdata", ProfilesFile: "profiles_ok.ini", } -var BadProfile = &ProfileGetter{ +var BadProfile = &INIProfileLoader{ BasePath: "testdata", ProfilesFile: "profiles_bad.ini", } func TestListProfiles(t *testing.T) { - //_, filename, _, _ := runtime.Caller(0) - //dir, err := filepath.Abs(filepath.Dir(filename)) - //if err != nil { - //t.Error(err) - //} - //t.Error(dir) t.Run("OK", func(t *testing.T) { pm := &FFProfileManager{ pathGetter: OkProfile, diff --git a/profiles/profiles.go b/profiles/profiles.go index f1ca897..797dacb 100644 --- a/profiles/profiles.go +++ b/profiles/profiles.go @@ -29,11 +29,11 @@ type PathGetter interface { Get() string } -type ProfileGetter struct { +type INIProfileLoader struct { BasePath string ProfilesFile string } -func (pg *ProfileGetter) Get() string { +func (pg *INIProfileLoader) Get() string { return filepath.Join(pg.BasePath, pg.ProfilesFile) }