Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shebang Removal While Adding Copyright Header in Shell Scripts #2270

Open
6 tasks
usoni2210 opened this issue Sep 24, 2024 · 3 comments
Open
6 tasks

Shebang Removal While Adding Copyright Header in Shell Scripts #2270

usoni2210 opened this issue Sep 24, 2024 · 3 comments

Comments

@usoni2210
Copy link

  • summary of problem
    I’m working on a project with shell scripts and trying to add a copyright header that includes the year range from the Git history using the setLicenseHeaderYearsFromGitHistory property.

The issue I’m facing is that the shebang (#!/bin/bash, etc.) is getting removed from the script files in the process. It seems there's something wrong with the code flow
image

  • Gradle or Maven version - Maven 3.8.8
  • spotless version - 2.43.0
  • operating system and version - MacOS 14
  • copy-paste your full Spotless configuration block(s), and a link to a public git repo that reproduces the problem if possible
<plugin>
  <groupId>com.diffplug.spotless</groupId>
  <artifactId>spotless-maven-plugin</artifactId>
  <version>2.43.0</version>
  <configuration>
    <setLicenseHeaderYearsFromGitHistory>true</setLicenseHeaderYearsFromGitHistory>
    <upToDateChecking>
      <enabled>false</enabled>
    </upToDateChecking>
    <java>
      <includes>
        <include>src/main/java/**/*.java</include>
        <include>src/test/java/**/*.java</include>
      </includes>
      <licenseHeader>
        <content>
          <![CDATA[
  /**
  ****************************************************************************
  **   Copyright Header
  ****************************************************************************
  **/]]>
        </content>
        <delimiter>package</delimiter>
      </licenseHeader>
    </java>
    <shell>
        <includes>
          <include>**/*.sh</include>
        </includes>
        <licenseHeader>
          <content>
            <![CDATA[
  #---------------------------------------------------------------------------
  #   Copyright Header
  #---------------------------------------------------------------------------]]>
          </content>
          <delimiter>## Start</delimiter>
          <skipLinesMatching>#\!/bin/sh</skipLinesMatching>
        </licenseHeader>
    </shell>
  </configuration>
</plugin>
  • copy-paste the full content of any console errors emitted by gradlew spotless[Apply/Check] --stacktrace - maven plugin

Thanks in advance

@nedtwigg
Copy link
Member

I suspect that maybe the shebang isn't being escaped into XML properly. I don't think you need the backslash, just #!/bin/sh should be fine.

@usoni2210
Copy link
Author

I suspect that maybe the shebang isn't being escaped into XML properly. I don't think you need the backslash, just #!/bin/sh should be fine.

I have tried that too but didn't work.

As I mentioned earlier, the issue lies within the code flow. when the setLicenseHeaderYearsFromGitHistory property is set, the code does not proceed to the step:format function to check for the shebang (in the else block of code screenshot). This results in the shebang being removed from the shell script files.

I’ve implemented a fix in my forked repository. You can view the changes here:
usoni2210/spotless@main...usoni2210:spotless:bugfix/2270

@nedtwigg
Copy link
Member

PRs welcome :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants