From fd6e2de4d2753ee73574abfaff1d37c0916fea3a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sven=20Sch=C3=B6ling?= Date: Tue, 27 Sep 2011 18:48:44 +0200 Subject: [PATCH] =?utf8?q?rose=5Fauto=5Fcreate=5Fmodel:=20--diff,=20--dry-?= =?utf8?q?run=20alias=20f=C3=BCr=20-n?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- scripts/rose_auto_create_model.pl | 36 ++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/scripts/rose_auto_create_model.pl b/scripts/rose_auto_create_model.pl index 6b6db0a8c..2aaac2beb 100755 --- a/scripts/rose_auto_create_model.pl +++ b/scripts/rose_auto_create_model.pl @@ -129,13 +129,16 @@ CODE my $file_exists = -f $meta_file; if ($file_exists) { my $old_size = -s $meta_file; - my $old_md5 = md5_hex(do { local(@ARGV, $/) = ($meta_file); <> }); + my $orig_file = do { local(@ARGV, $/) = ($meta_file); <> }; + my $old_md5 = md5_hex($orig_file); my $new_size = length $full_definition; my $new_md5 = md5_hex($full_definition); if ($old_size == $new_size && $old_md5 == $new_md5) { notice("No changes in $meta_file, skipping.") if $config{verbose}; return; } + + show_diff(\$orig_file, \$full_definition) if $config{show_diff}; } if (!$config{nocommit}) { @@ -162,8 +165,10 @@ sub parse_args { all => \ my $all, sugar => \ my $sugar, 'no-commit' => \ my $nocommit, + 'dry-run' => \ my $nocommit, help => sub { pod2usage(verbose => 99, sections => 'NAME|SYNOPSIS|OPTIONS') }, verbose => \ my $verbose, + diff => \ my $diff, ); $options->{login} = $login if $login; @@ -171,6 +176,29 @@ sub parse_args { $options->{all} = $all; $options->{nocommit} = $nocommit; $options->{verbose} = $verbose; + + if ($diff) { + if (eval { require Text::Diff; 1 }) { + $options->{show_diff} = 1; + } else { + error('Could not load Text::Diff. Sorry, no diffs for you.'); + } + } +} + +sub show_diff { + my ($text_a, $text_b) = @_; + + my %colors = ( + '+' => 'green', + '-' => 'red', + ); + + Text::Diff::diff($text_a, $text_b, { OUTPUT => sub { + for (split /\n/, $_[0]) { + print colored($_, $colors{substr($_, 0, 1)}), $/; + } + }}); } sub usage { @@ -297,10 +325,16 @@ Process tables in sugar schema instead of standard schema. Rarely useful unless you debug schema awareness of the RDBO layer. =item C<--no-commit, -n> +=item C<--dry-run> Do not write back generated files. This will do everything as usual but not actually modify any files. +=item C<--diff> + +Displays diff for selected file, if file is present and never file is +different. bware, does not imply C. + =item C<--help, -h> Print this help. -- 2.20.1