From a305c37e62eca42aaad16b4521520bad6bca58d2 Mon Sep 17 00:00:00 2001
From: JakobDev <jakobdev@gmx.de>
Date: Fri, 16 Jun 2023 07:46:12 +0200
Subject: [PATCH] Show if File is Executable (#25287)

This simply shows if a File has the executable Permission


![grafik](https://github.com/go-gitea/gitea/assets/15185051/1d50c105-6d55-4ecc-808a-c9cd5559d238)

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: Giteabot <teabot@gitea.io>
---
 options/locale/locale_en-US.ini | 1 +
 routers/web/repo/view.go        | 1 +
 templates/repo/file_info.tmpl   | 5 +++++
 3 files changed, 7 insertions(+)

diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 65dda101f5..25456d0493 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -1156,6 +1156,7 @@ video_not_supported_in_browser = Your browser does not support the HTML5 'video'
 audio_not_supported_in_browser = Your browser does not support the HTML5 'audio' tag.
 stored_lfs = Stored with Git LFS
 symbolic_link = Symbolic link
+executable_file = Executable File
 commit_graph = Commit Graph
 commit_graph.select = Select branches
 commit_graph.hide_pr_refs = Hide Pull Requests
diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go
index cf719c49f0..ad87bae9b8 100644
--- a/routers/web/repo/view.go
+++ b/routers/web/repo/view.go
@@ -390,6 +390,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 	ctx.Data["IsRepresentableAsText"] = isRepresentableAsText
 	ctx.Data["IsDisplayingSource"] = isDisplayingSource
 	ctx.Data["IsDisplayingRendered"] = isDisplayingRendered
+	ctx.Data["IsExecutable"] = entry.IsExecutable()
 
 	isTextSource := fInfo.isTextFile || isDisplayingSource
 	ctx.Data["IsTextSource"] = isTextSource
diff --git a/templates/repo/file_info.tmpl b/templates/repo/file_info.tmpl
index 580966d35c..44256a0dcb 100644
--- a/templates/repo/file_info.tmpl
+++ b/templates/repo/file_info.tmpl
@@ -25,4 +25,9 @@
 			{{.LexerName}}
 		</div>
 	{{end}}
+	{{if .IsExecutable}}
+		<div class="file-info-entry">
+			{{.locale.Tr "repo.executable_file"}}
+		</div>
+	{{end}}
 </div>