Compare commits

...
Author SHA1 Message Date
Graham Steffaniak 9f60fe5108 updated workflow 2024-05-04 20:50:21 -05:00
Graham Steffaniak 53ea320034 Merge branch 'main' into v0.2.1 2023-10-22 19:23:22 -05:00
Graham SteffaniakandGraham Steffaniak f73f876888 bugfix on search results view on ui (#63)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2023-10-22 19:21:45 -05:00
Graham SteffaniakandGraham Steffaniak 1b37aa2f66 Fix other bugs (#57)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2023-10-18 20:14:33 -05:00
Graham Steffaniak d6293fa0d6 final Bugfix search (#55) 2023-10-18 10:21:35 -05:00
Graham Steffaniak 4a5f003250 Update README.md 2023-10-17 11:09:24 -05:00
Graham Steffaniak 5bd7955fa2 Merge branch 'main' into v0.2.1 2023-10-14 08:44:17 -05:00
Graham Steffaniak 9c3301d49a Update filebrowser.yaml 2023-10-11 10:07:19 -05:00
Graham Steffaniak aa798e3ef3 Merge branch 'main' into v0.2.1 2023-10-11 09:37:25 -05:00
Graham SteffaniakandGraham Steffaniak 060ab256a0 Update Dockerfile , settings, and tweaks (#48)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2023-10-11 09:36:35 -05:00
Graham SteffaniakandGraham Steffaniak 1da1feea00 Update signup (#46)
Co-authored-by: Graham Steffaniak <graham.steffaniak@autodesk.com>
2023-10-10 19:59:01 -05:00
Graham Steffaniak a22d376392 updated test 2023-10-10 10:02:04 -05:00
8 changed files with 142 additions and 66 deletions

No files matched your search

+76
View File
@@ -0,0 +1,76 @@
name: dev
on:
push:
branches:
- 'dev_v*'
jobs:
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.22.0
- run: cd backend && go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.22.0
- run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2
- run: cd backend && golangci-lint run
format-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.22.0
- run: cd backend && go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '21'
- run: cd frontend && npm i eslint
- run: cd frontend && npm run lint
push_dev_to_registry:
name: Push dev image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
# Workaround to fix error:
# failed to push: failed to copy: io: read/write on closed pipe
# See https://github.com/docker/build-push-action/issues/761
with:
driver-opts: |
image=moby/buildkit:v0.10.6
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: gtstef/filebrowser
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+4 -4
View File
@@ -12,7 +12,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: cd backend && go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
@@ -20,7 +20,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2
- run: cd backend && golangci-lint run
format-backend:
@@ -29,7 +29,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: cd backend && go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
@@ -37,7 +37,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '20'
node-version: '21'
- run: cd frontend && npm i eslint
- run: cd frontend && npm run lint
+5 -5
View File
@@ -4,6 +4,7 @@ on:
pull_request:
branches:
- 'main'
- 'dev_v*'
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:
@@ -13,7 +14,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: cd backend && go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
@@ -21,7 +22,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2
- run: cd backend && golangci-lint run
format-backend:
@@ -30,7 +31,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: cd backend && go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
@@ -38,12 +39,11 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '20'
node-version: '21'
- run: cd frontend && npm i eslint
- run: cd frontend && npm run lint
push_pr_to_registry:
needs: [lint-frontend, lint-backend, test-backend, format-backend]
name: Push PR
runs-on: ubuntu-latest
steps:
+31 -4
View File
@@ -4,14 +4,41 @@ on:
push:
branches:
- 'v[0-9]+.[0-9]+.[0-9]+'
permissions:
contents: write
jobs:
create_release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.extract_branch.outputs.branch }}
release_name: ${{ steps.extract_branch.outputs.branch }}
body: |
Please see usage on [readme](https://github.com/gtsteffaniak/filebrowser).
Docker repo: https://hub.docker.com/r/gtstef/filebrowser/tags
draft: false
prerelease: false
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: cd backend && go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
@@ -19,7 +46,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2
- run: cd backend && golangci-lint run
format-backend:
@@ -28,7 +55,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: 1.21.1
go-version: 1.22.0
- run: cd backend && go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
@@ -36,7 +63,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '20'
node-version: '21'
- run: cd frontend && npm i eslint
- run: cd frontend && npm run lint
push_release_to_registry:
+2 -6
View File
@@ -11,10 +11,6 @@ import (
"github.com/gtsteffaniak/filebrowser/settings"
)
const (
maxIndexSize = 1000
)
type Index struct {
Dirs []string
Files []string
@@ -34,8 +30,8 @@ func GetIndex() *Index {
func Initialize(intervalMinutes uint32) {
// Initialize the index
indexes = Index{
Dirs: make([]string, 0, maxIndexSize),
Files: make([]string, 0, maxIndexSize),
Dirs: []string{},
Files: []string{},
}
rootPath = settings.GlobalConfiguration.Server.Root
var numFiles, numDirs int
+2 -2
View File
@@ -10,8 +10,8 @@ import (
func BenchmarkFillIndex(b *testing.B) {
indexes = Index{
Dirs: make([]string, 0, 1000),
Files: make([]string, 0, 1000),
Dirs: []string{},
Files: []string{},
}
b.ResetTimer()
b.ReportAllocs()
+10 -12
View File
@@ -21,8 +21,6 @@ func (si *Index) Search(search string, scope string, sourceSession string) ([]st
if scope == "" {
scope = "/"
}
fileTypes := map[string]bool{}
runningHash := generateRandomHash(4)
sessionInProgress.Store(sourceSession, runningHash) // Store the value in the sync.Map
searchOptions := ParseSearch(search)
@@ -55,20 +53,16 @@ func (si *Index) Search(search string, scope string, sourceSession string) ([]st
if count > maxSearchResults {
break
}
pathName := scopedPathNameFilter(path, scope)
pathName := scopedPathNameFilter(path, scope, isDir)
if pathName == "" {
continue
}
fileTypes := map[string]bool{}
matches, fileType := containsSearchTerm(path, searchTerm, *searchOptions, isDir, fileTypes)
if !matches {
continue
}
if isDir {
fileListTypes[pathName+"/"] = fileType
} else {
fileListTypes[pathName] = fileType
}
fileListTypes[pathName] = fileType
matching = append(matching, pathName)
count++
}
@@ -83,13 +77,17 @@ func (si *Index) Search(search string, scope string, sourceSession string) ([]st
return matching, fileListTypes
}
func scopedPathNameFilter(pathName string, scope string) string {
func scopedPathNameFilter(pathName string, scope string, isDir bool) string {
scope = strings.TrimPrefix(scope, "/")
pathName = strings.TrimPrefix(pathName, "/")
pathName = strings.TrimSuffix(pathName, "/")
if strings.HasPrefix(pathName, scope) {
pathName = "/" + strings.TrimPrefix(pathName, scope)
pathName = strings.TrimPrefix(pathName, scope)
if isDir {
pathName = pathName + "/"
}
} else {
pathName = ""
pathName = "" // return not matched
}
return pathName
}
+12 -33
View File
@@ -9,8 +9,8 @@ import (
func BenchmarkSearchAllIndexes(b *testing.B) {
indexes = Index{
Dirs: make([]string, 0, 1000),
Files: make([]string, 0, 1000),
Dirs: []string{},
Files: []string{},
}
// Create mock data
createMockData(50, 3) // 1000 dirs, 3 files per dir
@@ -101,37 +101,37 @@ func TestSearchIndexes(t *testing.T) {
{
search: "audio",
scope: "/new/",
expectedResult: []string{"/test/audio.wav"},
expectedResult: []string{"test/audio.wav"},
expectedTypes: map[string]map[string]bool{
"/test/audio.wav": map[string]bool{"audio": true, "dir": false},
"test/audio.wav": map[string]bool{"audio": true, "dir": false},
},
},
{
search: "test",
scope: "/",
expectedResult: []string{"/test"},
expectedResult: []string{"test/"},
expectedTypes: map[string]map[string]bool{
"/test/": map[string]bool{"dir": true},
"test/": map[string]bool{"dir": true},
},
},
{
search: "archive",
scope: "/",
expectedResult: []string{"/new/test/path/archive.zip"},
expectedResult: []string{"new/test/path/archive.zip"},
expectedTypes: map[string]map[string]bool{
"/new/test/path/archive.zip": map[string]bool{"archive": true, "dir": false},
"new/test/path/archive.zip": map[string]bool{"archive": true, "dir": false},
},
},
{
search: "video",
scope: "/",
expectedResult: []string{
"/new/test/video.mp4",
"/new/test/video.MP4",
"new/test/video.mp4",
"new/test/video.MP4",
},
expectedTypes: map[string]map[string]bool{
"/new/test/video.MP4": map[string]bool{"video": true, "dir": false},
"/new/test/video.mp4": map[string]bool{"video": true, "dir": false},
"new/test/video.MP4": map[string]bool{"video": true, "dir": false},
"new/test/video.mp4": map[string]bool{"video": true, "dir": false},
},
},
}
@@ -150,27 +150,6 @@ func TestSearchIndexes(t *testing.T) {
}
}
func Test_scopedPathNameFilter(t *testing.T) {
type args struct {
pathName string
scope string
}
tests := []struct {
name string
args args
want string
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := scopedPathNameFilter(tt.args.pathName, tt.args.scope); got != tt.want {
t.Errorf("scopedPathNameFilter() = %v, want %v", got, tt.want)
}
})
}
}
func Test_isDoc(t *testing.T) {
type args struct {
extension string