|
2 | 2 | // README at: https://github.com/devcontainers/templates/tree/main/src/rust |
3 | 3 | { |
4 | 4 | "name": "Fortress Rollback - Full Verification Environment", |
5 | | - |
6 | 5 | // ===== BUILD OPTIONS (choose one) ===== |
7 | 6 | // |
8 | 7 | // Option A: Build locally from Dockerfile (first build ~3-5 min, rebuilds use cache) |
|
15 | 14 | // Local Dockerfile builds remain the default until the registry path is validated across environments. |
16 | 15 | // Uncomment the line below and comment out the "build" block above to use it. |
17 | 16 | // "image": "ghcr.io/wallstop/fortress-rollback/devcontainer:latest", |
18 | | - |
19 | 17 | // Additional features (on top of what's in Dockerfile) |
20 | 18 | "features": { |
21 | 19 | "ghcr.io/devcontainers/features/powershell:1": {} |
|
28 | 26 | } |
29 | 27 | ], |
30 | 28 | // 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'", |
32 | 30 | // Environment variables for tools |
33 | 31 | "containerEnv": { |
34 | 32 | "TLA_TOOLS_JAR": "${containerWorkspaceFolder}/.tla-tools/tla2tools.jar", |
|
53 | 51 | "ms-python.vscode-pylance", |
54 | 52 | "ryanluker.vscode-coverage-gutters", |
55 | 53 | "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", |
56 | 80 | "GitHub.copilot", |
57 | 81 | "GitHub.copilot-chat", |
58 | 82 | "anthropic.claude-code" |
59 | 83 | ], |
60 | 84 | "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", |
61 | 139 | "rust-analyzer.cargo.features": "all", |
62 | 140 | "rust-analyzer.check.command": "clippy", |
63 | 141 | "rust-analyzer.check.allTargets": true, |
|
0 commit comments