summaryrefslogtreecommitdiffstats
path: root/pkg/app
diff options
context:
space:
mode:
authorAndrei Miulescu <lusu777@gmail.com>2018-08-12 19:31:27 +1000
committerAndrei Miulescu <lusu777@gmail.com>2018-08-12 19:31:27 +1000
commitdcd461d29f21a9626d5298a03283b6d8b46312c3 (patch)
tree42f43f27eb7403c60cc05805fc627debff76417b /pkg/app
parent98c22a36fdaf8806f8fafe8f1e23e53f8e97658d (diff)
Restrucure project in a way where it is more modular
Diffstat (limited to 'pkg/app')
-rw-r--r--pkg/app/app.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/pkg/app/app.go b/pkg/app/app.go
new file mode 100644
index 000000000..726567b01
--- /dev/null
+++ b/pkg/app/app.go
@@ -0,0 +1,49 @@
+package app
+
+import (
+ "io"
+
+ "github.com/Sirupsen/logrus"
+ "github.com/jesseduffield/lazygit/pkg/commands"
+ "github.com/jesseduffield/lazygit/pkg/config"
+)
+
+// App struct
+type App struct {
+ closers []io.Closer
+
+ Config config.AppConfigurer
+ Log *logrus.Logger
+ OSCommand *commands.OSCommand
+ GitCommand *commands.GitCommand
+}
+
+// NewApp retruns a new applications
+func NewApp(config config.AppConfigurer) (*App, error) {
+ app := &App{
+ closers: []io.Closer{},
+ Config: config,
+ }
+ var err error
+ app.Log = logrus.New()
+ app.OSCommand, err = commands.NewOSCommand(app.Log)
+ if err != nil {
+ return nil, err
+ }
+ app.GitCommand, err = commands.NewGitCommand(app.Log, app.OSCommand)
+ if err != nil {
+ return nil, err
+ }
+ return app, nil
+}
+
+// Close closes any resources
+func (app *App) Close() error {
+ for _, closer := range app.closers {
+ err := closer.Close()
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}