stackage: improve code format and flush msg

This commit is contained in:
bigeagle 2017-01-23 23:35:05 +08:00
parent d70240b96c
commit d96f7e5cf0

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python3 -u #!/usr/bin/env python3
# python deps: requests, pyyaml # python deps: requests, pyyaml
# non-python deps: aria2, git # non-python deps: aria2, git
@ -20,7 +20,7 @@ class StackageSession(object):
if force and file_path.is_file(): if force and file_path.is_file():
file_path.unlink() file_path.unlink()
if file_path.is_file(): if file_path.is_file():
print('{} exists, skipping'.format(file_path)) print('{} exists, skipping'.format(file_path), flush=True)
else: else:
args = ['aria2c', url, '--dir={}'.format(dir_path)] args = ['aria2c', url, '--dir={}'.format(dir_path)]
if sha1: if sha1:
@ -29,27 +29,43 @@ class StackageSession(object):
file_path.unlink() file_path.unlink()
raise OSError('Download failed for {}'.format(url)) raise OSError('Download failed for {}'.format(url))
else: else:
print('Downloaded {} to {}'.format(url, file_path)) print('Downloaded {} to {}'.format(url, file_path), flush=True)
def load_stack_setup(self): def load_stack_setup(self):
d = yaml.load(requests.get( d = yaml.load(
'https://raw.githubusercontent.com/fpco/stackage-content/master/stack/stack-setup-2.yaml').content) requests
.get('https://raw.githubusercontent.com/fpco/stackage-content/master/stack/stack-setup-2.yaml')
.content
)
for platform in d['ghc']: for platform in d['ghc']:
for ver in d['ghc'][platform]: for ver in d['ghc'][platform]:
self.download('ghc', d['ghc'][platform][ver]['url'], d['ghc'][platform][ver]['sha1']) self.download(
d['ghc'][platform][ver]['url'] = 'http://mirrors.tuna.tsinghua.edu.cn/stackage/ghc/{}'.format( 'ghc',
d['ghc'][platform][ver]['url'].split('/')[-1]) d['ghc'][platform][ver]['url'],
d['msys2'] = {'windows32': {'version': '20161025', d['ghc'][platform][ver]['sha1'],
)
d['ghc'][platform][ver]['url'] = (
'http://mirrors.tuna.tsinghua.edu.cn/stackage/ghc/{}'
.format(d['ghc'][platform][ver]['url'].split('/')[-1])
)
d['msys2'] = {
'windows32': {
'version': '20161025',
'url': 'http://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/i686/msys2-base-i686-20161025.tar.xz', 'url': 'http://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/i686/msys2-base-i686-20161025.tar.xz',
'content-length': 47526500, 'content-length': 47526500,
'sha1': '5D17FA53077A93A38A9AC0ACB8A03BF6C2FC32AD'}, 'sha1': '5D17FA53077A93A38A9AC0ACB8A03BF6C2FC32AD',
'windows64': {'version': '20161025', },
'windows64': {
'version': '20161025',
'url': 'http://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/msys2-base-x86_64-20161025.tar.xz', 'url': 'http://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/msys2-base-x86_64-20161025.tar.xz',
'content-length': 47166584, 'content-length': 47166584,
'sha1': '05FD74A6C61923837DFFE22601C9014F422B5460'}} 'sha1': '05FD74A6C61923837DFFE22601C9014F422B5460',
}
}
with open(self._base_path / 'stack-setup.yaml', 'w') as f: with open(self._base_path / 'stack-setup.yaml', 'w') as f:
yaml.dump(d, f) yaml.dump(d, f)
print('Loaded stack-setup.yaml') print('Loaded stack-setup.yaml', flush=True)
def load_stackage_snapshots(self): def load_stackage_snapshots(self):
for channel in ['lts-haskell', 'stackage-nightly']: for channel in ['lts-haskell', 'stackage-nightly']:
@ -59,9 +75,14 @@ class StackageSession(object):
args = ['git', '-C', self._base_path, 'clone', '--depth', '1', args = ['git', '-C', self._base_path, 'clone', '--depth', '1',
'https://github.com/fpco/{}.git'.format(channel)] 'https://github.com/fpco/{}.git'.format(channel)]
subprocess.run(args, check=True) subprocess.run(args, check=True)
print('Loaded {}'.format(channel)) print('Loaded {}'.format(channel), flush=True)
self.download('', 'https://www.stackage.org/download/snapshots.json', force=True)
print('Loaded snapshots.json') self.download(
'',
'https://www.stackage.org/download/snapshots.json',
force=True,
)
print('Loaded snapshots.json', flush=True)
if __name__ == '__main__': if __name__ == '__main__':