refactored logging and browsers init

This commit is contained in:
Chakib Ben Ziane 2019-03-01 19:03:48 +01:00
parent 509af26a61
commit 8130ed9ee2
10 changed files with 50 additions and 50 deletions

View File

@ -13,7 +13,6 @@ import (
"gomark/database" "gomark/database"
"gomark/index" "gomark/index"
"gomark/parsing" "gomark/parsing"
"gomark/profiles"
"gomark/tree" "gomark/tree"
"gomark/watch" "gomark/watch"
"io" "io"
@ -49,7 +48,9 @@ type BrowserPaths struct {
type IBrowser interface { type IBrowser interface {
IWatchable IWatchable
Init() error // browser initializiation goes here
Name() string // Browser name
Init() error // browser initializiation goes here
RegisterHooks(...parsing.Hook) RegisterHooks(...parsing.Hook)
Load() error // Loads bookmarks to db without watching Load() error // Loads bookmarks to db without watching
Shutdown() // Graceful shutdown, it should call the BaseBrowser.Close() Shutdown() // Graceful shutdown, it should call the BaseBrowser.Close()
@ -96,9 +97,6 @@ type BaseBrowser struct {
baseInit bool baseInit bool
bufferInit bool bufferInit bool
//TODO: profile manager here
ProfileManager profiles.ProfileManager
} }
func (bw *BaseBrowser) GetWatcher() *Watcher { func (bw *BaseBrowser) GetWatcher() *Watcher {
@ -109,8 +107,12 @@ func (bw *BaseBrowser) GetWatcher() *Watcher {
} }
return nil return nil
} }
func (bw *BaseBrowser) Name() string {
return bw.name
}
func (bw *BaseBrowser) Load() error { func (bw *BaseBrowser) Load() error {
log.Debug("base loader")
if !bw.baseInit { if !bw.baseInit {
return fmt.Errorf("base init on <%s> missing, call Init() on BaseBrowser !", bw.name) 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 { func (bw *BaseBrowser) Close() error {
err := bw.watcher.W.Close() if bw.watcher != nil {
if err != nil { err := bw.watcher.W.Close()
return err if err != nil {
return err
}
} }
if bw.bufferInit { if bw.bufferInit {
err = bw.BufferDB.Close() err := bw.BufferDB.Close()
if err != nil { if err != nil {
return err return err
} }
@ -218,7 +222,6 @@ func (b *BaseBrowser) Shutdown() {
} }
func (b *BaseBrowser) Init() error { func (b *BaseBrowser) Init() error {
log.Debug("base init")
// Init browser buffer // Init browser buffer
err := b.initBuffer() err := b.initBuffer()
@ -236,7 +239,7 @@ func (b *BaseBrowser) Init() error {
} }
func (b *BaseBrowser) RebuildIndex() { 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() b.URLIndex = index.NewIndex()
tree.WalkBuildIndex(b.NodeTree, b.URLIndex) tree.WalkBuildIndex(b.NodeTree, b.URLIndex)
} }
@ -268,7 +271,7 @@ func (b *BaseBrowser) initBuffer() error {
} }
func (b *BaseBrowser) RegisterHooks(hooks ...parsing.Hook) { func (b *BaseBrowser) RegisterHooks(hooks ...parsing.Hook) {
log.Debug("Registering hooks") log.Debugf("<%s> registering hooks", b.name)
for _, hook := range hooks { for _, hook := range hooks {
b.parseHooks = append(b.parseHooks, hook) b.parseHooks = append(b.parseHooks, hook)
} }

View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"gomark/chrome"
"gomark/database" "gomark/database"
"gomark/parsing" "gomark/parsing"
"gomark/tree" "gomark/tree"
@ -17,8 +18,7 @@ import (
//TODO: replace with new profile manager //TODO: replace with new profile manager
var ChromeData = BrowserPaths{ var ChromeData = BrowserPaths{
BookmarkFile: "Bookmarks", BookmarkDir: "/home/spike/.config/google-chrome-unstable/Default/",
BookmarkDir: "/home/spike/.config/google-chrome-unstable/Default/",
} }
var jsonNodeTypes = struct { var jsonNodeTypes = struct {
@ -86,7 +86,7 @@ func NewChromeBrowser() IBrowser {
browser.name = "chrome" browser.name = "chrome"
browser.bType = TChrome browser.bType = TChrome
browser.baseDir = ChromeData.BookmarkDir browser.baseDir = ChromeData.BookmarkDir
browser.bkFile = ChromeData.BookmarkFile browser.bkFile = chrome.BookmarkFile
browser.Stats = new(parsing.Stats) browser.Stats = new(parsing.Stats)
browser.NodeTree = &tree.Node{Name: "root", Parent: nil, Type: "root"} browser.NodeTree = &tree.Node{Name: "root", Parent: nil, Type: "root"}
browser.useFileWatcher = true browser.useFileWatcher = true
@ -116,7 +116,6 @@ func (bw *ChromeBrowser) Watch() bool {
} }
func (bw *ChromeBrowser) Init() error { func (bw *ChromeBrowser) Init() error {
log.Debug("chrome init")
return bw.BaseBrowser.Init() return bw.BaseBrowser.Init()
} }

5
chrome/config.go Normal file
View File

@ -0,0 +1,5 @@
package chrome
const (
BookmarkFile = "Bookmarks"
)

View File

@ -46,14 +46,14 @@ func startServer(c *cli.Context) {
err := b.Init() err := b.Init()
if err != nil { if err != nil {
log.Critical(err) log.Criticalf("<%s> %s", b.Name(), err)
b.Shutdown() b.Shutdown()
continue continue
} }
err = b.Load() err = b.Load()
if err != nil { if err != nil {
log.Critical(err) log.Criticalf("<%s> %s", b.Name(), err)
b.Shutdown() b.Shutdown()
continue continue
} }

View File

@ -137,13 +137,17 @@ func NewFFBrowser() IBrowser {
} }
func (bw *FFBrowser) Shutdown() { 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() bw.BaseBrowser.Shutdown()
} }
@ -160,7 +164,6 @@ func (bw *FFBrowser) Watch() bool {
} }
func (browser *FFBrowser) Init() error { func (browser *FFBrowser) Init() error {
log.Debug("ff init")
// Initialize `places.sqlite` // Initialize `places.sqlite`
bookmarkPath := path.Join(browser.baseDir, browser.bkFile) bookmarkPath := path.Join(browser.baseDir, browser.bkFile)

View File

@ -2,6 +2,16 @@ package mozilla
import ( import (
"gomark/database" "gomark/database"
"gomark/logging"
)
const (
BookmarkFile = "places.sqlite"
)
var (
log = logging.GetLogger("FF")
ConfigFolder = "$HOME/.mozilla/firefox"
) )
var FirefoxDefaultConfig = &FirefoxConfig{ var FirefoxDefaultConfig = &FirefoxConfig{

View File

@ -1,14 +0,0 @@
package mozilla
import (
"gomark/logging"
)
const (
BookmarkFile = "places.sqlite"
)
var (
log = logging.GetLogger("FF")
ConfigFolder = "$HOME/.mozilla/firefox"
)

View File

@ -15,7 +15,7 @@ import (
) )
type ProfileManager = profiles.ProfileManager type ProfileManager = profiles.ProfileManager
type ProfileGetter = profiles.ProfileGetter type INIProfileLoader = profiles.INIProfileLoader
type PathGetter = profiles.PathGetter type PathGetter = profiles.PathGetter
const ( const (
@ -25,7 +25,7 @@ const (
var ( var (
ReIniProfiles = regexp.MustCompile(`(?i)profile`) ReIniProfiles = regexp.MustCompile(`(?i)profile`)
firefoxProfile = &ProfileGetter{ firefoxProfile = &INIProfileLoader{
//BasePath to be set at runtime in init //BasePath to be set at runtime in init
ProfilesFile: ProfilesFile, ProfilesFile: ProfilesFile,
} }

View File

@ -4,23 +4,17 @@ import (
"testing" "testing"
) )
var OkProfile = &ProfileGetter{ var OkProfile = &INIProfileLoader{
BasePath: "testdata", BasePath: "testdata",
ProfilesFile: "profiles_ok.ini", ProfilesFile: "profiles_ok.ini",
} }
var BadProfile = &ProfileGetter{ var BadProfile = &INIProfileLoader{
BasePath: "testdata", BasePath: "testdata",
ProfilesFile: "profiles_bad.ini", ProfilesFile: "profiles_bad.ini",
} }
func TestListProfiles(t *testing.T) { 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) { t.Run("OK", func(t *testing.T) {
pm := &FFProfileManager{ pm := &FFProfileManager{
pathGetter: OkProfile, pathGetter: OkProfile,

View File

@ -29,11 +29,11 @@ type PathGetter interface {
Get() string Get() string
} }
type ProfileGetter struct { type INIProfileLoader struct {
BasePath string BasePath string
ProfilesFile string ProfilesFile string
} }
func (pg *ProfileGetter) Get() string { func (pg *INIProfileLoader) Get() string {
return filepath.Join(pg.BasePath, pg.ProfilesFile) return filepath.Join(pg.BasePath, pg.ProfilesFile)
} }