diff --git a/server/CHANGELOG.md b/server/CHANGELOG.md index bab9a43fb..8eca584de 100644 --- a/server/CHANGELOG.md +++ b/server/CHANGELOG.md @@ -1,5 +1,9 @@ # Bash Language Server +## 3.2.1 + +- Fix shebang parser that ignores some bash files https://github.com/bash-lsp/bash-language-server/pull/560 + ## 3.2.0 - Dependency upgrades diff --git a/server/package.json b/server/package.json index 2e2036a99..17f6219d5 100644 --- a/server/package.json +++ b/server/package.json @@ -3,7 +3,7 @@ "description": "A language server for Bash", "author": "Mads Hartmann", "license": "MIT", - "version": "3.2.0", + "version": "3.2.1", "publisher": "mads-hartmann", "main": "./out/server.js", "typings": "./out/server.d.ts", diff --git a/server/src/util/__tests__/shebang.test.ts b/server/src/util/__tests__/shebang.test.ts index d2b3310ad..633f20036 100644 --- a/server/src/util/__tests__/shebang.test.ts +++ b/server/src/util/__tests__/shebang.test.ts @@ -9,23 +9,18 @@ describe('hasBashShebang', () => { expect(hasBashShebang(`#!/usr/bin/env python2.7\n# set -x`)).toBe(false) }) - it('returns true for "#!/bin/sh -"', () => { - expect(hasBashShebang('#!/bin/sh -')).toBe(true) - expect(hasBashShebang('#!/bin/sh - ')).toBe(true) + it('returns false for "#!/usr/bin/pwsh"', () => { + expect(hasBashShebang('#!/usr/bin/pwsh')).toBe(false) }) - it('returns true for "#!/usr/bin/env bash"', () => { - expect(hasBashShebang('#!/usr/bin/env bash')).toBe(true) - expect(hasBashShebang('#!/usr/bin/env bash ')).toBe(true) - }) - - it('returns true for "#!/bin/sh"', () => { - expect(hasBashShebang('#!/bin/sh')).toBe(true) - expect(hasBashShebang('#!/bin/sh ')).toBe(true) - }) - - it('returns true for "#!/bin/bash"', () => { - expect(hasBashShebang('#!/bin/bash')).toBe(true) - expect(hasBashShebang('#!/bin/bash ')).toBe(true) + test.each([ + ['#!/bin/sh -'], + ['#!/usr/bin/env bash'], + ['#!/bin/sh'], + ['#!/bin/bash'], + ['#!/bin/bash -u'], + ])('returns true for %p', (command) => { + expect(hasBashShebang(command)).toBe(true) + expect(hasBashShebang(`${command} `)).toBe(true) }) }) diff --git a/server/src/util/shebang.ts b/server/src/util/shebang.ts index 1362a8316..c88227988 100644 --- a/server/src/util/shebang.ts +++ b/server/src/util/shebang.ts @@ -6,11 +6,19 @@ export function getShebang(fileContent: string): string | null { return null } - return match[1].replace('-', '').trim() + return match[1] } +/** + * Check if the given shebang is a bash shebang. + */ export function isBashShebang(shebang: string): boolean { - return shebang.endsWith('bash') || shebang.endsWith('sh') + return ( + shebang.startsWith('/bin/bash') || + shebang.startsWith('/bin/sh') || + shebang.startsWith('/usr/bin/env bash') || + shebang.startsWith('/usr/bin/env sh') + ) } export function hasBashShebang(fileContent: string): boolean {