summaryrefslogtreecommitdiffstats
path: root/scripts/xmi2qt.pl
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2012-09-23 22:19:59 +0000
committerSandro S. Andrade <sandroandrade@kde.org>2012-09-24 00:21:11 +0200
commit9f9c1be55d04058fc7ba98c648b4848ce427e0ef (patch)
treee4056d757145185ab26c718e746a56f639111171 /scripts/xmi2qt.pl
parentcc63e6477080440834cb651b26288ecf4d5b0bcc (diff)
Add parameter for specifying output directory for xmi2qt.pl
Change-Id: Idc8ae3f3519ebae151cbd7a3879c1eef09bb2665 Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'scripts/xmi2qt.pl')
-rwxr-xr-xscripts/xmi2qt.pl22
1 files changed, 14 insertions, 8 deletions
diff --git a/scripts/xmi2qt.pl b/scripts/xmi2qt.pl
index 499c63cd..bd77dd1c 100755
--- a/scripts/xmi2qt.pl
+++ b/scripts/xmi2qt.pl
@@ -7,55 +7,61 @@ use Data::Dumper;
use File::Slurp;
use File::Path qw(make_path);
use Template;
+use Getopt::Std;
+
+my %options=();
+getopt("oi",\%options);
my $xml = new XML::Simple(keyattr => [], forcearray => ['namespace', 'class', 'enumeration', 'attribute', 'associationend', 'operation', 'accessor', 'parameter']);
my $tt = Template->new(INTERPOLATE => 1, INCLUDE_PATH => 'templates/');
-my $xmi = $xml->XMLin($ARGV[0]);
+my $xmi = $xml->XMLin($options{i});
write_file 'dump.log', Dumper($xmi);
my $namespaces = $xmi->{'namespace'};
foreach my $namespace (@$namespaces) {
-make_path($namespace->{path});
+make_path($options{o}."/".$namespace->{path});
my $classes = $namespace->{'class'};
my $enumerations = $namespace->{'enumeration'};
+binmode STDOUT, ':utf8';
+
foreach my $class (@$classes) {
- open STDOUT, '>', "./".$namespace->{path}."/".lc($class->{name}).".h";
+ open STDOUT, '>', $options{o}."/".$namespace->{path}."/".lc($class->{name}).".h";
if ($tt->process('class.h', {
namespace => $namespace->{path},
class => $class
}) ne 1) { print $tt->error(); }
- open STDOUT, '>', "./".$namespace->{path}."/".lc($class->{name}).".cpp";
+ open STDOUT, '>', $options{o}."/".$namespace->{path}."/".lc($class->{name}).".cpp";
if ($tt->process('class.cpp', {
namespace => $namespace->{path},
class => $class
}) ne 1) { print $tt->error(); }
}
-open STDOUT, '>', "./".$namespace->{path}."/qenumerations.h";
+open STDOUT, '>', $options{o}."/".$namespace->{path}."/qenumerations.h";
if ($tt->process('qenumerations.h', {
namespace => $namespace->{path},
enumerations => $enumerations
}) ne 1) { print $tt->error(); }
-open STDOUT, '>', "./".$namespace->{path}."/qenumerations.cpp";
+open STDOUT, '>', $options{o}."/".$namespace->{path}."/qenumerations.cpp";
if ($tt->process('qenumerations.cpp', {
namespace => $namespace->{path},
enumerations => $enumerations
}) ne 1) { print $tt->error(); }
my $priName = lc($namespace->{path} =~ s/\//-/gr);
-open STDOUT, '>', "./".$namespace->{path}."/".$priName.".pri";
+open STDOUT, '>', $options{o}."/".$namespace->{path}."/".$priName.".pri";
if ($tt->process('namespace.pri', {
namespace => $namespace,
}) ne 1) { print $tt->error(); }
}
-open STDOUT, '>', "./uml.pro";
+open STDOUT, '>', $options{o}."/uml.pro";
if ($tt->process('project.pro', {
namespaces => $namespaces,
}) ne 1) { print $tt->error(); }