mirror of
https://github.com/openSUSE/osc.git
synced 2024-12-28 10:46:15 +01:00
Merge branch 'fix_413_get_deleted_sources' of https://github.com/lethliel/osc
Introduce --deleted option to "osc co" for checking out the files of a deleted package (no package wc is established).
This commit is contained in:
commit
25014c326f
@ -4280,6 +4280,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
||||
@cmdln.option('-e', '--expand-link', action='store_true',
|
||||
help='if a package is a link, check out the expanded '
|
||||
'sources (no-op, since this became the default)')
|
||||
@cmdln.option('-D', '--deleted', action='store_true',
|
||||
help='checkout an already deleted package. No meta information ')
|
||||
@cmdln.option('-u', '--unexpand-link', action='store_true',
|
||||
help='if a package is a link, check out the _link file ' \
|
||||
'instead of the expanded sources')
|
||||
@ -4363,6 +4365,12 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
||||
project_dir = os.curdir
|
||||
package = args[0]
|
||||
|
||||
if opts.deleted and package:
|
||||
if not opts.output_dir:
|
||||
raise oscerr.WrongOptions('-o | --output-dir is needed to get deleted sources')
|
||||
elif opts.deleted and not package:
|
||||
raise oscerr.WrongOptions('-D | --deleted can only be used with a package')
|
||||
|
||||
rev, dummy = parseRevisionOption(opts.revision)
|
||||
if rev == None:
|
||||
rev = "latest"
|
||||
@ -4378,6 +4386,9 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
||||
get_source_file(apiurl, project, package, filename, revision=rev, progress_obj=self.download_progress)
|
||||
|
||||
elif package:
|
||||
if opts.deleted:
|
||||
checkout_deleted_package(apiurl, project, package, opts.output_dir)
|
||||
else:
|
||||
if opts.current_dir:
|
||||
project_dir = None
|
||||
checkout_package(apiurl, project, package, rev, expand_link=expand_link, \
|
||||
|
20
osc/core.py
20
osc/core.py
@ -7757,4 +7757,24 @@ def get_rpmlint_log(apiurl, proj, pkg, repo, arch):
|
||||
f = http_GET(u)
|
||||
return f.read()
|
||||
|
||||
def checkout_deleted_package(apiurl, proj, pkg, dst):
|
||||
pl = meta_get_filelist(apiurl, proj, pkg, deleted=True)
|
||||
query = {}
|
||||
query['deleted'] = 1
|
||||
|
||||
if os.path.isdir(dst):
|
||||
print('Restoring in existing directory %s' % dst)
|
||||
else:
|
||||
print('Creating %s' % dst)
|
||||
os.makedirs(dst)
|
||||
|
||||
for filename in pl:
|
||||
print('Restoring %s to %s' % (filename, dst))
|
||||
full_file_path = os.path.join(dst, filename)
|
||||
u = makeurl(apiurl, ['source', proj, pkg, filename], query=query)
|
||||
with open(full_file_path, 'wb') as f:
|
||||
for data in streamfile(u):
|
||||
f.write(data)
|
||||
print('done.')
|
||||
|
||||
# vim: sw=4 et
|
||||
|
Loading…
Reference in New Issue
Block a user