Skip to content
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

Port tgui dev server fixes #1725

Merged
merged 3 commits into from
Apr 27, 2024
Merged

Port tgui dev server fixes #1725

merged 3 commits into from
Apr 27, 2024

Conversation

Absolucy
Copy link
Member

@Absolucy Absolucy commented Apr 23, 2024

About The Pull Request

Ports:

I think @dwasint also ported these fixes in the biodome branch, but well, here's the fixes on their own so they can be merged far quicker.

Changelog

No changelog, as there's nothing player facing

jlsnow301 and others added 3 commits April 23, 2024 01:48
## About The Pull Request
- the .js extensions were required, this is my fault. 
- fixes a crash "automatic publicPath is not supported in this browser"
## Why It's Good For The Game
Bug fixes. Dev server is working
## Changelog
N/A nothing player facing
## About The Pull Request
Fixes starting the tgui dev server on Windows machines.

Currently on Windows when starting the tgui dev server, it will be
unable to find the Byond cache at any of the predefined paths it
searches, and resort to using the registry even if one of the predefined
paths should successfully locate it. Then, it will fail to find the tmp#
folder inside that cache folder even if it exists.

The reason is that on Windows, the glob package requires forward slashes
when you call its methods such as sync(), as documented in the glob
module's documentation:
>Note Glob patterns should always use / as a path separator, even on
Windows systems, as \ is used to escape glob characters. If you wish to
use \ as a path separator instead of using it as an escape character on
Windows platforms, you may set windowsPathsNoEscape:true in the options.
In this mode, special glob characters cannot be escaped, making it
impossible to match a literal * ? and so on in filenames.

The function being used to assemble the path, node's path.resolve(),
uses backslashes if you call it on a Windows platform. It does not
accept any arguments to alter this, nor are there any
delimter-conversion functions in the path package. There is an
alternative to change the delimiter, forcing POSIX-style path.resolve()
by calling path.posix.resolve(), however this removes the drive letter
and does not work as a valid path on Windows.

For example:
What we need to pass to globPkg.sync():
`C:/Users/SomeName/Documents/Byond/cache`
What path.resolve() returns: `C:\Users\SomeName\Documents\Byond\cache`
What path.posix.resolve() returns:
`/Users/SomeName/Documents/Byond/cache`

Unfortunately there is not a method in the node path module to return
what we need. Instead, we use the workaround provided in glob's
documentation and add the windowsPathsNoEscape option. This COULD have a
negative effect when searching for * and ? literals, however a search of
resolveGlob() callers shows that none of them do this. * and ? in all
callers is intended to be a wildcard, not a literal, so this won't have
any impact on anything.
## Why It's Good For The Game
Helps development efforts for developers using Windows.
Glob package wasn't resolving tmp folder. Javascript does not clue you
in that the arguments have changed at all. I downgraded the package and
it works.
Dev server is 100% confirmed working I swear if it breaks again I
will... I will...
N/A nothing player facing
@Absolucy Absolucy changed the title Port tgui devs server fixes Port tgui dev server fixes Apr 23, 2024
@dwasint dwasint merged commit 3539810 into Monkestation:master Apr 27, 2024
23 checks passed
@Absolucy Absolucy deleted the fix-tgui branch April 27, 2024 00:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants