Skip to content

Commit 6f89e0c

Browse files
MiniDiggerkashike
authored andcommitted
feat: document development setup
1 parent 6ad1876 commit 6f89e0c

File tree

9 files changed

+208
-0
lines changed

9 files changed

+208
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Start Docker Dependencies" type="docker-deploy" factoryName="docker-compose.yml" server-name="Docker">
3+
<deployment type="docker-compose.yml">
4+
<settings>
5+
<option name="envFilePath" value="" />
6+
<option name="sourceFilePath" value="dev/docker-compose.yml" />
7+
</settings>
8+
</deployment>
9+
<method v="2" />
10+
</configuration>
11+
</component>

.run/Start Docker Fill.run.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Start Docker Fill" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
3+
<option name="ACTIVE_PROFILES" value="dev" />
4+
<option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" />
5+
<module name="fill.main" />
6+
<option name="SPRING_BOOT_MAIN_CLASS" value="io.papermc.fill.FillApplication" />
7+
<option name="WORKING_DIRECTORY" value="file://dev" />
8+
<method v="2">
9+
<option name="Make" enabled="true" />
10+
</method>
11+
</configuration>
12+
</component>

dev/application.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
app:
2+
api:
3+
legacy-download-key-mappings:
4+
folia:
5+
- from: "server:default"
6+
to: application
7+
paper:
8+
- from: "server:default"
9+
to: application
10+
- from: "server:mojang"
11+
to: mojang-mappings
12+
travertine:
13+
- from: "server:default"
14+
to: application
15+
velocity:
16+
- from: "server:default"
17+
to: application
18+
waterfall:
19+
- from: "server:default"
20+
to: application
21+
metadata:
22+
title: PaperMC Fill Local
23+
version: 3.0.0
24+
storage:
25+
s3:
26+
endpoint: http://localhost:9100
27+
region: auto
28+
access-key-id: fill_root
29+
secret-access-key: fill_pass
30+
bucket: fill
31+
use-path-style-access: true
32+
url: http://localhost:9100/fill/
33+
path: v1/objects/${download_sha256}/${download_filename}
34+
security:
35+
jwt:
36+
secret: "6LfcQFZ+nH3pQvD1zjD1x6y9K6E2QvP3r5bN5r6FqK2mZc7B8eNwLxQw9Y2uV1tS"
37+
users:
38+
- username: admin
39+
password: admin
40+
roles:
41+
- API_PUBLISH
42+
- API_MANAGE

dev/docker-compose.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: "fill"
2+
services:
3+
minio:
4+
image: "bitnamilegacy/minio:latest"
5+
ports:
6+
- "9100:9000"
7+
- "9101:9001"
8+
environment:
9+
- MINIO_ROOT_USER=fill_root
10+
- MINIO_ROOT_PASSWORD=fill_pass
11+
- MINIO_DEFAULT_BUCKETS=fill
12+
volumes:
13+
- minio_data:/data
14+
mongo:
15+
image: "mongo:latest"
16+
ports:
17+
- "27017:27017"
18+
volumes:
19+
- mongo_data:/data/db
20+
volumes:
21+
minio_data:
22+
mongo_data:

dev/graphql.config.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
schema: http://localhost:8080/graphql
2+
documents: '**/*.graphql'

dev/mongo.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use fill
2+
3+
db.projects.insertOne({
4+
createdAt: ISODate(),
5+
updatedAt: ISODate(),
6+
name: "test-project",
7+
displayName: "Test Project"
8+
})
9+
10+
db.families.insertOne({
11+
project: db.projects.findOne({ name: "test-project" })._id,
12+
name: "1.0",
13+
createdAt: ISODate(), updatedAt: ISODate(),
14+
java: {
15+
version: {
16+
minimum: 17
17+
},
18+
flags: {
19+
recommended: [
20+
"-Xmx2G",
21+
"-XX:+UseG1GC"
22+
]
23+
}
24+
}
25+
})
26+
27+
db.versions.insertOne({
28+
project: db.projects.findOne({ name: "test-project" })._id,
29+
family: db.families.findOne({ name: "1.0" })._id,
30+
name: "1.0.0",
31+
createdAt: ISODate(),
32+
updatedAt: ISODate(),
33+
support: {
34+
status: "SUPPORTED"
35+
}
36+
})

dev/readme.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# development tools
2+
3+
## Getting Started
4+
For ease of use, a docker-compose file is provided to set up the development environment.
5+
You can run the `Start Dependencies` Configuration in IntelliJ to start mongo and minio.
6+
To start Fill in the development profile, run the `Start Fill` Configuration.
7+
8+
## Populate the Database
9+
10+
Copy the code from the `mongo.js` file into the MongoDB shell to populate the database with example data.
11+
12+
## URLs
13+
* Minio: [http://localhost:9001](http://localhost:9001) (`fill_root:fill_pass`)
14+
* MongoDB: `mongodb://localhost:27017/fill`
15+
* Fill: [http://localhost:8080](http://localhost:8080)
16+
* GraphiQL: [http://localhost:8080/graphiql](http://localhost:8080/graphiql)
17+
18+
## Scripts
19+
20+
* Example HTTP requests: [test.http](test.http)
21+
* Example GraphQL query: [test.graphql](test.graphql)

dev/test.http

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
### upload a payload
2+
POST localhost:8080/upload
3+
Content-Type: multipart/form-data; boundary=Boundary
4+
Authorization: Basic admin admin
5+
6+
--Boundary
7+
Content-Disposition: form-data; name="request"
8+
Content-Type: application/json
9+
10+
{
11+
"id": "6e9e34e8-b8ec-4c11-9b23-16dd951bb480"
12+
}
13+
--Boundary
14+
Content-Disposition: form-data; name="file"; filename="test.txt"
15+
16+
< test.txt
17+
18+
### publish a build
19+
POST localhost:8080/publish
20+
Content-Type: application/json
21+
Authorization: Basic admin admin
22+
23+
{
24+
"id": "6e9e34e8-b8ec-4c11-9b23-16dd951bb480",
25+
"project": "test-project",
26+
"family": "1.0",
27+
"version": "1.0.0",
28+
"build": "2",
29+
"time": "{{ $isoTimestamp }}",
30+
"channel": "STABLE",
31+
"commits": [{
32+
"sha": "",
33+
"time": "{{ $isoTimestamp }}",
34+
"message": "Initial commit"
35+
}],
36+
"downloads": {
37+
"server:default": {
38+
"name": "test.txt",
39+
"checksums": {
40+
"sha256": "66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18"
41+
},
42+
"size": 1
43+
}
44+
}
45+
}
46+
47+
48+
### get projects
49+
GET localhost:8080/v3/projects
50+
51+
### get versions
52+
GET localhost:8080/v3/projects/test-project/versions
53+
54+
### get builds
55+
GET localhost:8080/v3/projects/test-project/versions/1.0.0/builds
56+
57+
### get build
58+
GET localhost:8080/v3/projects/test-project/versions/1.0.0/builds/1
59+
60+
### get latest build
61+
GET localhost:8080/v3/projects/test-project/versions/1.0.0/builds/latest

dev/test.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello

0 commit comments

Comments
 (0)