github.com/sapplications/sb@v0.0.0-20240116135441-1a13cafe3497/cmd/suite_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/go-plugin"
     9  	"github.com/sapplications/dl"
    10  	"github.com/sapplications/sb"
    11  	"github.com/sapplications/sb/plugins"
    12  	"gopkg.in/check.v1"
    13  )
    14  
    15  func Test(t *testing.T) {
    16  	check.TestingT(t)
    17  }
    18  
    19  func setCmd(cmd string, args ...string) {
    20  	os.Args = os.Args[:1]
    21  	os.Args = append(os.Args, cmd)
    22  	if len(args) > 0 {
    23  		os.Args = append(os.Args, args...)
    24  	}
    25  }
    26  
    27  type CmdSuite struct {
    28  	cmd SmartBuilder
    29  }
    30  
    31  var _ = check.Suite(&CmdSuite{})
    32  
    33  func (s *CmdSuite) SetUpTest(c *check.C) {
    34  	sc := sb.SmartCreator{}
    35  	manager := &smoduleManager{}
    36  	manager.Kind = sb.ModKind.SA
    37  	sc.ModManager = manager
    38  
    39  	sb := appSmartBuilder{}
    40  	sb.Builder = &plugins.BuilderPlugin{}
    41  	manager = &smoduleManager{}
    42  	manager.Kind = "sb"
    43  	sb.ModManager = manager
    44  	sb.PluginHandshake = plugin.HandshakeConfig{
    45  		ProtocolVersion:  1,
    46  		MagicCookieKey:   "SMART_PLUGIN",
    47  		MagicCookieValue: "sbuilder",
    48  	}
    49  
    50  	s.cmd = SmartBuilder{}
    51  	// s.cmd.SilentErrors = true
    52  
    53  	// s.cmd.ModManager = CmdManager{}
    54  	// s.cmd.ModManager.Use = "mod"
    55  	// s.cmd.ModManager.ModManager = &sb
    56  
    57  	// s.cmd.Creator = CmdCreator{}
    58  	// s.cmd.Creator.Use = "new"
    59  	// s.cmd.Creator.Creator = &sc
    60  
    61  	// s.cmd.Coder = CmdCoder{}
    62  	// s.cmd.Coder.Use = "code"
    63  	// s.cmd.Coder.Coder = &sb
    64  
    65  	// s.cmd.Builder = CmdBuilder{}
    66  	// s.cmd.Builder.Use = "build"
    67  	// s.cmd.Builder.Builder = &sb
    68  
    69  	// s.cmd.Cleaner = CmdCleaner{}
    70  	// s.cmd.Cleaner.Use = "clean"
    71  	// s.cmd.Cleaner.Cleaner = &sb
    72  
    73  	// s.cmd.ModAdder = CmdModAdder{}
    74  	// s.cmd.ModAdder.Use = "add"
    75  	// s.cmd.ModAdder.ModManager = &sb
    76  
    77  	// s.cmd.ModDeler = CmdModDeler{}
    78  	// s.cmd.ModDeler.Use = "del"
    79  	// s.cmd.ModDeler.ModManager = &sb
    80  
    81  	// s.cmd.ModIniter = CmdModIniter{}
    82  	// s.cmd.ModIniter.Use = "init"
    83  	// s.cmd.ModIniter.ModManager = &sb
    84  
    85  	// s.cmd.Starter.SilenceErrors = true
    86  }
    87  
    88  func (s *CmdSuite) Mod(args ...string) error {
    89  	setCmd("mod", args...)
    90  	return s.cmd.Execute()
    91  }
    92  
    93  func (s *CmdSuite) New(args ...string) error {
    94  	setCmd("new", args...)
    95  	return s.cmd.Execute()
    96  }
    97  
    98  func (s *CmdSuite) Code(args ...string) error {
    99  	setCmd("code", args...)
   100  	return s.cmd.Execute()
   101  }
   102  
   103  func (s *CmdSuite) Build(args ...string) error {
   104  	setCmd("build", args...)
   105  	return s.cmd.Execute()
   106  }
   107  
   108  func (s *CmdSuite) Clean(args ...string) error {
   109  	setCmd("clean", args...)
   110  	return s.cmd.Execute()
   111  }
   112  
   113  func getModuleFileName(name string) string {
   114  	moduleExt := ".sb"
   115  	if strings.HasSuffix(name, moduleExt) {
   116  		return name
   117  	} else {
   118  		return name + moduleExt
   119  	}
   120  }
   121  
   122  func isItemExists(kind, item string) (found bool) {
   123  	m := dl.Manager{}
   124  	m.Kind = kind
   125  	all, err := m.ReadAll()
   126  	if err != nil {
   127  		return false
   128  	}
   129  	_, found = all.Items()[item]
   130  	return
   131  }
   132  
   133  func isModuleExists(name string) bool {
   134  	_, err := os.Stat(getModuleFileName(name))
   135  	return err == nil
   136  }