Dict,
Iterable,
List,
+ Mapping,
NamedTuple,
NewType,
Tuple,
+ Type,
Union,
)
def fetch(self, v: Verification, section: str,
conf: configparser.SectionProxy) -> str:
- if 'git_repo' not in conf or 'release_name' not in conf:
+ if 'git_revision' not in conf or 'release_name' not in conf:
raise Exception(
'Cannot update unpinned channel "%s" (Run "pin" before "update")' %
section)
self.old_git_revision = self.git_revision
del self.git_revision
- pin_channel(v, self)
+ fetch(v, self)
+ parse_channel(v, self)
+ fetch_resources(v, self)
+ ensure_git_rev_available(v, self)
+ check_channel_contents(v, self)
return ChannelPin(
release_name=self.release_name,
tarball_url=self.table['nixexprs.tar.xz'].absolute_url,
return path # type: ignore # (for old mypy)
-def fetch_resources(v: Verification, channel: TarrableSearchPath) -> None:
+def fetch_resources(v: Verification, channel: ChannelSearchPath) -> None:
for resource in ['git-revision', 'nixexprs.tar.xz']:
fields = channel.table[resource]
fields.absolute_url = urllib.parse.urljoin(
v.ok()
-def pin_channel(v: Verification, channel: TarrableSearchPath) -> None:
- fetch(v, channel)
- parse_channel(v, channel)
- fetch_resources(v, channel)
- ensure_git_rev_available(v, channel)
- check_channel_contents(v, channel)
-
-
def git_revision_name(v: Verification, channel: TarrableSearchPath) -> str:
v.status('Getting commit date')
process = subprocess.run(['git',
def read_search_path(conf: configparser.SectionProxy) -> SearchPath:
- if 'alias_of' in conf:
- return AliasSearchPath(**dict(conf.items()))
- if 'channel_url' in conf:
- return ChannelSearchPath(**dict(conf.items()))
- return GitSearchPath(**dict(conf.items()))
+ mapping: Mapping[str, Type[SearchPath]] = {
+ 'alias': AliasSearchPath,
+ 'channel': ChannelSearchPath,
+ 'git': GitSearchPath,
+ }
+ return mapping[conf['type']](**dict(conf.items()))
def read_config(filename: str) -> configparser.ConfigParser:
return merged_config
-def pin(args: argparse.Namespace) -> None:
+def pinCommand(args: argparse.Namespace) -> None:
v = Verification()
config = read_config(args.channels_file)
for section in config.sections():
config.write(configfile)
-def update(args: argparse.Namespace) -> None:
+def updateCommand(args: argparse.Namespace) -> None:
v = Verification()
exprs: Dict[str, str] = {}
config = read_config_files(args.channels_file)
parser_pin = subparsers.add_parser('pin')
parser_pin.add_argument('channels_file', type=str)
parser_pin.add_argument('channels', type=str, nargs='*')
- parser_pin.set_defaults(func=pin)
+ parser_pin.set_defaults(func=pinCommand)
parser_update = subparsers.add_parser('update')
parser_update.add_argument('--dry-run', action='store_true')
parser_update.add_argument('channels_file', type=str, nargs='+')
- parser_update.set_defaults(func=update)
+ parser_update.set_defaults(func=updateCommand)
args = parser.parse_args()
args.func(args)