Fix workflows (#165)

This commit is contained in:
Graham Steffaniak 2024-08-04 09:56:18 -05:00 committed by GitHub
parent 865fb4e243
commit af407068b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 118 additions and 260 deletions

View File

@ -1,79 +0,0 @@
name: dev
on:
push:
branches:
- 'dev_v*'
jobs:
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- uses: golangci/golangci-lint-action@v6
with:
version: v1.59
working-directory: backend
format-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- working-directory: frontend
run: npm i eslint && 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@v5
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 }}

View File

@ -3,48 +3,10 @@ name: main job
on: on:
push: push:
branches: branches:
- 'main' - "main"
jobs: jobs:
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- uses: golangci/golangci-lint-action@v6
with:
version: v1.59
working-directory: backend
format-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- working-directory: frontend
run: npm i eslint && npm run lint
push_latest_to_registry: push_latest_to_registry:
needs: [lint-frontend, lint-backend, test-backend, format-backend]
name: Push latest name: Push latest
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@ -3,48 +3,11 @@ name: pr-merge
on: on:
pull_request: pull_request:
branches: branches:
- 'main' - "main"
- 'dev_v*' - "v[0-9]+.[0-9]+.[0-9]+"
- 'v[0-9]+.[0-9]+.[0-9]+' - "dev_*"
jobs: jobs:
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- uses: golangci/golangci-lint-action@v6
with:
version: v1.59
working-directory: backend
format-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- working-directory: frontend
run: npm i eslint && npm run lint
push_pr_to_registry: push_pr_to_registry:
name: Push PR name: Push PR
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -78,4 +41,4 @@ jobs:
file: ./Dockerfile file: ./Dockerfile
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}

44
.github/workflows/regular-tests.yaml vendored Normal file
View File

@ -0,0 +1,44 @@
name: dev
on:
push:
branches:
- "*"
jobs:
test-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- uses: golangci/golangci-lint-action@v6
with:
version: v1.59
working-directory: backend
format-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- working-directory: frontend
run: npm i eslint && npm run lint

View File

@ -3,7 +3,7 @@ name: release
on: on:
push: push:
branches: branches:
- 'v[0-9]+.[0-9]+.[0-9]+' - "v[0-9]+.[0-9]+.[0-9]+"
permissions: permissions:
contents: write contents: write
@ -14,63 +14,27 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v4
with:
token: ${{ secrets.PAT }}
- name: Extract branch name - name: Extract branch name
shell: bash shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch id: extract_branch
- uses: actions/setup-go@v5
with:
go-version: 1.22.2
- name: Create Release - name: Create Release
id: create_release uses: softprops/action-gh-release@v2
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
target_commitish: ${{ steps.extract_branch.outputs.branch }}
token: ${{ secrets.PAT }}
tag_name: ${{ steps.extract_branch.outputs.branch }} 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 prerelease: false
test-backend: draft: false
runs-on: ubuntu-latest generate_release_notes: true
steps: name: ${{ steps.extract_branch.outputs.branch }}
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go test -race -v ./...
lint-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- uses: golangci/golangci-lint-action@v6
with:
version: v1.59
working-directory: backend
format-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 'stable'
- working-directory: backend
run: go fmt ./...
lint-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- working-directory: frontend
run: npm i eslint && npm run lint
push_release_to_registry: push_release_to_registry:
needs: [lint-frontend, lint-backend, test-backend, format-backend]
name: Push release name: Push release
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

24
.github/workflows/tag.yaml vendored Normal file
View File

