-
Notifications
You must be signed in to change notification settings - Fork 56
fix(filebrowser): configure before running #400
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
Conversation
Hi @evilhamsterman, Could you take care of the tests that are failing? Thanks :) |
it's working correctly, thank you |
So looking at the failing tests they fail even with the older versions of the script. I have tested all those options myself and they all work. What is the expected scripting environment, the script was using Also it seems something's wrong with how it checks Stdout. Even if I change the container to something like debian:bookworm which has bash and make the script do nothing but 28 | const state = await runTerraformApply(import.meta.dir, {
29 | agent_id: "foo",
30 | });
31 | const output = await executeScriptInContainer(state, "debian:bookworm-slim");
32 | expect(output.exitCode).toBe(0);
33 | expect(output.stdout).toEqual([
^
error: expect(received).toEqual(expected)
[
+ ""
- "👷 Starting filebrowser in background... ",
- "",
- "📂 Serving /root at http://localhost:13339 ",
- "",
- "Running 'filebrowser -d filebrowser.db' ",
- "",
- "📝 Logs at /tmp/filebrowser.log"
]
- Expected - 7
+ Received + 1
at <anonymous> (/home/dmills/development/coder-modules/filebrowser/main.test.ts:33:27)
✗ filebrowser > runs with default [546.26ms]
46 | agent_id: "foo",
47 | database_path: ".config/filebrowser.db",
48 | });
49 | const output = await executeScriptInContainer(state, "debian:bookworm-slim");
50 | expect(output.exitCode).toBe(0);
51 | expect(output.stdout).toEqual([
^
error: expect(received).toEqual(expected)
[
+ ""
- "\u001B[0;1mInstalling filebrowser ",
- "",
- "🥳 Installation complete! ",
- "",
- "👷 Starting filebrowser in background... ",
- "",
- "📂 Serving /root at http://localhost:13339 ",
- "",
- "Running 'filebrowser --noauth --root /root --port 13339 -d .config/filebrowser.db --baseurl ' ",
- "",
- "📝 Logs at /tmp/filebrowser.log"
]
- Expected - 11
+ Received + 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Had some minor suggestions, but didn't spot anything terribly wrong that wasn't already. 😄
Also, since this is a Bash dependent script, we should use [[
instead of [
. The former has many benefits and no downsides compared to [
. (Not requiring this change though, as it's what was used before.)
filebrowser/run.sh
Outdated
|
||
filebrowser --noauth --root $ROOT_DIR --port ${PORT}$${DB_FLAG} --baseurl ${SERVER_BASE_PATH} > ${LOG_PATH} 2>&1 & | ||
filebrowser $DB_FLAG >> ${LOG_PATH} 2>&1 & |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I want to make it clear that this issue was not introduced by this PR.
But I'll just mention this again; this will break if DB_PATH
has spaces in it. A better way would be to initialize this as an array and use it in a way that handles spaces:
args=()
if [ "${DB_PATH}" != "filebrowser.db" ]; then
args+=(-d "${DB_PATH}")
fi
Then use this as:
filebrowser "${args[@]}"
(I did not verify if $$
vs $
is required here due to terraform templates.)
This syntax works even in bash-3.2, so should be fine to use. (I opted for arrays as I see we already have a heavy dependency on Bash here.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TBH There's a lot of places that it could break because of spaces in the path, the LOG_PATH and SERVER_BASE_PATH could also cause problems.
I do think I found a bit easier and more readable way to handle it. Filebrowser supports the FB_DATABASE environment variable. So I just set that at the top inside quotes and then it doesn't matter, it works with or without spaces.
Hi @evilhamsterman, thank you for your contribution. Could you please address the review comments to merge this PR? |
@matifali Sorry I've had a very busy month. I should be able to get to it later this week |
I applied some of the suggestions above, I also resolved the issue of spaces in the DB path by using the FB_DATABASE environment variable instead. Let me know if there's anything else |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 1 out of 1 changed files in this pull request and generated no comments.
@evilhamsterman the reason our tests are weird (even on main) is due to the fact the script is non-strict and ignores any the scripts should exit when errors like this occur, but they don't, i am puzzled as to how it even manages to run the script without bash though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have confirmed that this works by creating a template on our internal instance.
@matifali let's merge it with the broken tests and i'll fix the tests afterwards, could you force merge? this PR is not the culprit for the broken tests, but our script is not strict enough, and our test suite will not fail on main even though the dependencies ( we should look into having stricter values for our scripts like we do in coder/coder where cc @mafredri for input |
Force merged. |
Thanks for the help! |
Fixes #399
Instead of trying to cram the config into one command we check if the db exists, if not initialize it then configure the various values before starting the app.