return selected, remaining
-def read_search_path(
+def read_config_section(
conf: configparser.SectionProxy) -> Tuple[SearchPath, Optional[Pin]]:
mapping: Mapping[str, Tuple[Type[SearchPath], Type[Pin]]] = {
'alias': (AliasSearchPath, AliasPin),
return SP(**remaining_fields), pin
+def read_pinned_config_section(
+ section: str, conf: configparser.SectionProxy) -> Tuple[SearchPath, Pin]:
+ sp, pin = read_config_section(conf)
+ if pin is None:
+ raise Exception(
+ 'Cannot update unpinned channel "%s" (Run "pin" before "update")' %
+ section)
+ return sp, pin
+
+
def read_config(filename: str) -> configparser.ConfigParser:
config = configparser.ConfigParser()
config.read_file(open(filename), filename)
if args.channels and section not in args.channels:
continue
- sp, old_pin = read_search_path(config[section])
+ sp, old_pin = read_config_section(config[section])
config[section].update(sp.pin(v, old_pin)._asdict())
exprs: Dict[str, str] = {}
config = read_config_files(args.channels_file)
for section in config:
- sp, pin = read_search_path(config[section])
- if pin is None:
- raise Exception(
- 'Cannot update unpinned channel "%s" (Run "pin" before "update")' %
- section)
+ sp, pin = read_pinned_config_section(section, config[section])
if isinstance(sp, AliasSearchPath):
- assert 'git_repo' not in config[section]
continue
tarball = sp.fetch(v, pin)
exprs[section] = (