diff --git a/doc/man/ade-info.1 b/doc/man/ade-info.1 new file mode 100644 index 0000000000000000000000000000000000000000..ca20162ae3ab68bd827d52ad368d2d300abd25f6 --- /dev/null +++ b/doc/man/ade-info.1 @@ -0,0 +1,36 @@ +.TH ADE\-INFO 1 09/12/2016 0.1612.0 Apertis\ Development\ Tools\ Manual + +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l + +.SH NAME + +ade-info \- Print information about an entity + +.SH SYNOPSIS +.sp +.nf +\fIade info\fR --sysroot <sysroot> +.fi +.sp +.SH DESCRIPTION +.sp +Retrieve information about a sysroot or another ADE object\&. +.sp +.SH OPTIONS +.sp +.PP +\fI\-\-sysroot\fR +.RS 4 +Return installed version and path of given sysroot (e.g. apertis-16.12-armhf)\&. +.sp +.RE +.SH SEE ALSO + +ade(1) + +.SH COPYRIGHT + +Copyright (c) 2016 Collabora Ltd. diff --git a/doc/man/ade.1 b/doc/man/ade.1 index be0bcc3aecee3b2117a584cfd14228e053e62752..d7ea803791c98ff7f20328e2eaa1e184d6be0a25 100644 --- a/doc/man/ade.1 +++ b/doc/man/ade.1 @@ -12,7 +12,7 @@ ade \- Apertis Development Environment .SH SYNOPSIS .sp .nf -\fIade sysroot\fR +\fIade\fR [--format=<format>] <command> [<args>] .fi .sp .SH DESCRIPTION @@ -38,12 +38,22 @@ Sets the output format of the tool\&. .SH COMMANDS .sp .PP +\fIinfo\fR +.RS 4 +Print information about an entity\&. +.sp +See \fBade-info(1)\fR +.sp +.RE +.PP \fIsysroot\fR .RS 4 Manages the set of installed sysroots needed for cross-compilation\&. .sp See \fBade-sysroot(1)\fR .sp +.RE +.sp .SH SEE ALSO ade-sysroot(1) diff --git a/tools/ade b/tools/ade index 3fcdc829376ca7dcf3ee9f9929b142e72b191de8..65c54e48be9a05c89269a3e32a36a5be85e4c148 100755 --- a/tools/ade +++ b/tools/ade @@ -136,6 +136,13 @@ class SysrootVersion: raise ValueError("'url'") self.url = url + def from_id(string): + p = re.compile("^\s*(\w*)-(\d\d\.\d\d)-(\w*)\s*$") + m = p.match(string.lower()) + if not m: + raise ValueError + return SysrootVersion(m.groups()[0], m.groups()[1], m.groups()[2]) + def from_string(string): p = re.compile("^\s*(\w*)\s*(\d\d\.\d\d) (\d{8,8})\.(\d+)\s*(\w*)\s*$") m = p.match(string) @@ -477,6 +484,9 @@ class Ade: self.file = None self.dest = None + self.target = None + self.sysroot = None + self.sysroot_version = None self.distro = None self.release = None @@ -524,6 +534,27 @@ class Ade: def get_sysroot_manager(self): return SysrootManager(self.path, self.url, self.user, self.password, config=self.config) + def get_target(self): + if self.target: + return self.target + + if self.sysroot: + try: + version = SysrootVersion.from_id(self.sysroot) + self.target = self.get_sysroot_manager().get_installed(version) + if not self.target: + self.die("No sysroot currently installed for {0}{1}{2}" \ + .format(Colors.OKBLUE, version.get_name(), Colors.ENDC)) + except ValueError: + self.die("Invalid sysroot tag format") + except InvalidSysrootError: + self.die("Invalid sysroot installed for {0}{1}{2}" \ + .format(Colors.OKBLUE, version.get_name(), Colors.ENDC)) + else: + self.die("No target (sysroot) specified") + + return self.target + def do_sysroot_list(self): manager = self.get_sysroot_manager() versions = manager.get_versions() @@ -709,6 +740,16 @@ class Ade: self.info("* Sysroot for {0}{1}{2} has been uninstalled" \ .format(Colors.OKBLUE, self.sysroot_version.get_name(), Colors.ENDC)) + def do_info(self): + target = self.get_target() + + if isinstance(target, Sysroot): + self.info("* Sysroot version {0}{1}{2} is installed at '{3}'" + .format(Colors.WARNING, self.target.version, Colors.ENDC, self.target.path)) + if self.format == 'parseable': + print("SysrootVersion:{0}".format(self.target.version.get_tag())) + print("SysrootPath:{0}".format(self.target.path)) + def info(self, message): if self.format == 'friendly': print(message) @@ -721,7 +762,9 @@ class Ade: if self.format != 'friendly': Colors.disable() self.find_configuration() - method = 'do_' + self.command.replace('-', '_') + '_' + self.subcommand.replace('-', '_') + method = 'do_' + self.command.replace('-', '_') + if self.subcommand: + method += '_' + self.subcommand.replace('-', '_') getattr(self, method)() @@ -733,6 +776,11 @@ if __name__ == '__main__': subparsers = root_parser.add_subparsers(dest='command') subparsers.required = True + # Info parser + info_parser = subparsers.add_parser('info', help="Retrieve information about an object") + group = info_parser.add_mutually_exclusive_group() + group.add_argument('--sysroot', help="Use sysroot as target (e.g. apertis-16.12-armhf)") + # Sysroot parser sysroot_parser = subparsers.add_parser('sysroot', help='Sysroot related commands') sysroot_parser.add_argument('--config', help="Sysroot configuration file")