22// README at: https://github.com/devcontainers/templates/tree/main/src/rust
33{
44 "name" : " Fortress Rollback - Full Verification Environment" ,
5-
65 // ===== BUILD OPTIONS (choose one) =====
76 //
87 // Option A: Build locally from Dockerfile (first build ~3-5 min, rebuilds use cache)
1514 // Local Dockerfile builds remain the default until the registry path is validated across environments.
1615 // Uncomment the line below and comment out the "build" block above to use it.
1716 // "image": "ghcr.io/wallstop/fortress-rollback/devcontainer:latest",
18-
1917 // Additional features (on top of what's in Dockerfile)
2018 "features" : {
2119 "ghcr.io/devcontainers/features/powershell:1" : {}
2826 }
2927 ],
3028 // Post-create setup: only workspace-specific tasks (tools are pre-installed in image)
31- "postCreateCommand": "bash -c '\n set -e\n echo \"=== Setting up Fortress Rollback Development Environment ===\"\n \n # Ensure TLA+ tools are in the workspace\n mkdir -p .tla-tools\n if [ -f /opt/tla/tla2tools.jar ]; then\n cp /opt/tla/tla2tools.jar .tla-tools/\n elif [ ! -f .tla-tools/tla2tools.jar ]; then\n echo \"Downloading TLA+ tools...\"\n curl --proto \"=https\" --tlsv1.2 -fsSL --retry 5 --retry-delay 2 --retry-all-errors --max-time 120 https://github.com/tlaplus/tlaplus/releases/download/v1.8.0/tla2tools.jar -o .tla-tools/tla2tools.jar\n fi\n \n # Sync Vale styles (prose linter)\n if command -v vale >/dev/null 2>&1 && [ -f .vale.ini ]; then\n echo \"Syncing Vale packages...\"\n vale sync || echo \"Vale sync failed, run vale sync manually\"\n fi\n \n # Build project to warm dependency cache\n echo \"Warming dependency cache...\"\n if ! cargo build; then\n echo \"WARNING: Initial cargo build failed. Run cargo build manually to see errors.\"\n fi\n \n echo \"=== Development environment ready! ===\"\n echo \"Run ./scripts/check-tools.sh to verify all tools are installed.\"\n'",
29+ "postCreateCommand": "bash -c '\n set -e\n echo \"=== Setting up Fortress Rollback Development Environment ===\"\n \n # Ensure TLA+ tools are in the workspace\n mkdir -p .tla-tools\n if [ -f /opt/tla/tla2tools.jar ]; then\n cp /opt/tla/tla2tools.jar .tla-tools/\n elif [ ! -f .tla-tools/tla2tools.jar ]; then\n echo \"Downloading TLA+ tools...\"\n curl --proto \"=https\" --tlsv1.2 -fsSL --retry 5 --retry-delay 2 --retry-all-errors --max-time 120 https://github.com/tlaplus/tlaplus/releases/download/v1.8.0/tla2tools.jar -o .tla-tools/tla2tools.jar\n fi\n \n # Sync Vale styles (prose linter)\n if command -v vale >/dev/null 2>&1 && [ -f .vale.ini ]; then\n echo \"Syncing Vale packages...\"\n vale sync || echo \"Vale sync failed, run vale sync manually\"\n fi\n \n # Build project to warm dependency cache\n echo \"Warming dependency cache...\"\n if ! cargo build; then\n echo \"WARNING: Initial cargo build failed. Run cargo build manually to see errors.\"\n fi\n \n echo \"=== Development environment ready! ===\"\n echo \"Run ./scripts/ci/check-tools.sh to verify all tools are installed.\"\n'",
3230 // Environment variables for tools
3331 "containerEnv" : {
3432 "TLA_TOOLS_JAR" : " ${containerWorkspaceFolder}/.tla-tools/tla2tools.jar" ,
5351 " ms-python.vscode-pylance" ,
5452 " ryanluker.vscode-coverage-gutters" ,
5553 " streetsidesoftware.code-spell-checker" ,
54+ " PKief.material-icon-theme" ,
55+ " GitHub.github-vscode-theme" ,
56+ " redhat.vscode-yaml" ,
57+ " markdownlint.markdownlint" ,
58+ " eamodio.gitlens" ,
59+ " serayuzgur.crates" ,
60+ " EditorConfig.EditorConfig" ,
61+ " yzhang.markdown-all-in-one" ,
62+ " ms-vscode.hexeditor" ,
63+ " dracula-theme.theme-dracula" ,
64+ " enkia.tokyo-night" ,
65+ " catppuccin.catppuccin-vsc" ,
66+ " zhuangtongfa.material-theme" ,
67+ " akamud.vscode-theme-onedark" ,
68+ " sdras.night-owl" ,
69+ " teabyii.ayu" ,
70+ " arcticicestudio.nord-visual-studio-code" ,
71+ " jdinhlife.gruvbox" ,
72+ " mvllow.rose-pine" ,
73+ " whizkydee.material-palenight-theme" ,
74+ " alexandernanberg.horizon-theme-vscode" ,
75+ " brittanychiang.halcyon-vscode" ,
76+ " robbowen.synthwave-vscode" ,
77+ " pmndrs.pmndrs" ,
78+ " qufiwefefwoyn.kanagawa" ,
79+ " azemoh.one-monokai" ,
5680 " GitHub.copilot" ,
5781 " GitHub.copilot-chat" ,
5882 " anthropic.claude-code"
5983 ],
6084 "settings" : {
85+ "workbench.iconTheme" : " material-icon-theme" ,
86+ "workbench.colorTheme" : " GitHub Dark Default" ,
87+ "workbench.preferredDarkColorTheme" : " GitHub Dark Default" ,
88+ "workbench.preferredLightColorTheme" : " GitHub Light Default" ,
89+ "explorer.excludeGitIgnore" : false ,
90+ "explorer.compactFolders" : false ,
91+ "explorer.confirmDelete" : false ,
92+ "files.exclude" : {
93+ "**/.git" : true ,
94+ "**/.claude" : true ,
95+ "**/.ruff_cache" : true ,
96+ "**/.vale" : true ,
97+ "**/.vscode" : true ,
98+ "**/target" : true ,
99+ "**/node_modules" : true ,
100+ "**/__pycache__" : true ,
101+ "**/specs/tla/states*" : true ,
102+ "**/mutants.out" : true ,
103+ "**/.tmp" : true ,
104+ "**/.idea" : true ,
105+ "**/site" : true ,
106+ "**/states" : true ,
107+ "loom-tests/target" : true ,
108+ "progress" : true ,
109+ "fuzz/corpus" : true ,
110+ "fuzz/artifacts" : true ,
111+ "fuzz/coverage" : true
112+ },
113+ "files.watcherExclude" : {
114+ "**/.git/objects/**" : true ,
115+ "**/target/**" : true ,
116+ "**/node_modules/**" : true
117+ },
118+ "search.exclude" : {
119+ "**/.git" : true ,
120+ "**/target" : true ,
121+ "**/node_modules" : true ,
122+ "**/__pycache__" : true ,
123+ "**/mutants.out" : true
124+ },
125+ "git.autofetch" : true ,
126+ "scm.diffDecorations" : " all" ,
127+ "editor.bracketPairColorization.enabled" : true ,
128+ "editor.guides.bracketPairs" : true ,
129+ "editor.inlineSuggest.enabled" : true ,
130+ "editor.smoothScrolling" : true ,
131+ "editor.stickyScroll.enabled" : true ,
132+ "editor.minimap.enabled" : false ,
133+ "editor.wordWrap" : " on" ,
134+ "terminal.integrated.defaultProfile.linux" : " bash" ,
135+ "yaml.schemas" : {
136+ "https://json.schemastore.org/github-workflow.json" : " .github/workflows/*.yml"
137+ },
138+ "markdownlint.run" : " onSave" ,
61139 "rust-analyzer.cargo.features" : " all" ,
62140 "rust-analyzer.check.command" : " clippy" ,
63141 "rust-analyzer.check.allTargets" : true ,
68146 }
69147 }
70148 }
71- }
149+ }
0 commit comments