+5
-5
.gitignore
+5
-5
.gitignore
···
71
71
# Track our custom lexicons
72
72
!lexicons/fm.teal.alpha/
73
73
!lexicons/fm.teal.alpha/**/*.json
74
-
# Track the symlinks to atproto lexicons
75
-
!lexicons/app
76
-
!lexicons/chat
77
-
!lexicons/com
78
-
!lexicons/tools
74
+
# Ignore symlinks to atproto lexicons (created during setup)
75
+
lexicons/app
76
+
lexicons/chat
77
+
lexicons/com
78
+
lexicons/tools
79
79
# But ignore any generated files within lexicons
80
80
lexicons/**/*.js
81
81
lexicons/**/*.d.ts
+13
README.md
+13
README.md
···
29
29
# Install all dependencies (Node.js and Rust)
30
30
pnpm install
31
31
32
+
# clone submodules
33
+
git submodule update --init --recursive
34
+
32
35
# Set up environment configuration
33
36
cp apps/aqua/.env.example apps/aqua/.env
34
37
···
153
156
154
157
# Show lexicon change impact
155
158
pnpm lex:diff
159
+
```
160
+
161
+
# Updating Vendored Lexicons
162
+
To update vendored lexicons (anything that's not under fm.teal), follow these steps:
163
+
```bash
164
+
cd vendor/atproto
165
+
git pull origin main
166
+
cd ../..
167
+
git add vendor/atproto
168
+
git commit -m "Update atproto lexicons to latest"
156
169
```
157
170
158
171
See [`tools/lexicon-cli/README.md`](tools/lexicon-cli/README.md) for detailed documentation.
+53
-4
lexicons/README.md
+53
-4
lexicons/README.md
···
17
17
18
18
### Initial Setup
19
19
20
-
If you're cloning this repository for the first time, you'll need to initialize the submodules:
20
+
If you're cloning this repository for the first time, you'll need to initialize the submodules and create the symbolic links:
21
21
22
22
```bash
23
+
# Initialize submodules
23
24
git submodule update --init --recursive
25
+
26
+
# Create symbolic links to atproto lexicons
27
+
cd lexicons
28
+
ln -s ../vendor/atproto/lexicons/app app
29
+
ln -s ../vendor/atproto/lexicons/chat chat
30
+
ln -s ../vendor/atproto/lexicons/com com
31
+
ln -s ../vendor/atproto/lexicons/tools tools
32
+
cd ..
33
+
```
34
+
35
+
Or use the provided setup script:
36
+
37
+
```bash
38
+
./scripts/setup-lexicons.sh
24
39
```
25
40
26
41
### Updating ATProto Lexicons
···
35
50
git commit -m "Update atproto lexicons to latest"
36
51
```
37
52
53
+
### Setup Script
54
+
55
+
A convenience script is available to handle the initial setup:
56
+
57
+
```bash
58
+
#!/bin/bash
59
+
# scripts/setup-lexicons.sh
60
+
61
+
echo "Setting up lexicons..."
62
+
63
+
# Initialize submodules
64
+
git submodule update --init --recursive
65
+
66
+
# Create symbolic links if they don't exist
67
+
cd lexicons
68
+
if [ ! -L app ]; then
69
+
ln -s ../vendor/atproto/lexicons/app app
70
+
echo "Created symlink: lexicons/app"
71
+
fi
72
+
if [ ! -L chat ]; then
73
+
ln -s ../vendor/atproto/lexicons/chat chat
74
+
echo "Created symlink: lexicons/chat"
75
+
fi
76
+
if [ ! -L com ]; then
77
+
ln -s ../vendor/atproto/lexicons/com com
78
+
echo "Created symlink: lexicons/com"
79
+
fi
80
+
if [ ! -L tools ]; then
81
+
ln -s ../vendor/atproto/lexicons/tools tools
82
+
echo "Created symlink: lexicons/tools"
83
+
fi
84
+
cd ..
85
+
86
+
echo "Lexicons setup complete!"
87
+
```
88
+
38
89
### Adding Custom Lexicons
39
90
40
91
Custom lexicons should be added to the `fm.teal.alpha/` directory following the ATProto lexicon schema format. These files are tracked directly in our repository and not affected by submodule updates.
41
92
42
-
## Generated Files
43
-
44
-
This directory may contain generated files (`.js`, `.d.ts`, etc.) that are created by lexicon compilation tools. These are ignored by git as specified in the `.gitignore` file.
93
+
**Note**: The symbolic links (`app`, `chat`, `com`, `tools`) are not tracked in git and will be created during setup. They are ignored in `.gitignore` to avoid conflicts.
-1
lexicons/app
-1
lexicons/app
···
1
-
../vendor/atproto/lexicons/app
-1
lexicons/chat
-1
lexicons/chat
···
1
-
../vendor/atproto/lexicons/chat
-1
lexicons/com
-1
lexicons/com
···
1
-
../vendor/atproto/lexicons/com
-1
lexicons/tools
-1
lexicons/tools
···
1
-
../vendor/atproto/lexicons/tools
+66
scripts/setup-lexicons.sh
+66
scripts/setup-lexicons.sh
···
1
+
#!/bin/bash
2
+
# scripts/setup-lexicons.sh
3
+
# Setup script for ATProto lexicons submodule and symbolic links
4
+
5
+
set -e
6
+
7
+
echo "Setting up lexicons..."
8
+
9
+
# Check if we're in the right directory
10
+
if [ ! -f "package.json" ] || [ ! -d "lexicons" ]; then
11
+
echo "Error: This script must be run from the project root directory"
12
+
exit 1
13
+
fi
14
+
15
+
# Initialize submodules
16
+
echo "Initializing submodules..."
17
+
git submodule update --init --recursive
18
+
19
+
# Check if vendor/atproto exists
20
+
if [ ! -d "vendor/atproto" ]; then
21
+
echo "Error: vendor/atproto submodule not found"
22
+
exit 1
23
+
fi
24
+
25
+
# Create symbolic links if they don't exist
26
+
echo "Creating symbolic links..."
27
+
cd lexicons
28
+
29
+
if [ ! -L app ]; then
30
+
ln -s ../vendor/atproto/lexicons/app app
31
+
echo "Created symlink: lexicons/app"
32
+
else
33
+
echo "Symlink already exists: lexicons/app"
34
+
fi
35
+
36
+
if [ ! -L chat ]; then
37
+
ln -s ../vendor/atproto/lexicons/chat chat
38
+
echo "Created symlink: lexicons/chat"
39
+
else
40
+
echo "Symlink already exists: lexicons/chat"
41
+
fi
42
+
43
+
if [ ! -L com ]; then
44
+
ln -s ../vendor/atproto/lexicons/com com
45
+
echo "Created symlink: lexicons/com"
46
+
else
47
+
echo "Symlink already exists: lexicons/com"
48
+
fi
49
+
50
+
if [ ! -L tools ]; then
51
+
ln -s ../vendor/atproto/lexicons/tools tools
52
+
echo "Created symlink: lexicons/tools"
53
+
else
54
+
echo "Symlink already exists: lexicons/tools"
55
+
fi
56
+
57
+
cd ..
58
+
59
+
echo "Lexicons setup complete!"
60
+
echo ""
61
+
echo "You should now have access to:"
62
+
echo " - lexicons/app -> ATProto app lexicons"
63
+
echo " - lexicons/chat -> ATProto chat lexicons"
64
+
echo " - lexicons/com -> ATProto protocol lexicons"
65
+
echo " - lexicons/tools -> ATProto tools lexicons"
66
+
echo " - lexicons/fm.teal.alpha -> Custom Teal lexicons"