diff options
author | Matthijs Kooijman <matthijs@stdin.nl> | 2009-12-23 10:01:49 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2010-09-17 20:06:25 +0200 |
commit | 083834b407e2e76e1386f9004e495a88f2906cf4 (patch) | |
tree | e3230eb7b3c61c99e27eeacc3a50d6c4e1762346 /git-import-orig | |
parent | cdaaa0a93a4083045941dc73e3e972b1919de4b1 (diff) |
Ask the user for the package name and version if needed.
If there is no debian/changelog to find the source package name, and/or
the upstream version was not given on the commandline, ask the user for
them. The values guessed from the original tarball name are offered as
defaults to the user. Previously, this guessed version was used without
confirmation.
The source package name is now always taken from debian/changelog or
prompted for, even when it might not be used (when importing a directory
instead of a tarball, for example). This makes the code more
straightforward and less errorprone in the future.
Closes: #479172
Diffstat (limited to 'git-import-orig')
-rwxr-xr-x | git-import-orig | 80 |
1 files changed, 65 insertions, 15 deletions
diff --git a/git-import-orig b/git-import-orig index 14556566..031198d7 100755 --- a/git-import-orig +++ b/git-import-orig @@ -30,11 +30,22 @@ import tempfile import gbp.command_wrappers as gbpc from gbp.deb import (parse_changelog, unpack_orig, repack_orig, NoChangelogError, has_epoch, tar_toplevel, - guess_upstream_version, do_uscan) + guess_upstream_version, do_uscan, + parse_changelog_repo, is_valid_packagename, + packagename_msg, is_valid_upstreamversion, + upstreamversion_msg) from gbp.git import (FastImport, GitRepositoryError, GitRepository, build_tag) from gbp.config import GbpOptionParser, GbpOptionGroup from gbp.errors import (GbpError, GbpNothingImported) +# Try to import readline, since that will cause raw_input to get fancy +# line editing and history capabilities. However, if readline is not +# available, raw_input will still work. +try: + import readline +except ImportError: + pass + def cleanup_tmp_tree(tree): """remove a tree of temporary files""" try: @@ -130,6 +141,42 @@ def turn_off_fastimport(options, msg): options.fast_import = False +def ask_package_name(default): + """ + Ask the user for the source package name. + @default The default package name to suggest to the user. + """ + while True: + sourcepackage = raw_input("What will be the source package name? [%s] " % default) + if not sourcepackage: # No input, use the default. + sourcepackage = default + # Valid package name, return it. + if is_valid_packagename(sourcepackage): + return sourcepackage + + # Not a valid package name. Print an extra + # newline before the error to make the output a + # bit clearer. + print "\nNot a valid package name: '%s'.\n%s" % (sourcepackage, packagename_msg) + +def ask_package_version(default): + """ + Ask the user for the upstream package version. + @default The default package version to suggest to the user. + """ + while True: + version = raw_input("What is the upstream version? [%s] " % default) + if not version: # No input, use the default. + version = default + # Valid version, return it. + if is_valid_upstreamversion(version): + return version + + # Not a valid upstream version. Print an extra + # newline before the error to make the output a + # bit clearer. + print "\nNot a valid upstream version: '%s'.\n%s" % (version, upstreamversion_msg) + def main(argv): ret = 0 tmpdir = '' @@ -256,17 +303,22 @@ on howto create it otherwise use --upstream-branch to specify it. """ % options.upstream_branch raise GbpError + # Guess defaults for the package name and version from the + # original tarball. + (guessed_package, guessed_version) = guess_upstream_version(archive) or ('', '') + + # Try to find the source package name + try: + cp = parse_changelog('debian/changelog') + sourcepackage = cp['Source'] + except NoChangelogError: + sourcepackage = ask_package_name(guessed_package) + + # Try to find the version. if options.version: version = options.version else: - version = guess_upstream_version(archive) - - if version: - print "Upstream version is %s" % version - else: - print >>sys.stderr, "Cannot determine upstream version from %s - use -u <version>" % archive - parser.print_help() - raise GbpError + version = ask_package_version(guessed_version) (clean, out) = repo.is_clean() if not clean and not is_empty: @@ -299,12 +351,7 @@ on howto create it otherwise use --upstream-branch to specify it. os.path.basename(archive).replace(".tar", ".gbp.tar") ) repack_orig(archive, tmpdir, os.path.basename(orig_dir)) - try: - cp = parse_changelog('debian/changelog') - pristine_orig = symlink_orig(archive, cp['Source'], version) - except NoChangelogError: - print "Warning: Can't symlink orig tarball due to missing debian/changelog" - pristine_orig = archive + pristine_orig = symlink_orig(archive, sourcepackage, version) try: upstream_branch = [ options.upstream_branch, 'master' ][is_empty] @@ -313,6 +360,9 @@ on howto create it otherwise use --upstream-branch to specify it. print "Importing '%s' to branch '%s'%s..." % (archive, upstream_branch, filter_msg) + print "Source package is %s" % sourcepackage + print "Upstream version is %s" % version + if options.fast_import: fast_import_upstream_tree(repo, pristine_orig, version, options) commit = options.upstream_branch |