implement 'build' cmd using python
authorJF Ding <jian-feng.ding@intel.com>
Thu, 1 Dec 2011 09:29:57 +0000 (17:29 +0800)
committerJF Ding <jian-feng.ding@intel.com>
Thu, 1 Dec 2011 09:31:15 +0000 (17:31 +0800)
tizenpkg/cmd_build.py
tools/tizenpkg

index c83f2b2..c0f4978 100644 (file)
 
 raise ImportError('skip me')
 
+import os
+import tarfile
+
+import git
+import runner
+import msger
+import srcserver as ss
+
 def do(opts, args):
 
-    print opts, args
+    if not os.path.isdir('.git'):
+        msger.error('must run this command under a git tree')
+
+    if git.branch(all=False, current=True)[0] != 'release':
+        msger.error('must run this command under release branch')
+
+    gitsts = git.status()
+    if 'M ' in gitsts or ' M' in gitsts:
+        msger.warning('local changes not committed')
+
+    params = {'parameter': []}
+
+    # pkg:prjname
+    giturl = git.config('remote.origin.url')
+    prjname = os.path.basename(giturl)
+    params['parameter'].append({"name": "pkg",
+                                "value": prjname})
+
+    # obsproject:obsprj
+    params['parameter'].append({"name": "parameters",
+                                "value": "obsproject='%s'" %opts.obsprj})
+
+    # prepare package.tar.bz2
+    tarfp = 'package.tar.bz2'
+    tar = tarfile.open(tarfp, 'w:bz2')
+    for f in git.ls_files():
+        tar.add(f)
+    tar.close()
+
+    params['parameter'].append({"name": tarfp,
+                                "file": "file0"})
+
+    msger.info("Submiting your changes to build server ...")
+    ss.build_trigger(params, tarfp)
+
+    time.sleep(0.5)
+    result = ss.build_mylastresult()
+
+    if result['result'] != 'SUCCESS':
+        msger.error('remote server exception')
+
+    os.remove(tarfp)
+    msger.info('your local changes has been submitted to build server.')
 
index 0e91525..c274da4 100755 (executable)
@@ -71,14 +71,16 @@ class TizenPkg(cmdln.Cmdln):
             msger.set_loglevel('debug')
 
     @cmdln.alias("bl")
-    @cmdln.option('-s', '--silent', action='store_true',
-                  help='run in slient mode')
+    @cmdln.option('-p', '--obsprj', default='',
+                  help='The corresponding project name in remote OBS server. ' \
+                       'If not specified, "home:<userid>:branches:Trunk" will' \
+                       ' be used.')
     @_fall_to_shell('build')
     def do_build(self, subcmd, opts, *args):
         """${cmd_name}: test building for current pkg
 
         Usage:
-            tizenpkg build
+            tizenpkg build [OBS_project]
 
         ${cmd_option_list}
         """
@@ -87,6 +89,8 @@ class TizenPkg(cmdln.Cmdln):
         cmd.do(opts, args)
 
     @cmdln.alias("pk")
+    @cmdln.option('-s', '--silent', action='store_true',
+                  help='run in slient mode')
     @_fall_to_shell('packaging')
     def do_packaging(self, subcmd, opts, *args):
         """${cmd_name}: prepare packaging files for current pkg