From 9d47143dd2877dd1e52fb522d5403469f701971d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Louis-Francis=20Ratt=C3=A9-Boulianne?= <lfrb@collabora.com>
Date: Fri, 9 Dec 2016 22:19:27 -0500
Subject: [PATCH] Add support for project in info command
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>

Differential Revision: https://phabricator.apertis.org/D5245
---
 doc/man/ade-info.1 |  8 ++++++++
 tools/ade          | 23 ++++++++++++++++++++++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/doc/man/ade-info.1 b/doc/man/ade-info.1
index 0135744..56d404f 100644
--- a/doc/man/ade-info.1
+++ b/doc/man/ade-info.1
@@ -13,6 +13,7 @@ ade-info \- Print information about an entity
 .sp
 .nf
 \fIade info\fR --device [<user>[:<pass>]@]<hostname>[:<port>]
+\fIade info\fR --project
 \fIade info\fR --sdk
 \fIade info\fR --sysroot <sysroot>
 .fi
@@ -30,6 +31,13 @@ Return image version of given device (e.g. user@apertis)\&.
 .sp
 .RE
 .PP
+\fI\-\-project\fR
+.RS 4
+Return information about project in current directory (name, version
+and bundle\-id)\&.
+.sp
+.RE
+.PP
 \fI\-\-sdk\fR
 .RS 4
 Return SDK version\&.
diff --git a/tools/ade b/tools/ade
index a8e631d..fcd18a7 100755
--- a/tools/ade
+++ b/tools/ade
@@ -585,6 +585,8 @@ class Project:
 
     def __init__(self, path=None, bundle_id=None):
         self.bundle_id = None
+        self.name = None
+        self.version = None
 
         if not path:
             path = os.getcwd()
@@ -600,6 +602,8 @@ class Project:
     def check_validity(self):
         if not self.bundle_id:
             raise InvalidProjectError("Property 'BundleId' is not specified")
+        if not self.version:
+            raise InvalidProjectError("Property 'Version' is not specified")
 
     def find_root(self, path):
         p = pathlib.Path(path)
@@ -619,6 +623,8 @@ class Project:
                 with open(path) as f:
                     info = json.load(f)
                     self.bundle_id = info['BundleId']
+                    self.name = info['Name']
+                    self.version = info['App_Version']
             except:
                 pass
 
@@ -718,6 +724,7 @@ class Ade:
         self.simulator = False
         self.sysroot = None
         self.device = None
+        self.project = False
 
         self.bundle_id = None
 
@@ -803,6 +810,11 @@ class Ade:
                 self.target.load_sysroot_version()
             except InvalidDeviceError as e:
                 self.die("Invalid device: {0}".format(e))
+        elif self.project:
+            try:
+                self.target = Project()
+            except InvalidProjectError as e:
+                self.die("Invalid project: {0}".format(e))
         else:
             self.die("No target (simulator, sysroot or device) specified")
 
@@ -1012,6 +1024,14 @@ class Ade:
                     .format(Colors.WARNING, self.target.version, Colors.ENDC))
             if self.format == 'parseable':
                 print("ImageVersion:{0}".format(self.target.version.get_tag()))
+        elif isinstance(target, Project):
+            self.info("* Project: {0}{1}{2}".format(Colors.WARNING, self.target.name, Colors.ENDC))
+            self.info("* BundleId: {0}".format(self.target.bundle_id))
+            self.info("* Version: {0}".format(self.target.version))
+            if self.format == 'parseable':
+                print("ProjectName:{0}".format(self.target.name))
+                print("BundleId:{0}".format(self.target.bundle_id))
+                print("AppVersion:{0}".format(self.target.version))
 
     def do_configure(self):
         target = self.get_target()
@@ -1031,7 +1051,7 @@ class Ade:
                              .format(Colors.OKBLUE, version.get_name(), Colors.ENDC))
 
         try:
-            project = Project(os.getcwd(), bundle_id=self.bundle_id)
+            project = Project(bundle_id=self.bundle_id)
             project.configure(sysroot, debug=self.debug, force=self.force, args=self.args)
         except Exception as e:
             self.die("Couldn't configure project: {0}".format(e))
@@ -1077,6 +1097,7 @@ if __name__ == '__main__':
     group.add_argument('--sdk', help="Use SDK as target", action='store_true')
     group.add_argument('--sysroot', help="Use sysroot as target (e.g. apertis-16.12-armhf)")
     group.add_argument('--device', help="Use device as target (e.g. user:pass@apertis)")
+    group.add_argument('--project', help="Use current directory project as target", action='store_true')
 
     # Sysroot parser
     sysroot_parser = subparsers.add_parser('sysroot', help='Sysroot related commands')
-- 
GitLab