Coverage for src/probable_fiesta/app/main.py: 83%

41 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-01-30 18:57 -0500

1""""Main module for probable_fiesta app.""" 

2import sys 

3 

4from ..config.variables import PackageDef as pd 

5from ..config.variables import VariablesDef as vd 

6from ..app.builder.app_builder import AppBuilder 

7from ..app.builder.context import Context 

8from ..command.builder.command_builder import CommandBuilder 

9from ..config.default_config import get_config 

10from ..command.builder.command import Command 

11from ..app.builder.app_abstract_machine import AppMachine 

12from ..cli.builder.parser_builder import ParserBuilder 

13from ..command.builder.command_factory import CommandFactory 

14from ..command.builder.command_queue import CommandQueue 

15from ..cli.builder.args_parse import Parser 

16 

17 

18def use_app_machine(args=None): 

19 print("using app machine") 

20 app_machine = AppMachine() 

21 my_app = app_machine.prepare_default_app() 

22 print(f"\n->Running sample app: {my_app}") 

23 #my_app.run() 

24 #history = my_app.context.command_queue.get_history() 

25 #print(history) 

26 

27 

28def main(args=None): 

29 """Main function for probable_fiesta app. 

30 

31 

32 Args: 

33 args (list): List of arguments. Defaults to None. 

34 """ 

35 # Get args from cli if not provided 

36 if not args: 

37 args = sys.argv[1:] 

38 

39 default_config = get_config(log_name="probable_fiesta") 

40 

41 aB = AppBuilder() 

42 # [oui_la_la], ["oui la la"] 

43 clean_args, clean_argv = aB.arguments.clean_arg_function(args) 

44 if len(clean_argv) == 0: 

45 clean_argv.append(None) 

46 

47 

48 aB = AppBuilder() 

49 main_app = aB\ 

50 .name\ 

51 .set_name("main_app")\ 

52 .arguments\ 

53 .set_arguments(args)\ 

54 .args_parser\ 

55 .add_argument("--test-app", type=str, help="test app builder")\ 

56 .add_argument("--version", action='store_true', help="show version builder")\ 

57 .add_argument("--repeat", type=str, help="repeat input")\ 

58 .context\ 

59 .add_context(Context.Factory().new_context( 

60 "test_app", 

61 CommandQueue.new( 

62 [CommandFactory.new_command("test_app_func", lambda x: x, "repeated")] 

63 )))\ 

64 .add_context(Context.Factory().new_context( 

65 "version", 

66 CommandQueue.new( 

67 [CommandFactory.new_command("version", get_version, None)] 

68 )))\ 

69 .add_context(Context.Factory().new_context( 

70 "repeat", 

71 CommandQueue.new( 

72 [CommandFactory.new_command("repeat", repeat, clean_argv[0])] 

73 )))\ 

74 .config\ 

75 .set_config(default_config)\ 

76 .validate()\ 

77 .build() 

78 #print(main_app) 

79 

80 #use_app_machine() 

81 

82 # Get parser error 

83 if main_app.args_parser.error: 

84 return main_app.args_parser.error 

85 

86 # Run main app 

87 #print(f"\n->Running main app: {main_app}") 

88 #print("WILL RUN COMMANDS:", main_app.cleaned_args) 

89 for command in main_app.cleaned_args: 

90 main_app.run(command) 

91 

92 # Create second argument parser 

93 #pa = main_app.args_parser.get_parsed_args() 

94 #print(pa) 

95 #validated = vars(pa) 

96 #print(validated) 

97 #keys = validated.keys() 

98 #print("keys: ", keys) 

99 #print("VS ARGS: ", args) 

100 #tmp_parser = Parser.Factory.new() 

101 #my_args = tmp_parser.parser.parse_args(args) 

102 #print("My Args PARSER: ", my_args) 

103 #my_args = vars(my_args) 

104 #for command in my_args.keys(): 

105 #print("command: ", command) 

106 #main_app.run(command) 

107 

108 # Get command execution history 

109 #history = main_app.context.command_queue.get_history() 

110 #print(history) 

111 

112 # Get command execution history new 

113 history_new = main_app.get_run_history() 

114 print(history_new) 

115 

116 # Return command execution history 

117 return history_new 

118 

119# Get current name and version from config 

120def get_version() -> str: 

121 """Get package version. 

122 

123 Returns: 

124 str: Current package version. 

125 """ 

126 return f"{pd.NAME} v.{vd.VERSION}" 

127 

128def repeat(x): 

129 return(f"Repeating: {x}") 

130 

131if __name__ == "__main__": 

132 main(sys.argv[1:])