mirror of
https://github.com/safing/portbase
synced 2025-09-01 18:19:57 +00:00
Merge pull request #119 from safing/fix/binmeta-1
Fix binary name generation
This commit is contained in:
commit
d4ae90e1ba
3 changed files with 33 additions and 5 deletions
|
@ -25,17 +25,32 @@ func GenerateBinaryNameFromPath(path string) string {
|
|||
segments := segmentsSplitter.FindAllString(fileName, -1)
|
||||
|
||||
// Remove last segment if it's an extension.
|
||||
if len(segments) >= 2 &&
|
||||
strings.HasPrefix(segments[len(segments)-1], ".") {
|
||||
segments = segments[:len(segments)-1]
|
||||
if len(segments) >= 2 {
|
||||
switch strings.ToLower(segments[len(segments)-1]) {
|
||||
case
|
||||
".exe", // Windows Executable
|
||||
".msi", // Windows Installer
|
||||
".bat", // Windows Batch File
|
||||
".cmd", // Windows Command Script
|
||||
".ps1", // Windows Powershell Cmdlet
|
||||
".run", // Linux Executable
|
||||
".appimage", // Linux AppImage
|
||||
".app", // MacOS Executable
|
||||
".action", // MacOS Automator Action
|
||||
".out": // Generic Compiled Executable
|
||||
segments = segments[:len(segments)-1]
|
||||
}
|
||||
}
|
||||
|
||||
// Debugging snippet:
|
||||
// fmt.Printf("segments: %s\n", segments)
|
||||
|
||||
// Go through segments and collect name parts.
|
||||
nameParts := make([]string, 0, len(segments))
|
||||
var fragments string
|
||||
for _, segment := range segments {
|
||||
// Group very short segments.
|
||||
if len(segment) <= 3 {
|
||||
if len(delimitersAtStart.ReplaceAllString(segment, "")) <= 2 {
|
||||
fragments += segment
|
||||
continue
|
||||
} else if fragments != "" {
|
||||
|
@ -51,6 +66,9 @@ func GenerateBinaryNameFromPath(path string) string {
|
|||
nameParts = append(nameParts, fragments)
|
||||
}
|
||||
|
||||
// Debugging snippet:
|
||||
// fmt.Printf("parts: %s\n", nameParts)
|
||||
|
||||
// Post-process name parts
|
||||
for i := range nameParts {
|
||||
// Remove any leading delimiters.
|
||||
|
@ -62,6 +80,9 @@ func GenerateBinaryNameFromPath(path string) string {
|
|||
}
|
||||
}
|
||||
|
||||
// Debugging snippet:
|
||||
// fmt.Printf("final: %s\n", nameParts)
|
||||
|
||||
return strings.Join(nameParts, " ")
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@ import (
|
|||
)
|
||||
|
||||
func TestGenerateBinaryNameFromPath(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert.Equal(t, "Nslookup", GenerateBinaryNameFromPath("nslookup.exe"))
|
||||
assert.Equal(t, "System Settings", GenerateBinaryNameFromPath("SystemSettings.exe"))
|
||||
assert.Equal(t, "One Drive Setup", GenerateBinaryNameFromPath("OneDriveSetup.exe"))
|
||||
|
@ -17,9 +19,13 @@ func TestGenerateBinaryNameFromPath(t *testing.T) {
|
|||
assert.Equal(t, "Win Store App", GenerateBinaryNameFromPath("WinStore.App.exe"))
|
||||
assert.Equal(t, "Test Script", GenerateBinaryNameFromPath(".test-script"))
|
||||
assert.Equal(t, "Browser Broker", GenerateBinaryNameFromPath("browser_broker.exe"))
|
||||
assert.Equal(t, "Virtual Box VM", GenerateBinaryNameFromPath("VirtualBoxVM"))
|
||||
assert.Equal(t, "Io Elementary Appcenter", GenerateBinaryNameFromPath("io.elementary.appcenter"))
|
||||
}
|
||||
|
||||
func TestCleanFileDescription(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert.Equal(t, "Product Name", cleanFileDescription("Product Name. Does this and that."))
|
||||
assert.Equal(t, "Product Name", cleanFileDescription("Product Name - Does this and that."))
|
||||
assert.Equal(t, "Product Name", cleanFileDescription("Product Name / Does this and that."))
|
||||
|
|
|
@ -7,7 +7,8 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
func runPowershellCmd(script string) (output string, err error) {
|
||||
// RunPowershellCmd runs a powershell command and returns its output.
|
||||
func RunPowershellCmd(script string) (output string, err error) {
|
||||
// Create command to execute.
|
||||
cmd := exec.Command(
|
||||
"powershell.exe",
|
||||
|
|
Loading…
Add table
Reference in a new issue