shlint 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/checkbashisms +19 -6
  3. metadata +7 -9
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2013c0961be2fbc1b5172a88f2829a98e4ef32c5
4
+ data.tar.gz: 73cac37e561784d853daba5fa34e67228cbf0f41
5
+ SHA512:
6
+ metadata.gz: 9fc2aeb052d8f79fa0f53b11b7deca6ed005692d40a87ac0b727078146ea35a72f7bf6012f3143d1563f64b51a12d37b178d8760b682fad939856ff98d1be0da
7
+ data.tar.gz: bb7085b3ba647a5d11da3b3538e27c64389e753ccd6d1447546e4d082f77e4dd7ca6f6368f9c043b4da58a1ec3df647559b8bb00f031e883c0f9de7109ac82b4
@@ -33,7 +33,7 @@ Usage: $progname [-n] [-f] [-x] script ...
33
33
  or: $progname --help
34
34
  or: $progname --version
35
35
  This script performs basic checks for the presence of bashisms
36
- in /bin/sh scripts.
36
+ in /bin/sh scripts and the lack of bashisms in /bin/bash ones.
37
37
  EOF
38
38
 
39
39
  my $version = <<"EOF";
@@ -74,6 +74,8 @@ if ($opt_version) { print $version; exit 0; }
74
74
 
75
75
  $opt_echo = 1 if $opt_posix;
76
76
 
77
+ my $mode = 0;
78
+ my $issues = 0;
77
79
  my $status = 0;
78
80
  my $makefile = 0;
79
81
  my (%bashisms, %string_bashisms, %singlequote_bashisms);
@@ -116,6 +118,8 @@ foreach my $filename (@ARGV) {
116
118
  next;
117
119
  }
118
120
 
121
+ $issues = 0;
122
+ $mode = 0;
119
123
  my $cat_string = "";
120
124
  my $cat_indented = 0;
121
125
  my $quote_string = "";
@@ -143,9 +147,7 @@ foreach my $filename (@ARGV) {
143
147
  next if $opt_force;
144
148
 
145
149
  if ($interpreter =~ m,/bash$,) {
146
- warn "script $display_filename is already a bash script; skipping\n";
147
- $status |= 2;
148
- last; # end this file
150
+ $mode = 1;
149
151
  }
150
152
  elsif ($interpreter !~ m,/(sh|posh)$,) {
151
153
  ### ksh/zsh?
@@ -476,6 +478,11 @@ foreach my $filename (@ARGV) {
476
478
  if ($buffered_line ne '');
477
479
 
478
480
  close C;
481
+
482
+ if ($mode && !$issues) {
483
+ warn "could not find any possible bashisms in bash script $filename\n";
484
+ $status |= 4;
485
+ }
479
486
  }
480
487
 
481
488
  exit $status;
@@ -483,8 +490,14 @@ exit $status;
483
490
  sub output_explanation {
484
491
  my ($filename, $line, $explanation) = @_;
485
492
 
486
- warn "possible bashism in $filename line $. ($explanation):\n$line\n";
487
- $status |= 1;
493
+ if ($mode) {
494
+ # When examining a bash script, just flag that there are indeed
495
+ # bashisms present
496
+ $issues = 1;
497
+ } else {
498
+ warn "possible bashism in $filename line $. ($explanation):\n$line\n";
499
+ $status |= 1;
500
+ }
488
501
  }
489
502
 
490
503
  # Returns non-zero if the given file is not actually a shell script,
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
5
- prerelease:
4
+ version: 0.1.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ross Duggan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
11
+ date: 2013-05-02 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Checks the syntax of your shellscript against known and available shells.
15
14
  email:
@@ -28,26 +27,25 @@ files:
28
27
  - README.md
29
28
  homepage: http://github.com/duggan/shlint
30
29
  licenses: []
30
+ metadata: {}
31
31
  post_install_message:
32
32
  rdoc_options: []
33
33
  require_paths:
34
34
  - lib
35
35
  required_ruby_version: !ruby/object:Gem::Requirement
36
- none: false
37
36
  requirements:
38
- - - ! '>='
37
+ - - '>='
39
38
  - !ruby/object:Gem::Version
40
39
  version: '0'
41
40
  required_rubygems_version: !ruby/object:Gem::Requirement
42
- none: false
43
41
  requirements:
44
- - - ! '>='
42
+ - - '>='
45
43
  - !ruby/object:Gem::Version
46
44
  version: 1.3.6
47
45
  requirements: []
48
46
  rubyforge_project:
49
- rubygems_version: 1.8.23
47
+ rubygems_version: 2.0.0
50
48
  signing_key:
51
- specification_version: 3
49
+ specification_version: 4
52
50
  summary: A linting tool for shell.
53
51
  test_files: []