1212parser .add_argument (
1313 "--deployment" , default = None , choices = ["local" , "aws" , "azure" , "gcp" ], action = "store"
1414)
15- parser .add_argument ("--type" , default = None , choices = ["build" , "run" , "manage" ], action = "store" )
16- parser .add_argument ("--language" , default = None , choices = ["python" , "nodejs" ], action = "store" )
15+ parser .add_argument ("--type" , default = None , choices = ["build" , "dependencies" , "run" , "manage" ], action = "store" )
16+ parser .add_argument ("--type-tag" , default = None , type = str , action = "store" )
17+ parser .add_argument ("--language" , default = None , choices = ["python" , "nodejs" , "cpp" ], action = "store" )
18+ parser .add_argument ('--parallel' , default = 1 , type = int , action = 'store' )
1719args = parser .parse_args ()
1820config = json .load (open (os .path .join (PROJECT_DIR , "config" , "systems.json" ), "r" ))
1921client = docker .from_env ()
@@ -40,6 +42,7 @@ def build(image_type, system, language=None, version=None, version_name=None):
4042 # if we pass an integer, the build will fail with 'connection reset by peer'
4143 buildargs = {
4244 "VERSION" : version ,
45+ 'WORKERS' : str (args .parallel )
4346 }
4447 if version :
4548 buildargs ["BASE_IMAGE" ] = version_name
@@ -50,7 +53,6 @@ def build(image_type, system, language=None, version=None, version_name=None):
5053 )
5154 client .images .build (path = PROJECT_DIR , dockerfile = dockerfile , buildargs = buildargs , tag = target )
5255
53-
5456def build_language (system , language , language_config ):
5557 configs = []
5658 if "base_images" in language_config :
@@ -74,6 +76,22 @@ def build_systems(system, system_config):
7476 build (args .type , system )
7577 else :
7678 print (f"Skipping manage image for { system } " )
79+ elif args .type == "dependencies" :
80+ if args .language :
81+ if "dependencies" in system_config ["languages" ][args .language ]:
82+ language_config = system_config ["languages" ][args .language ]
83+ # for all dependencies
84+ if args .type_tag :
85+ # for all image versions
86+ for version , base_image in language_config ["base_images" ].items ():
87+ build (f"{ args .type } .{ args .type_tag } " , system , args .language , version , base_image )
88+ else :
89+ for dep in system_config ["languages" ][args .language ]["dependencies" ]:
90+ # for all image versions
91+ for version , base_image in language_config ["base_images" ].items ():
92+ build (f"{ args .type } .{ dep } " , system , args .language , version , base_image )
93+ else :
94+ raise RuntimeError ('Language must be specified for dependencies' )
7795 else :
7896 if args .language :
7997 build_language (system , args .language , system_config ["languages" ][args .language ])
0 commit comments