Created version 1, will autoformat, strip blank lines and trailing whitespace

This commit is contained in:
Austen Adler 2016-08-19 11:09:23 -04:00
parent f3f660da21
commit 6150318600
No known key found for this signature in database
GPG Key ID: 7ECEE590CCDFE3F1
2 changed files with 68 additions and 0 deletions

27
autoformat.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/zsh
# Format all c files
GLOB=( **/*.c )
# Astyle options:
# --mode=c : c formatting
# -xc : Brace attached to class names
# --style=stroustrup : stroustrup style (similar to 1tbs)
# -j : Always add brackets (even on one line if statements)
# -s2 : Three spaces
# -xG : Indent modifiers
# -S : Indent switches
# -K : Indent cases
# -N : Indent namespaces
# -xn : Attach bracket to namespace
# -xl : Attach inlines
# -n : Don't make a backup
# -p : Pad operators
# -H : Pad header (space after if, for, while)
OPTS=( --mode=c -xc --style=stroustrup -j -s2 -xG -S -K -N -xn -xl -n -p -H )
# Process the c files by adding the comment and removing newlines
perl "${0:h}/process.pl" $GLOB
# Colorize output if you can
if which colout>/dev/null; then
astyle $OPTS $GLOB|\grep -P '^(?!Unchanged)'|colout '(Formatted)' green||true
else
astyle $OPTS $GLOB|\grep -P '^(?!Unchanged)'||true
fi

41
process.pl Executable file
View File

@ -0,0 +1,41 @@
#!/usr/bin/perl
use strict;
use autodie;
use warnings;
use File::Compare;
use File::Basename;
no warnings 'once';
foreach my $file (@ARGV) {
if (-e $file) {
my $data = process_file($file);
open(MYOUTPUTFILE, "+>$file.bak") or die "Error opening output file $!";
print MYOUTPUTFILE $data;
close(MYOUTPUTFILE);
if (compare($file, "$file.bak") != 0) {
print "Processed $file\n";
}
unlink $file;
rename "$file.bak", $file;
}
}
sub process_file {
my($filename) = "$_[0]";
open(MYINPUTFILE, "<$filename") or die "x $!";
my($data) = "";
while(<MYINPUTFILE>) {
s/\s*$//;
my($line) = $_;
if($line !~ /^\s*$/) {
$data = $data . "$line\n";
}
}
close(MYINPUTFILE);
chomp($data);
if ($data !~ /^\s*\/\*\*/) {
my $basename = basename($filename);
$data = "/**\n * \@file $basename\n * \@author Austen Adler (agadler)\n * TODO: Description\n */\n$data";
}
return $data;
}