summaryrefslogtreecommitdiffstats
path: root/travis-extract
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2013-08-06 17:39:59 +0200
committerJan Pokorný <jpokorny@redhat.com>2013-08-06 17:39:59 +0200
commitf54ec2f734f56e980243d0a29981f7fc90cd88ab (patch)
tree8e141aff9135118ab7e0002fb97ff68a5ef63589 /travis-extract
downloadtravis-extract-master.tar.gz
travis-extract-master.tar.xz
travis-extract-master.zip
Initial commitHEADmaster
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'travis-extract')
-rwxr-xr-xtravis-extract55
1 files changed, 55 insertions, 0 deletions
diff --git a/travis-extract b/travis-extract
new file mode 100755
index 0000000..0b3833f
--- /dev/null
+++ b/travis-extract
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+from __future__ import print_function
+
+"""\
+Script to generate a bash script from .travis.yml CI recipe
+
+Once this script is on your PATH, use it like this::
+
+ $ cd my-project
+ $ bash <(travis-extract)
+
+Any improvement is welcome.
+"""
+
+__author__ = "Jan Pokorny"
+__license__ = "GPLv2"
+
+
+import yaml
+from os.path import abspath
+from sys import stderr
+from subprocess import call
+
+shellcall = lambda *args, **kws: call(*args, **(dict(shell=True, **kws)))
+errprint = lambda *args, **kws: print(*args, **(dict(file=stderr, **kws)))
+
+# if system == 'Fedora' ...
+REPODATA = True
+REPODATA_CMD = "rpm -qa --filesbypkg | grep -q '/%s$'"
+REPODATA_GLOBAL = True
+REPODATA_GLOBAL_CMD = "repoquery -qf '*/%s' >&2"
+
+
+class TravisRunError(Exception):
+ pass
+
+with open(abspath(".travis.yml")) as yaml_file:
+ try:
+ data = yaml.load(yaml_file)
+ if 'script' not in data:
+ raise TravisRunError("no script, sorry")
+ print("#!/bin/bash")
+ for i, cmd in enumerate(data['script']):
+ if REPODATA:
+ cmd_base = cmd[:cmd.find(' ')]
+ if shellcall(REPODATA_CMD % cmd_base) != 0:
+ errprint("missing `%s' command%s" % (cmd_base,
+ REPODATA_GLOBAL and ", searching it..." or ""))
+ if REPODATA_GLOBAL \
+ and shellcall(REPODATA_GLOBAL_CMD % cmd_base) != 0:
+ errprint("sorry, `%s' command too special" % cmd_base)
+
+ print("#%02d\n%s" % (i + 1, cmd))
+ except TravisRunError as e:
+ errprint(e)