Repo: reorganize the repo structure
This commit is contained in:
		
							
								
								
									
										30
									
								
								framework/providers/app/provider.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								framework/providers/app/provider.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
package app
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.vinchent.xyz/vinchent/go-web/framework"
 | 
			
		||||
	"git.vinchent.xyz/vinchent/go-web/framework/contract"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type GoWebProvider struct {
 | 
			
		||||
	BaseFolder string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebProvider) Register(c framework.Container) framework.NewInstance {
 | 
			
		||||
	return NewGoWebApp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebProvider) Init(c framework.Container) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebProvider) InstantiateLater() bool {
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebProvider) Params(c framework.Container) []interface{} {
 | 
			
		||||
	return []interface{}{c, goweb.BaseFolder}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebProvider) Name() string {
 | 
			
		||||
	return contract.AppName
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										102
									
								
								framework/providers/app/service.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								framework/providers/app/service.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,102 @@
 | 
			
		||||
package app
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"git.vinchent.xyz/vinchent/go-web/framework"
 | 
			
		||||
	"git.vinchent.xyz/vinchent/go-web/framework/utils"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type GoWebApp struct {
 | 
			
		||||
	container  framework.Container
 | 
			
		||||
	baseFolder string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const AppVersion = "0.0.1"
 | 
			
		||||
 | 
			
		||||
func ErrParamsAmount(want int, got int) error {
 | 
			
		||||
	return fmt.Errorf("want %d arguments, got %d", want, got)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewGoWebApp creates a new GoWeb app.
 | 
			
		||||
//
 | 
			
		||||
// \params[in]: container
 | 
			
		||||
// \params[in]: baseFolder
 | 
			
		||||
func NewGoWebApp(params ...interface{}) (interface{}, error) {
 | 
			
		||||
	if len(params) != 2 {
 | 
			
		||||
		return nil, ErrParamsAmount(2, len(params))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	container := params[0].(framework.Container)
 | 
			
		||||
	baseFolder := params[1].(string)
 | 
			
		||||
	return &GoWebApp{
 | 
			
		||||
		container:  container,
 | 
			
		||||
		baseFolder: baseFolder,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) Version() string {
 | 
			
		||||
	return AppVersion
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) BaseFolder() string {
 | 
			
		||||
	if goweb.baseFolder != "" {
 | 
			
		||||
		return goweb.baseFolder
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// not defined yet
 | 
			
		||||
	var baseFolder string
 | 
			
		||||
	flag.StringVar(
 | 
			
		||||
		&baseFolder,
 | 
			
		||||
		"base_folder",
 | 
			
		||||
		utils.GetExecDirectory(),
 | 
			
		||||
		"base_folder of the app. Use the current path as default value",
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	return baseFolder
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) ConfigFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.BaseFolder(), "config")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) StorageFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.BaseFolder(), "storage")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) LogFolder() string {
 | 
			
		||||
	// storage/log
 | 
			
		||||
	return filepath.Join(goweb.StorageFolder(), "log")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) ProvidersFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.BaseFolder(), "providers")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) HttpFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.BaseFolder(), "http")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) MiddlewaresFolder() string {
 | 
			
		||||
	// http/middlewares
 | 
			
		||||
	return filepath.Join(goweb.HttpFolder(), "middlewares")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) ConsoleFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.BaseFolder(), "console")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) CommandsFolder() string {
 | 
			
		||||
	// console/commands
 | 
			
		||||
	return filepath.Join(goweb.ConsoleFolder(), "commands")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) RuntimeFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.StorageFolder(), "runtime")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (goweb *GoWebApp) TestsFolder() string {
 | 
			
		||||
	return filepath.Join(goweb.BaseFolder(), "tests")
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user