From d2118d1471f94a7d7b343b262b11f247b9778976 Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Wed, 23 Nov 2011 01:37:01 -0800 Subject: [PATCH] only check for shebangs in executable files --- lib/linguist/blob_helper.rb | 3 ++- lib/linguist/file_blob.rb | 7 +++++++ test/fixtures/script.bash | 0 test/fixtures/script.foo | 0 test/fixtures/script.groovy | 0 test/fixtures/script.js | 0 test/fixtures/script.mrb | 0 test/fixtures/script.nu | 0 test/fixtures/script.pl | 0 test/fixtures/script.py | 0 test/fixtures/script.rake | 0 test/fixtures/script.rb | 0 test/fixtures/script.rkt | 0 test/fixtures/script.scala | 0 test/fixtures/script.sh | 0 test/fixtures/script.zsh | 0 16 files changed, 9 insertions(+), 1 deletion(-) mode change 100644 => 100755 test/fixtures/script.bash mode change 100644 => 100755 test/fixtures/script.foo mode change 100644 => 100755 test/fixtures/script.groovy mode change 100644 => 100755 test/fixtures/script.js mode change 100644 => 100755 test/fixtures/script.mrb mode change 100644 => 100755 test/fixtures/script.nu mode change 100644 => 100755 test/fixtures/script.pl mode change 100644 => 100755 test/fixtures/script.py mode change 100644 => 100755 test/fixtures/script.rake mode change 100644 => 100755 test/fixtures/script.rb mode change 100644 => 100755 test/fixtures/script.rkt mode change 100644 => 100755 test/fixtures/script.scala mode change 100644 => 100755 test/fixtures/script.sh mode change 100644 => 100755 test/fixtures/script.zsh diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index c164d768..d7c70b4f 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -146,7 +146,8 @@ module Linguist # # Return true or false def shebang_extname? - extname.empty? + extname.empty? && + (mode.to_i(8) & 05) == 05 end MEGABYTE = 1024 * 1024 diff --git a/lib/linguist/file_blob.rb b/lib/linguist/file_blob.rb index 7dbecb42..7e7f1acd 100644 --- a/lib/linguist/file_blob.rb +++ b/lib/linguist/file_blob.rb @@ -32,6 +32,13 @@ module Linguist # Returns a String attr_reader :name + # Public: Read file permissions + # + # Returns a String like '100644' + def mode + File.stat(@path).mode.to_s(8) + end + # Public: Read file contents. # # Returns a String. diff --git a/test/fixtures/script.bash b/test/fixtures/script.bash old mode 100644 new mode 100755 diff --git a/test/fixtures/script.foo b/test/fixtures/script.foo old mode 100644 new mode 100755 diff --git a/test/fixtures/script.groovy b/test/fixtures/script.groovy old mode 100644 new mode 100755 diff --git a/test/fixtures/script.js b/test/fixtures/script.js old mode 100644 new mode 100755 diff --git a/test/fixtures/script.mrb b/test/fixtures/script.mrb old mode 100644 new mode 100755 diff --git a/test/fixtures/script.nu b/test/fixtures/script.nu old mode 100644 new mode 100755 diff --git a/test/fixtures/script.pl b/test/fixtures/script.pl old mode 100644 new mode 100755 diff --git a/test/fixtures/script.py b/test/fixtures/script.py old mode 100644 new mode 100755 diff --git a/test/fixtures/script.rake b/test/fixtures/script.rake old mode 100644 new mode 100755 diff --git a/test/fixtures/script.rb b/test/fixtures/script.rb old mode 100644 new mode 100755 diff --git a/test/fixtures/script.rkt b/test/fixtures/script.rkt old mode 100644 new mode 100755 diff --git a/test/fixtures/script.scala b/test/fixtures/script.scala old mode 100644 new mode 100755 diff --git a/test/fixtures/script.sh b/test/fixtures/script.sh old mode 100644 new mode 100755 diff --git a/test/fixtures/script.zsh b/test/fixtures/script.zsh old mode 100644 new mode 100755