From 88e2659c6dcc28683a848a301650ed517d2b7185 Mon Sep 17 00:00:00 2001 From: Mahesh Asolkar Date: Mon, 25 Feb 2013 15:06:08 -0800 Subject: [PATCH] Added replacement tags in headers + Misc updates --- licapp.pl | 75 +++++++++++++++++++++++++++++++++++++-- licenses/apache_v2.header | 2 +- licenses/gpl_v3.header | 4 +-- licenses/mit.header | 2 +- 4 files changed, 76 insertions(+), 7 deletions(-) diff --git a/licapp.pl b/licapp.pl index 1100c25..322de49 100755 --- a/licapp.pl +++ b/licapp.pl @@ -3,6 +3,7 @@ use strict; use warnings; use File::Find; +use File::Basename; use FileHandle; use Data::Dumper; use Getopt::Long; @@ -14,24 +15,92 @@ my $app = {}; # Defaults $app->{'options'}->{'directory'} = getcwd; $app->{'options'}->{'license'} = 'mit'; +$app->{'options'}->{'user'} = $ENV{'USER'}; +$app->{'options'}->{'date'} = (localtime(time))[5] + 1900; +$app->{'options'}->{'about'} = "This is an open-source software"; +$app->{'state'}->{'license_stub'} = "NON EXISTANT"; +$app->{'state'}->{'app_dir'} = dirname($0); # Command line options my $correct_usage = GetOptions ( - 'directory=s' => \$app->{'options'}->{'directory'}, - 'license=s' => \$app->{'options'}->{'license'}); + 'directory=s' => \$app->{'options'}->{'directory'}, + 'license=s' => \$app->{'options'}->{'license'}, + 'about=s' => \$app->{'options'}->{'about'}, + 'user=s' => \$app->{'options'}->{'user'}, + 'date=s' => \$app->{'options'}->{'date'}, + ); setup_license_pretty_names($app); setup_filetype_comment_mapping($app); +setup_license_stub($app); print "Applying '" . $app->{'license_pretty_names'}->{$app->{'options'}->{'license'}} . "' license to files in '" . $app->{'options'}->{'directory'} - ."' directory\n"; + . "' directory\n\n"; + +print "Copyright: Copyright (C) " + . $app->{'options'}->{'date'} + . " " . $app->{'options'}->{'user'} + . "\n\n"; + +print "About: " . $app->{'options'}->{'about'} + . "\n\n"; + +print "Stub:\n-----\n$app->{'state'}->{'license_stub'}\n-----\n"; + +find (sub { + find_files($app, ${File::Find::name}, $_) + }, $app->{'options'}->{'directory'}); # # Subroutines # +sub find_files { + my ($app, $file, $name) = @_; + + # + # Opportunity to filter any file types befrore any processing starts + # + handle_files ($app, $file, $name); +} + +sub handle_files { + my ($app, $file, $name) = @_; + + my $rh = new FileHandle ($name); + my @contents = <$rh>; + + print "Handling... $file\n"; + + if ((defined $contents[0]) && ($contents[0] =~ /^\s*#!/)) { + print " ... has #! line\n"; + } +} + +sub setup_license_stub { + my ($app) = @_; + my $header_file = $app->{'state'}->{'app_dir'} + ."/licenses/" + . $app->{'options'}->{'license'} . ".header"; + + if (-e $header_file) { + my $rh = new FileHandle ($header_file); + $app->{'state'}->{'license_stub'} = do {local $/; <$rh>}; + + $app->{'state'}->{'license_stub'} =~ + s/###DESCRIPTION###/$app->{'options'}->{'about'}/; + $app->{'state'}->{'license_stub'} =~ + s/###DATE###/$app->{'options'}->{'date'}/; + $app->{'state'}->{'license_stub'} =~ + s/###NAME###/$app->{'options'}->{'user'}/; + } + else { + warn "[WARN] License Header '$header_file' does not exist"; + } +} + sub setup_license_pretty_names { my ($app) = @_; diff --git a/licenses/apache_v2.header b/licenses/apache_v2.header index 004c62e..2c7a9d0 100644 --- a/licenses/apache_v2.header +++ b/licenses/apache_v2.header @@ -1,4 +1,4 @@ -Copyright [yyyy] [name of copyright owner] +Copyright ###DATE### ###NAME### Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/licenses/gpl_v3.header b/licenses/gpl_v3.header index 55a3551..f10fa9f 100644 --- a/licenses/gpl_v3.header +++ b/licenses/gpl_v3.header @@ -1,5 +1,5 @@ - -Copyright (C) +###DESCRIPTION### +Copyright (C) ###DATE### ###NAME### This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/licenses/mit.header b/licenses/mit.header index 78dba97..d6aeac1 100644 --- a/licenses/mit.header +++ b/licenses/mit.header @@ -1,4 +1,4 @@ -Copyright (c) +Copyright (c) ###DATE### ###NAME### Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in