File: git-archive-orig.py

package info (click to toggle)
mpdris2 0.7%2Bgit20160917-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 324 kB
  • ctags: 208
  • sloc: python: 1,083; makefile: 84; sh: 5
file content (64 lines) | stat: -rwxr-xr-x 2,000 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/python3
#
# Copyright © 2016 Simon McVittie
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided this notice is preserved.
# This file is offered as-is, without any warranty.

import argparse
import os
import shutil
import subprocess
import tempfile
from os import path

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--debian-dir', default=None)
    parser.add_argument('repository')
    parser.add_argument('revision')
    parser.add_argument('package')
    parser.add_argument('version')

    args = parser.parse_args()

    tmpdir = tempfile.mkdtemp(prefix='git-archive-orig.')

    try:
        if ':' in args.repository:
            git = '{}.git'.format(args.package)
            subprocess.check_call(['git', 'clone', '--bare', args.repository,
                    git], cwd=tmpdir)
            git = path.join(tmpdir, git)
        else:
            git = args.repository

        git_dir_env = os.environ.copy()
        git_dir_env['GIT_DIR'] = git
        subprocess.check_call(['git', 'archive',
                '-o', '{}.tar'.format(args.package),
                '--prefix={}-{}.orig/'.format(args.package, args.version),
                args.revision],
            env=git_dir_env, cwd=tmpdir)
        subprocess.check_call(['xz', '{}.tar'.format(args.package)],
                cwd=tmpdir)

        mk_origtargz = ['mk-origtargz',
                '--rename',
                '--compression=xz',
                '--directory=.',
                '--package={}'.format(args.package),
                '--version={}'.format(args.version),
                path.join(tmpdir, '{}.tar.xz'.format(args.package))]

        if args.debian_dir:
            mk_origtargz.append(
                    '--copyright-file={}/copyright'.format(args.debian_dir))

        subprocess.check_call(mk_origtargz)
    finally:
        shutil.rmtree(tmpdir)

if __name__ == '__main__':
    main()