Compare commits

...

21 Commits

Author SHA1 Message Date
6d752c99d7
Merge pull request 'new-build' (#133) from new-build into main
All checks were successful
continuous-integration/drone/tag Build is passing
Reviewed-on: #133
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-27 15:55:55 +02:00
d516d22411
build(): new build system 2025-04-27 15:55:32 +02:00
9833bcc09a
build(): new build system 2025-04-27 15:54:53 +02:00
0f2d0bcf44
Merge pull request 'new-build' (#132) from new-build into main
All checks were successful
continuous-integration/drone/tag Build is passing
Reviewed-on: #132
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-27 15:52:44 +02:00
35bbbd902c
build(): new build system, fix(): remove gf 2025-04-27 15:52:16 +02:00
4b301c9644
build(): test new build sys, add script
All checks were successful
continuous-integration/drone/tag Build is passing
2025-04-27 15:44:55 +02:00
69d174e5c4
build(): test new build sys, add script
All checks were successful
continuous-integration/drone/tag Build is passing
2025-04-27 15:41:40 +02:00
8d2b870d54
build(): test new build sys, add script
All checks were successful
continuous-integration/drone/tag Build is passing
2025-04-27 15:25:42 +02:00
4b6f41a6c7
build(): test new build sys, add script
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2025-04-27 15:24:18 +02:00
b41a0a9127
build(): test new build sys 2025-04-27 15:24:09 +02:00
418d5122bc
Merge pull request 'fix(frontend): profile sorting' (#131) from fix-sort into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #131
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-27 00:29:48 +02:00
94903146c4
fix(frontend): profile sorting 2025-04-27 00:28:31 +02:00
fb806b0991
Merge pull request 'fix: fix profile' (#128) from fix-profile into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #128
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 21:16:25 +02:00
e14399d04b
Merge pull request 'fix: fix profile' (#127) from fix-profile into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #127
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 21:12:53 +02:00
837e3de296
Merge pull request 'fix: fix build' (#126) from fix-build into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #126
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 21:06:22 +02:00
b6956bfcfc
Merge pull request 'fix: fix build' (#125) from fix-build into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #125
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 21:03:35 +02:00
a628ad5d56
Merge pull request 'fix: fix build' (#124) from fix-build into main
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Reviewed-on: #124
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 21:02:30 +02:00
2ead40d6ae
Merge pull request 'fix: fix build' (#123) from fix-build into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #123
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 20:59:56 +02:00
d51d7d36a8
Merge pull request 'fix: fix build' (#122) from fix-build into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #122
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 20:52:59 +02:00
68436020c1
Merge pull request 'fix: add required files' (#121) from new-profiles into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #121
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 20:48:39 +02:00
1e01260e82
Merge pull request 'feat: rewrite profile section, some minor chaanges' (#120) from new-profiles into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #120
Reviewed-by: Aleksander Wilczyński <aleks@alekswilc.dev>
2025-04-21 20:47:11 +02:00
11 changed files with 61 additions and 34 deletions

View File

@ -6,14 +6,23 @@ name: build
steps:
- name: build-backend
image: plugins/docker
environment:
TAG:
${DRONE_TAG}
COMMIT:
${DRONE_COMMIT}
settings:
insecure: true
repo: 10.5.0.103:1222/simrail-backend
registry: 10.5.0.103:1222
context: './packages/backend'
dockerfile: './packages/backend/Dockerfile'
build_args_from_env:
- TAG
- COMMIT
tags:
- latest
- ${DRONE_TAG##v}
- name: build-frontend
image: plugins/docker
@ -33,7 +42,8 @@ steps:
- VITE_STATS_KEY
tags:
- latest
- ${DRONE_TAG##v}
trigger:
branch:
- main
event:
- tag

View File

@ -6,8 +6,12 @@ COPY . .
RUN yarn add -D typescript
RUN yarn rawbuild
RUN ls
ARG COMMIT
ENV COMMIT $COMMIT
ARG TAG
ENV TAG $TAG
RUN yarn make-git-info
# Install Doppler CLI
RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.key' -O /etc/apk/keys/cli@doppler-8004D9FF50437357.rsa.pub && \
@ -17,4 +21,4 @@ RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.ke
ENTRYPOINT ["doppler", "run", "--"]
CMD ["node", "/app/dist"]
CMD ["node", "/app/dist/src"]

View File

@ -0,0 +1,4 @@
{
"tag": "",
"commit": ""
}

View File

@ -6,7 +6,8 @@
"scripts": {
"build": "docker build --progress=plain -t simrailpro:backend .",
"rawbuild": "yarn tsc",
"start": "yarn rawbuild && node --env-file=.env dist/index.js"
"start": "yarn rawbuild && node --env-file=.env dist/index.js",
"make-git-info": "node scripts/make-git.js"
},
"author": "Aleksander <alekswilc> Wilczyński",
"license": "AGPL-3.0-only",

View File

@ -0,0 +1,24 @@
/*
* Copyright (C) 2025 Aleksander <alekswilc> Wilczyński (aleks@alekswilc.dev)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* See LICENSE for more.
*/
import fs from 'node:fs/promises';
(async () => {
await fs.writeFile('dist/git.json', JSON.stringify({
tag: process.env.TAG ?? "",
commit: process.env.COMMIT?.substring(0, 7) ?? "",
}))
})();

View File

@ -14,7 +14,7 @@
* See LICENSE for more.
*/
import { execSync } from "child_process";
import gitInfo from '../../git.json' with { type: "json" };
export class GitUtil
{
@ -22,28 +22,12 @@ export class GitUtil
private static getLatestVersion()
{
return process.env.CURRENT_VERSION;
// try
// {
// const data = execSync("git describe --tags --exact-match").toString();
// return data.replace("\n", "");
// } catch
// {
// return undefined;
// }
return gitInfo.tag;
}
private static getLatestCommit()
{
return process.env.CURRENT_COMMIT;
// try
// {
// const data = execSync("git rev-parse --short HEAD").toString();
// return data.replace("\n", "");
// } catch
// {
// return undefined;
// }
return gitInfo.commit;
}

View File

@ -39,7 +39,7 @@
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
// "resolveJsonModule": true, /* Enable importing .json files. */
"resolveJsonModule": true, /* Enable importing .json files. */
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */

View File

@ -95,10 +95,10 @@ export const ProfileCard = ({ data, images }: { data: TProfileData, images: TIma
return data.player.trainStats[b][(sortTrainsByList[sortTrainsBy] ?? 'distance') as 'distance'] - data.player.trainStats[a][(sortTrainsByList[sortTrainsBy] ?? 'distance') as 'distance'];
}
const dispatcherStats = [...chunk(Object.keys(data.player.dispatcherStats), 8)];
const dispatcherStats = [...chunk(Object.keys(data.player.dispatcherStats).sort(sortStations), 8)];
const [dispatcherPage, setDispatcherPage] = useState(1);
const trainStats = [...chunk(Object.keys(data.player.trainStats), 8)];
const trainStats = [...chunk(Object.keys(data.player.trainStats).sort(sortTrains), 8)];
const [trainPage, setTrainPage] = useState(1);
const { t } = useTranslation();
@ -166,10 +166,10 @@ export const ProfileCard = ({ data, images }: { data: TProfileData, images: TIma
</p></a>
</div>
<div className="grid grid-cols-1 gap-7.5 sm:grid-cols-3 xl:grid-cols-4 pt-4">
{dispatcherStats[dispatcherPage - 1].sort(sortStations).map(stationName => {
{dispatcherStats[dispatcherPage - 1].map(stationName => {
const station = data.player.dispatcherStats[stationName];
return <StationStat stationName={stationName} time={station.time} image={images.stations[stationName]} />
return <StationStat stationName={stationName} time={station.time} image={images.stations[stationName] ?? images.stations['N/A']} />
})}
</div>
<div className="flex flex-col pt-4">
@ -192,9 +192,9 @@ export const ProfileCard = ({ data, images }: { data: TProfileData, images: TIma
</p></a>
</div>
<div className="grid grid-cols-1 gap-7.5 sm:grid-cols-3 xl:grid-cols-4 pt-4">
{trainStats[trainPage - 1].sort(sortTrains).map(trainName => {
{trainStats[trainPage - 1].map(trainName => {
const train = data.player.trainStats[trainName];
return <TrainStat trainName={trainName} time={train.time} distance={train.distance} score={train.score} image={images.trains[trainName]} />
return <TrainStat trainName={trainName} time={train.time} distance={train.distance} score={train.score} image={images.trains[trainName] ?? images.trains['N/A']} />
})}
</div>
<div className="flex flex-col pt-4">

View File

@ -20,7 +20,7 @@
"footer": {
"license": "Licence:",
"powered": "Založeno na:",
"thanks": "Speciální poděkování: <bahu>BAHU.PRO hosting</bahu>, <simrailelite>Simrail ELITE discord</simrailelite>, komunita SimRail a moje přítelkyně",
"thanks": "Speciální poděkování: <bahu>BAHU.PRO hosting</bahu>, <simrailelite>Simrail ELITE discord</simrailelite>, komunita SimRail",
"author": "Pro komunitu SimRail vytvořeno s ❤️ uživatelem <anchor>{{author}}</anchor> "
}
},

View File

@ -20,7 +20,7 @@
"footer": {
"license": "License:",
"powered": "Based on:",
"thanks": "Special thanks to <bahu>BAHU.PRO hosting</bahu>, <simrailelite>Simrail ELITE discord</simrailelite>, Simrail community and my girlfriend",
"thanks": "Special thanks to <bahu>BAHU.PRO hosting</bahu>, <simrailelite>Simrail ELITE discord</simrailelite> and Simrail community",
"author": "Created by <anchor>{{author}}</anchor> with ❤️ for the Simrail community"
}
},

View File

@ -20,7 +20,7 @@
"footer": {
"license": "Licencja:",
"powered": "Oparte na:",
"thanks": "Specjalne podziękowania dla <bahu>serwerowni BAHU.PRO</bahu>, <simrailelite>discorda Simrail ELITE</simrailelite>, społeczności Simrail i mojej dziewczyny",
"thanks": "Specjalne podziękowania dla <bahu>serwerowni BAHU.PRO</bahu>, <simrailelite>discorda Simrail ELITE</simrailelite> i społeczności Simrail",
"author": "Stworzone przez <anchor>{{author}}</anchor> z ❤️ dla społeczności Simrail"
}
},