@ -0,0 +1,24 @@
name: tag
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
update_tag:
name: Update Release tag
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
with:
args: release --clean
workdir: backend
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -6,12 +6,12 @@
</p> </p>
<h3 align="center">Filebrowser - A modern web-based file manager</h3> <h3 align="center">Filebrowser - A modern web-based file manager</h3>
<p align="center"> <p align="center">
<img width="800" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/899152cf-3e69-4179-aa82-752af2df3fc6" title="Main Screenshot"> <img width="800" src="https://github.com/user-attachments/assets/8ba93582-aba2-4996-8ac3-25f763a2e596" title="Main Screenshot">
</p> </p>
> [!WARNING] > [!WARNING]
> Starting with v0.2.0, *ALL* configuration is done via `filebrowser.yaml` > Starting with v0.2.0, *ALL* configuration is done via `filebrowser.yaml`
> configuration file. > Configuration file.
> Starting with v0.2.4 *ALL* share links need to be re-created (due to > Starting with v0.2.4 *ALL* share links need to be re-created (due to
> security fix). > security fix).
@ -20,7 +20,7 @@ origin:
1. [x] Better search 1. [x] Better search
- Lightning fast - Lightning fast
- realtime results as you type - real-time results as you type
- Works with more type filters - Works with more type filters
- interactive results page. - interactive results page.
2. [x] Revamped and simplified GUI navbar and sidebar menu. 2. [x] Revamped and simplified GUI navbar and sidebar menu.
@ -28,49 +28,47 @@ origin:
styles. styles.
3. [x] Revamped configuration via `filebrowser.yml` config file. 3. [x] Revamped configuration via `filebrowser.yml` config file.
- More configurations possible at a per-user level - More configurations possible at a per-user level
- <img width="450" alt="image" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/625bd7c4-5ee9-4011-aaae-2a388ab0813b">
## About ## About
Filebrowser provides a file managing interface within a specified directory Filebrowser provides a file managing interface within a specified directory
and it can be used to upload, delete, preview, rename and edit your files. and can be used to upload, delete, preview, rename, and edit your files.
It allows the creation of multiple users and each user can have its own It allows the creation of multiple users and each user can have its
directory. directory.
This repository is a fork, a collection of changes that make this program This repository is a fork, a collection of changes that make this program
work better in terms of asthetics and performance. Improved search, work better in terms of aesthetics and performance. Improved search,
simplified ui (without removing features) and more secure and up-to-date simplified ui (without removing features) and more secure and up-to-date
build are just a few examples. build are just a few examples.
This Implementation of filebrowser differs significantly to the original. This Implementation of filebrowser differs significantly to the original.
There are hundereds of thousands of lines changed and they are generally There are hundreds of thousands of lines changed and they are generally
no longer compatible with eachother. This has been intentional -- the no longer compatible with each other. This has been intentional -- the
focus of this fork is on a few key principles: focus of this fork is on a few key principles:
- Simplicity and improved user experience - Simplicity and improved user experience
- Efficiency of operations and performance - Efficiency of operations and performance
- Minimizing external dependancies and usage of standard libraries. - Minimize external dependencies and standard library usage.
- Of course -- adding much needed features. - Of course -- adding much-needed features.
## Look ## Look
One way you can observe the improved user experience is how I changed One way you can observe the improved user experience is how I changed
the UI. The Navbar is simplified to a three component system : the UI. The Navbar is simplified to a three-component system :
1. (Left) The slide-out action panel button 1. (Left) The slide-out action panel button
2. (Middle) The powerful search bar. 2. (Middle) The powerful search bar.
3. (Right) The view change toggle. 3. (Right) The view change toggle.
All other functions are moved either into the action menu or popup menus. All other functions are moved either into the action menu or popup menus.
If the action is does not depend on context, it will exist in the slide-out If the action does not depend on context, it will exist in the slide-out
action panel. If the action is available based on context, it will showup as action panel. If the action is available based on context, it will show up as
a popup menu. a popup menu.
<p align="center"> <p align="center">
<img width="500" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/35cdeb3b-ab79-4b04-8001-8f51f6ea06bb" title="Dark mode"> <img width="800" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/899152cf-3e69-4179-aa82-752af2df3fc6" title="Main Screenshot">
<img width="500" alt="image" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/55fa4f5c-440e-4a97-b711-96139208a163"> <img width="800" src="https://github.com/user-attachments/assets/18c02d03-5c60-4e15-9c32-3cfe058a0c49" title="Main Screenshot">
<img width="500" alt="image" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/c76f4100-949b-4e17-a3e6-e410fb8ec08f"> <img width="800" src="https://github.com/user-attachments/assets/75226dc4-9802-46f0-9e3c-e4403d3275da" title="Main Screenshot">
<img width="500" alt="image" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/0bde26f3-fa90-411e-bd0b-abaa47506d62">
<img width="560" alt="image" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/71d8f2b8-6fe6-4fdc-8aac-503d08c28d86">
</p> </p>
## Install ## Install
@ -135,7 +133,7 @@ Note: Must download asset with frontend directory next to filebrowser binary
## Configuration ## Configuration
All configuration is now done via a single configuration file: All configuration is now done via a single configuration file:
`filebrowser.yaml`, here is an example minimal [configuration `filebrowser.yaml`, here is an example of minimal [configuration
file](./backend/filebrowser.yaml). file](./backend/filebrowser.yaml).
View the [Configuration Help Page](./configuration.md) for available View the [Configuration Help Page](./configuration.md) for available
@ -144,8 +142,8 @@ configuration options and other help.
## Migration from filebrowser/filebrowser ## Migration from filebrowser/filebrowser
If you are currently using filebrowser from the filebrowser/filebrowser If you currently use filebrowser from the filebrowser/filebrowser
repo, but want to try using this. I recommend you start fresh without repo but want to try using this. I recommend you start fresh without
reusing the database, but there are a few things you'll need to do if you reusing the database, but there are a few things you'll need to do if you
must migrate: must migrate:
@ -158,33 +156,13 @@ must migrate:
command to use the config file as described in the install section command to use the config file as described in the install section
above. above.
5. If you are not using docker, just make sure you run filebrowser -c 5. If you are not using docker, just make sure you run filebrowser -c
filebrowser.yml and have valid filebrowser config. filebrowser.yml and have a valid filebrowser config.
The filebrowser application should run with the same user and rules that The filebrowser application should run with the same user and rules that
you have from the original. But keep in mind the differences that are you have from the original. But keep in mind the differences that are
mentioned at the top of this readme. mentioned at the top of this readme.
### background & help
The original project filebrowser/filebrowser used multiple different ways
to configure the server. This was confusing and difficult to work with
from a user and from a developer's perspective. So I completely redesigned
the program to use one single human-readable config file.
I understand many coming from the original fork may notice differences
which make using this improved version more difficult. If you notice
issues that you believe should be fixed, please open an issue here and it
will very likely be addressed with a PR within a few weeks.
This version of filebrowser is going through a configuration overhaul as
mentioned above. Certain features related to rules and commands may not
work as they do on the original filebrowser. The purpose of this is to
create a more consistent experience where configuration is done via files
rather than running commands, so that it's very clear what the current
state of the configuration is. When running commands its not clear what
the configuration is.
## Roadmap ## Roadmap
see [Roadmap Page](./roadmap.md) see [Roadmap Page](./roadmap.md)

View File

@ -2,7 +2,7 @@ package version
var ( var (
// Version is the current File Browser version. // Version is the current File Browser version.
Version = "(0.2.6)" Version = "(0.2.7)"
// CommitSHA is the commmit sha. // CommitSHA is the commmit sha.
CommitSHA = "(unknown)" CommitSHA = "(unknown)"
) )

View File

@ -30,7 +30,6 @@ export async function update(user, which = ["all"]) {
if (user.username == "publicUser") { if (user.username == "publicUser") {
return return
} }
console.log("updating user",user,which)
await fetchURL(`/api/users/${user.id}`, { await fetchURL(`/api/users/${user.id}`, {
method: "PUT", method: "PUT",
body: JSON.stringify({ body: JSON.stringify({

View File

@ -29,7 +29,12 @@
</div> </div>
<!-- Search results for mobile --> <!-- Search results for mobile -->
<div v-if="isMobile && active" id="result" :class="{ hidden: !active }" ref="result"> <div
v-if="state.isMobile && active"
id="result"
:class="{ hidden: !active }"
ref="result"
>
<div id="result-list"> <div id="result-list">
<div class="button" style="width: 100%">Search Context: {{ getContext }}</div> <div class="button" style="width: 100%">Search Context: {{ getContext }}</div>
<!-- List of search results --> <!-- List of search results -->
@ -97,7 +102,7 @@
</div> </div>
<!-- Search results for desktop --> <!-- Search results for desktop -->
<div v-show="!isMobile && active" id="result-desktop" ref="result"> <div v-show="!state.isMobile && active" id="result-desktop" ref="result">
<div class="searchContext">Search Context: {{ getContext }}</div> <div class="searchContext">Search Context: {{ getContext }}</div>
<div id="result-list"> <div id="result-list">
<div> <div>

View File

@ -40,7 +40,8 @@ export const getters = {
return false return false
} }
const hasPrompt = getters.currentPrompt() !== null && getters.currentPromptName() !== "more"; const hasPrompt = getters.currentPrompt() !== null && getters.currentPromptName() !== "more";
return hasPrompt || getters.isSidebarVisible(); const shouldOverlaySidebar = getters.isSidebarVisible() && !getters.isStickySidebar()
return hasPrompt || shouldOverlaySidebar;
}, },
getRoutePath: () => { getRoutePath: () => {
return state.route.path.endsWith("/") return state.route.path.endsWith("/")

View File

@ -6,7 +6,6 @@ import { users } from "@/api";
export const mutations = { export const mutations = {
setMobile() { setMobile() {
state.mobile = window.innerWidth <= 800 state.mobile = window.innerWidth <= 800
console.log("state updated",state.mobile)
emitStateChanged(); emitStateChanged();
}, },
toggleDarkMode() { toggleDarkMode() {

View File

@ -60,7 +60,6 @@ export default {
$route: "fetchData", $route: "fetchData",
reload(value) { reload(value) {
if (value) { if (value) {
console.log("reloading");
this.fetchData(); this.fetchData();
} }
}, },

View File

@ -63,7 +63,7 @@ export default {
}, },
computed: { computed: {
showSearch() { showSearch() {
return getters.isFiles() && getters.isLoggedIn(); return getters.isLoggedIn() && this.currentView == "listingView";
}, },
isLoggedIn() { isLoggedIn() {
return getters.isLoggedIn(); return getters.isLoggedIn();
@ -121,7 +121,6 @@ export default {
}, },
methods: { methods: {
updateIsMobile() { updateIsMobile() {
console.log("setting");
mutations.setMobile(); mutations.setMobile();
}, },
resetPrompts() { resetPrompts() {