@@ -732,95 +732,15 @@ def _run(self, i):
732732 variation_tags_string = r ['variation_tags_string' ]
733733 explicit_variation_tags = r ['explicit_variation_tags' ]
734734
735- # USE CASE:
736- # HERE we may have versions in script input and env['MLC_VERSION_*']
737-
738- # STEP 900: Get version, min, max, usable from env (priority if passed from another script to force version),
739- # then script input, then script meta
740-
741- # VERSIONS SHOULD NOT BE USED INSIDE VARIATIONS (in meta)!
742-
743- # First, take version from input
744- version = str (i .get ('version' , '' )).strip ()
745- version_min = str (i .get ('version_min' , '' )).strip ()
746- version_max = str (i .get ('version_max' , '' )).strip ()
747- version_max_usable = str (i .get ('version_max_usable' , '' )).strip ()
748-
749- # Second, take from env
750- if version == '' :
751- version = str (env .get ('MLC_VERSION' , '' ))
752- if version_min == '' :
753- version_min = str (env .get ('MLC_VERSION_MIN' , '' ))
754- if version_max == '' :
755- version_max = str (env .get ('MLC_VERSION_MAX' , '' ))
756- if version_max_usable == '' :
757- version_max_usable = str (env .get (
758- 'MLC_VERSION_MAX_USABLE' , '' ))
759-
760- # Third, take from meta
761- if version == '' :
762- version = str (meta .get ('version' , '' ))
763- if version_min == '' :
764- version_min = str (meta .get ('version_min' , '' ))
765- if version_max == '' :
766- version_max = str (meta .get ('version_max' , '' ))
767- if version_max_usable == '' :
768- version_max_usable = str (meta .get (
769- 'version_max_usable' , '' ))
770-
771- # Update env with resolved versions
772- notes = []
773- for version_index in [(version , 'MLC_VERSION' , ' == {}' ),
774- (version_min , 'MLC_VERSION_MIN' , ' >= {}' ),
775- (version_max , 'MLC_VERSION_MAX' , ' <= {}' ),
776- (version_max_usable , 'MLC_VERSION_MAX_USABLE' , '({})' )]:
777- version_value = version_index [0 ]
778- key = version_index [1 ]
779- note = version_index [2 ]
780-
781- if version_value != '' :
782- env [key ] = version_value
783-
784- notes .append (note .format (version_value ))
785- # elif key in env:
786- # # If version_X is "", remove related key from ENV ...
787- # del(env[key])
788-
789- if len (notes ) > 0 :
790- logger .debug (
791- self .recursion_spaces +
792- ' - Requested version: ' +
793- ' ' .join (notes ))
794-
795- # STEP 900 output: version* set
796- # env['MLC_VERSION*] set
797-
798- # STEP 1000: Update version only if in "versions" (not obligatory)
799- # can be useful when handling complex Git revisions
800- versions = script_item .meta .get ('versions' , {})
801-
802- if version != '' and version in versions :
803- versions_meta = versions [version ]
804- r = self .update_state_from_meta (
805- versions_meta ,
806- run_state ,
807- i )
808- if r ['return' ] > 0 :
809- return r
810- adr = get_adr (versions_meta )
811- if adr :
812- self ._merge_dicts_with_tags (add_deps_recursive , adr )
813- # Processing them again using updated deps for
814- # add_deps_recursive
815- r = update_adr_from_meta (
816- deps ,
817- post_deps ,
818- prehook_deps ,
819- posthook_deps ,
820- add_deps_recursive ,
821- env )
822-
823- # STEP 1100: Update deps from input
735+ r = self ._update_state_from_version (meta , i )
736+ version = r ['version' ]
737+ version_min = r ['version_min' ]
738+ version_max = r ['version_max' ]
739+ version_max_usable = r ['version_max_usable' ]
740+ versions = r ['versions' ]
741+
742+ # STEP 1100: Update deps from input -? is this needed as we update adr
743+ # from meta anyway
824744 r = update_deps_from_input (
825745 deps , post_deps , prehook_deps , posthook_deps , i )
826746 if r ['return' ] > 0 :
@@ -1985,6 +1905,102 @@ def _run(self, i):
19851905
19861906 return rr
19871907
1908+ ##########################################################################
1909+ def _update_state_from_version (self , meta , i ):
1910+
1911+ # USE CASE:
1912+ # HERE we may have versions in script input and env['MLC_VERSION_*']
1913+
1914+ # STEP 900: Get version, min, max, usable from env (priority if passed from another script to force version),
1915+ # then script input, then script meta
1916+
1917+ # VERSIONS SHOULD NOT BE USED INSIDE VARIATIONS (in meta)!
1918+
1919+ # First, take version from input
1920+ version = str (i .get ('version' , '' )).strip ()
1921+ version_min = str (i .get ('version_min' , '' )).strip ()
1922+ version_max = str (i .get ('version_max' , '' )).strip ()
1923+ version_max_usable = str (i .get ('version_max_usable' , '' )).strip ()
1924+
1925+ env = self .env
1926+
1927+ # Second, take from env
1928+ if version == '' :
1929+ version = str (env .get ('MLC_VERSION' , '' ))
1930+ if version_min == '' :
1931+ version_min = str (env .get ('MLC_VERSION_MIN' , '' ))
1932+ if version_max == '' :
1933+ version_max = str (env .get ('MLC_VERSION_MAX' , '' ))
1934+ if version_max_usable == '' :
1935+ version_max_usable = str (env .get (
1936+ 'MLC_VERSION_MAX_USABLE' , '' ))
1937+
1938+ # Third, take from meta
1939+ if version == '' :
1940+ version = str (meta .get ('version' , '' ))
1941+ if version_min == '' :
1942+ version_min = str (meta .get ('version_min' , '' ))
1943+ if version_max == '' :
1944+ version_max = str (meta .get ('version_max' , '' ))
1945+ if version_max_usable == '' :
1946+ version_max_usable = str (meta .get (
1947+ 'version_max_usable' , '' ))
1948+
1949+ # Update env with resolved versions
1950+ notes = []
1951+ for version_index in [(version , 'MLC_VERSION' , ' == {}' ),
1952+ (version_min , 'MLC_VERSION_MIN' , ' >= {}' ),
1953+ (version_max , 'MLC_VERSION_MAX' , ' <= {}' ),
1954+ (version_max_usable , 'MLC_VERSION_MAX_USABLE' , '({})' )]:
1955+ version_value = version_index [0 ]
1956+ key = version_index [1 ]
1957+ note = version_index [2 ]
1958+
1959+ if version_value != '' :
1960+ env [key ] = version_value
1961+
1962+ notes .append (note .format (version_value ))
1963+ # elif key in env:
1964+ # # If version_X is "", remove related key from ENV ...
1965+ # del(env[key])
1966+
1967+ if len (notes ) > 0 :
1968+ self .logger .debug (
1969+ self .recursion_spaces +
1970+ ' - Requested version: ' +
1971+ ' ' .join (notes ))
1972+
1973+ # STEP 900 output: version* set
1974+ # env['MLC_VERSION*] set
1975+
1976+ # STEP 1000: Update version only if in "versions" (not obligatory)
1977+ # can be useful when handling complex Git revisions
1978+ versions = meta .get ('versions' , {})
1979+
1980+ if version != '' and version in versions :
1981+ versions_meta = versions [version ]
1982+ r = self .update_state_from_meta (
1983+ versions_meta ,
1984+ self .run_state ,
1985+ i )
1986+ if r ['return' ] > 0 :
1987+ return r
1988+ adr = get_adr (versions_meta )
1989+ if adr :
1990+ self ._merge_dicts_with_tags (add_deps_recursive , adr )
1991+ # Processing them again using updated deps for
1992+ # add_deps_recursive
1993+ r = update_adr_from_meta (
1994+ deps ,
1995+ post_deps ,
1996+ prehook_deps ,
1997+ posthook_deps ,
1998+ add_deps_recursive ,
1999+ env )
2000+
2001+ return {'return' : 0 , 'version' : version , 'version_min' : version_min ,
2002+ 'version_max' : version_max , 'version_max_usable' : version_max_usable , 'versions' : versions }
2003+
19882004 ##########################################################################
19892005
19902006 def _update_env_from_input (self , env , i ):
0 commit comments