def installBindings(): Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, True, False) demoConfig = os.path.realpath(os.path.join(ProjenyDir, 'Demo/Projeny.yaml')) Prj.installBindings(demoConfig)
def testTransientInstance(self): Container.bind('Qux').to(Qux) test1 = Test1() test2 = Test2() self.assertIsNot(test1.qux, test2.qux)
def testSingletonType(self): Container.bind('Qux').toSingle(Qux) test1 = Test1() test2 = Test2() self.assertIs(test1.qux, test2.qux)
def test1(self): config = { 'PathVars': { 'foo': 'yep [bar]', 'bar': 'result2', 'nest1': 'asdf [foo]', } } Container.bind('Config').toSingle(Config, [config]) Container.bind('VarManager').toSingle(VarManager) pathMgr = Container.resolve('VarManager') assertThat(pathMgr.hasKey('foo')) assertThat(not pathMgr.hasKey('asdf')) assertThat(pathMgr.tryGet('bobsdf') == None) assertThat( pathMgr.expand('before [bar] after') == 'before result2 after') assertThat( pathMgr.expand('before [foo] after') == 'before yep result2 after') assertThat(not pathMgr.hasKey('qux')) pathMgr.add('qux', 'sadf') assertThat(pathMgr.hasKey('qux')) assertThat(pathMgr.expand('[qux]') == 'sadf') assertThat(pathMgr.expand('[nest1]') == 'asdf yep result2') print('Done')
def testMultiple(self): Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(ScriptDir + '/ExampleConfig.yaml', ScriptDir + '/ExampleConfig2.yaml')) config = Container.resolve('Config') # From 1 assertIsEqual(config.getString('receipt'), 'Oz-Ware Purchase Invoice') # From 2 assertIsEqual(config.getString('thing1'), 'Foo') # Second one should override assertIsEqual(config.getString('foo2'), 'ipsum') assertIsEqual(config.getString('nest1', 'firstName'), 'Dorothy') # Test concatenating lists together assertIsEqual(config.getList('list1'), ['lorem', 'ipsum', 'asdf', 'joe', 'frank']) # Test concatenating dictionaries together assertIsEqual(config.getDictionary('dict1'), {'joe': 5, 'mary': 15, 'kate': 5, 'jim': 10}) assertIsEqual(config.tryGetDictionary(None, 'asdfasdfasdf'), None) assertIsEqual(config.tryGetDictionary({ 5: 1 }, 'asdfasdfasdf'), { 5: 1 }) assertIsEqual(config.tryGetList(None, 'asdfasdfasdf'), None) assertIsEqual(config.tryGetList([1, 2], 'asdfasdfasdf'), [1, 2]) assertIsEqual(config.tryGetBool(False, 'zxvzasdfasdfasdf'), False) assertIsEqual(config.tryGetBool(True, 'zxvzasdfasdfasdf'), True) assertIsEqual(config.tryGetString('asdf', 'zxvzasdfasdfasdf'), 'asdf') assertIsEqual(config.tryGetInt(5, 'zxvzasdfasdfasdf'), 5)
def main(): # Here we split out some functionality into various methods # so that other python code can make use of them # if they want to extend projeny parser = argparse.ArgumentParser(description='Unity Package Manager') addArguments(parser) argv = sys.argv[1:] # If it's 2 then it only has the -cfg param if len(argv) == 0: parser.print_help() sys.exit(2) args = parser.parse_args(sys.argv[1:]) processArgs(args) Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, args.verbose, args.veryVerbose) installBindings(tryGetMainConfigPath(args)) installPlugins() PrjRunner().run(args)
def test1(self): config = { 'PathVars': { 'foo': 'yep [bar]', 'bar': 'result2', 'nest1': 'asdf [foo]', } } Container.bind('Config').toSingle(Config, [config]) Container.bind('VarManager').toSingle(VarManager) pathMgr = Container.resolve('VarManager') assertThat(pathMgr.hasKey('foo')) assertThat(not pathMgr.hasKey('asdf')) assertThat(pathMgr.tryGet('bobsdf') == None) assertThat(pathMgr.expand('before [bar] after') == 'before result2 after') assertThat(pathMgr.expand('before [foo] after') == 'before yep result2 after') assertThat(not pathMgr.hasKey('qux')) pathMgr.add('qux', 'sadf') assertThat(pathMgr.hasKey('qux')) assertThat(pathMgr.expand('[qux]') == 'sadf') assertThat(pathMgr.expand('[nest1]') == 'asdf yep result2') print('Done')
def testTransientInstanceWithParam(self): Container.bind('Qux').to(Qux, 5) test1 = Test1() test2 = Test2() self.assertIsNot(test1.qux, test2.qux) self.assertEqual(test1.qux.GetValue(), 5)
def testUseDefault(self): Container.bind('Foo').to(1) Container.bind('Test1').toSingle(Test1) test1 = Container.resolve('Test1') self.assertEqual(test1.foo, 1) self.assertEqual(test1.bar, 5)
def testSingletonMethodWithParam(self): Container.bind('Qux').toSingle(GetQux, 4) test1 = Test1() test2 = Test2() self.assertIs(test1.qux, test2.qux) self.assertEqual(test1.qux.GetValue(), 4)
def testTransientMethod(self): Container.bind('Qux').to(GetQux, 6) test1 = Test1() test2 = Test2() self.assertIsNot(test1.qux, test2.qux) self.assertEqual(test1.qux.GetValue(), 6)
def testSpecialChars(self): Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(ScriptDir + '/ExampleConfig.yaml', ScriptDir + '/ExampleConfig2.yaml')) config = Container.resolve('Config') assertIsEqual(config.tryGetString(None, 'foo4'), 'asdf') assertIsEqual(config.tryGetString(None, 'foo5'), 'zxcv') assertIsEqual(config.tryGetString(None, 'foo6'), 'asdf') assertIsEqual(config.tryGetString(None, 'foo7'), 'zxcv')
def testSimple(self): yamlPath = ScriptDir + '/ExampleConfig.yaml' Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(yamlPath)) config = Container.resolve('Config') assertIsEqual(config.getString('date'), '2012-08-06') assertIsEqual(config.getString('receipt'), 'Oz-Ware Purchase Invoice') assertIsEqual(config.getList('places'), ['New Jersey', 'New York']) assertRaisesAny(lambda: config.getString('places')) assertRaisesAny(lambda: config.getDictionary('places')) assertIsEqual(config.getDictionary('customer'), {'first_name': 'Dorothy', 'family_name': 'Gale'}) # Tests YAML references assertIsEqual(config.getString('foo1'), config.getString('receipt'))
def testOutputToFile(self): assertThat(False) #Container.bind('Config').toSingle(ConfigXml) Container.bind('VarManager').toSingle(VarManager, { 'LogPath': ScriptDir + '/logtest.txt', 'LogPathPrevious': ScriptDir + '/logtest.prev.txt', }) log = Logger(False, True) log.heading("heading 1") log.info("info 1") log.error("error 1") log.good("good 1") log.info("info 2") log.heading("heading 2") log.info("info 3") log.finished("Done") log.dispose()
def testOutputToFile(self): assertThat(False) #Container.bind('Config').toSingle(ConfigXml) Container.bind('VarManager').toSingle( VarManager, { 'LogPath': ScriptDir + '/logtest.txt', 'LogPathPrevious': ScriptDir + '/logtest.prev.txt', }) log = Logger(False, True) log.heading("heading 1") log.info("info 1") log.error("error 1") log.good("good 1") log.info("info 2") log.heading("heading 2") log.info("info 3") log.finished("Done") log.dispose()
def test1(self): assertThat(False, "TODO") #Container.bind('Config').toSingle(ConfigXml) Container.bind('VarManager').toSingle(VarManager) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) self._test1(Container.resolve('SystemHelper'))
def testOverrideDefault(self): Container.bind('Foo').to(2) Container.bind('Test1').to(Test1) Container.bind('Bar').to(3) test1 = Container.resolve('Test1') self.assertEqual(test1.foo, 2) self.assertEqual(test1.bar, 3)
def test1(self): Container.bind('Foo1').to(Foo1, 7) Container.bind('Foo2').to(Foo2, 6) foo2 = Container.resolve('Foo2') foo2.Start()
def testIsInstanceSuccess(self): Container.bind('Title').to('yep') Test2().Run()
def testHasMethodFail(self): # does not have WriteLine() Container.bind('Console').toSingle(Foo) Test1().Run()
def testHasMethodSuccess(self): Container.bind('Console').toSingle(Console1) Test1().Run()
infoStr = infoBytes.decode('utf8') return json.loads(infoStr) return None if __name__ == '__main__': import prj.ioc.Container as Container from prj.config.Config import Config from prj.util.ScriptRunner import ScriptRunner from prj.util.VarManager import VarManager from prj.log.Logger import Logger from prj.util.SystemHelper import SystemHelper from prj.util.ProcessRunner import ProcessRunner from prj.log.LogStreamConsole import LogStreamConsole Container.bind('Config').toSingle(Config, []) Container.bind('Logger').toSingle(Logger) Container.bind('VarManager').toSingle(VarManager, { 'UnityExePath': "C:/Program Files/Unity/Editor/Unity.exe" }) #Container.bind('LogStream').toSingle(LogStreamConsole, True, True) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('ProcessRunner').toSingle(ProcessRunner) path = "C:/Users/Steve/AppData/Roaming/Unity/Asset Store/TripleBrick/3D ModelsEnvironmentsLandscapes/Free Rocks.unitypackage" info = UnityPackageAnalyzer().getReleaseInfoFromUnityPackage(path) print('Result: ' + str(info.__dict__))
def installBindings(): Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, True, True) Container.bind('Config').toSingle(Config, []) Container.bind('VarManager').toSingle(VarManager) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) Container.bind('ProcessRunner').toSingle(ProcessRunner)
def installBindings(configPath): Container.bind('LogStream').toSingle(LogStreamConsoleHeadingsOnly) Container.bind('LogStream').toSingle(LogStreamFile) Prj.installBindings(configPath)
def installBindings(mainConfigPath = None): projenyDir = getProjenyDir() projenyConfigPath = os.path.join(projenyDir, ConfigFileName) # Put the standard config first so it can be over-ridden by user settings configPaths = [projenyConfigPath] if mainConfigPath: assertThat(os.path.isfile(mainConfigPath), 'Could not find file at "{0}"', mainConfigPath) configPaths += [mainConfigPath] configPaths += getExtraUserConfigPaths() Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(*configPaths)) initialVars = { 'ProjenyDir': projenyDir, } if mainConfigPath: initialVars['ConfigDir'] = os.path.dirname(mainConfigPath) if not MiscUtil.isRunningAsExe(): initialVars['PythonPluginDir'] = getPluginDirPath() Container.bind('VarManager').toSingle(VarManager, initialVars) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) Container.bind('UnityHelper').toSingle(UnityHelper) Container.bind('ScriptRunner').toSingle(ScriptRunner) Container.bind('PackageManager').toSingle(PackageManager) Container.bind('ProcessRunner').toSingle(ProcessRunner) Container.bind('JunctionHelper').toSingle(JunctionHelper) Container.bind('VisualStudioSolutionGenerator').toSingle(VisualStudioSolutionGenerator) Container.bind('VisualStudioHelper').toSingle(VisualStudioHelper) Container.bind('ProjectSchemaLoader').toSingle(ProjectSchemaLoader) Container.bind('CommonSettings').toSingle(CommonSettings) Container.bind('UnityPackageExtractor').toSingle(UnityPackageExtractor) Container.bind('ZipHelper').toSingle(ZipHelper) Container.bind('UnityPackageAnalyzer').toSingle(UnityPackageAnalyzer) Container.bind('ReleaseSourceManager').toSingle(ReleaseSourceManager)
def _logInternal(self, msg, logType, *args): if len(args) > 0: msg = msg.format(*args) for stream in self._streams: stream.log(logType, msg) if __name__ == '__main__': import prj.ioc.Container as Container class Log1: def log(self, logType, msg): print('log 1: ' + msg) class Log2: def log(self, logType, msg): print('log 2: ' + msg) Container.bind('LogStream').toSingle(Log1) Container.bind('LogStream').toSingle(Log2) Container.bind('Logger').toSingle(Logger) logger = Container.resolve('Logger') logger.info('test info') logger.error('test error')
def testIsInstanceFailure(self): Container.bind('Title').to(2) Test2().Run()
def _logInternal(self, msg, logType, *args): if len(args) > 0: msg = msg.format(*args) for stream in self._streams: stream.log(logType, msg) if __name__ == "__main__": import prj.ioc.Container as Container class Log1: def log(self, logType, msg): print("log 1: " + msg) class Log2: def log(self, logType, msg): print("log 2: " + msg) Container.bind("LogStream").toSingle(Log1) Container.bind("LogStream").toSingle(Log2) Container.bind("Logger").toSingle(Logger) logger = Container.resolve("Logger") logger.info("test info") logger.error("test error")
def installBindings(args): Container.bind('LogStream').toSingle(LogStreamConsole, True, False) Prj.installBindings(findConfigPath(args.filePath))
def installBindings(): #config = { #'PathVars': { #'LogPath': 'C:/Temp/ProjenyLog.txt', #} #} #Container.bind('Config').toSingle(Config, [config]) Container.bind('Config').toSingle(Config, []) Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, True, False) Container.bind('VarManager').toSingle(VarManager) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) Container.bind('ScriptRunner').toSingle(ScriptRunner) Container.bind('ProcessRunner').toSingle(ProcessRunner) Container.bind('UnityPackageAnalyzer').toSingle(UnityPackageAnalyzer)
return json.loads(infoStr) return None if __name__ == '__main__': import prj.ioc.Container as Container from prj.config.Config import Config from prj.util.ScriptRunner import ScriptRunner from prj.util.VarManager import VarManager from prj.log.Logger import Logger from prj.util.SystemHelper import SystemHelper from prj.util.ProcessRunner import ProcessRunner from prj.log.LogStreamConsole import LogStreamConsole Container.bind('Config').toSingle(Config, []) Container.bind('Logger').toSingle(Logger) Container.bind('VarManager').toSingle( VarManager, {'UnityExePath': "C:/Program Files/Unity/Editor/Unity.exe"}) #Container.bind('LogStream').toSingle(LogStreamConsole, True, True) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('ProcessRunner').toSingle(ProcessRunner) path = "C:/Users/Steve/AppData/Roaming/Unity/Asset Store/TripleBrick/3D ModelsEnvironmentsLandscapes/Free Rocks.unitypackage" info = UnityPackageAnalyzer().getReleaseInfoFromUnityPackage(path) print('Result: ' + str(info.__dict__))