cobolx 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/devcontainer.json +26 -0
- package/.dockerignore +4 -0
- package/.github/workflows/ci.yml +157 -0
- package/Cargo.lock +2245 -0
- package/Cargo.toml +39 -0
- package/bin/check-update.js +44 -0
- package/bin/cobolx.js +81 -0
- package/docker-compose.yml +33 -0
- package/dockerfile +18 -0
- package/dockerfile.test +39 -0
- package/package.json +27 -0
- package/scripts/install.js +145 -0
- package/src/agent/client.rs +1345 -0
- package/src/agent.rs +1 -0
- package/src/cobol/copybook.rs +71 -0
- package/src/cobol/data_parser.rs +290 -0
- package/src/cobol/indexer.rs +256 -0
- package/src/cobol/layout.rs +278 -0
- package/src/cobol/lexer.rs +135 -0
- package/src/cobol/model.rs +196 -0
- package/src/cobol/scanner.rs +72 -0
- package/src/cobol/source_parser.rs +91 -0
- package/src/cobol.rs +8 -0
- package/src/config/config.rs +64 -0
- package/src/config.rs +3 -0
- package/src/lib.rs +6 -0
- package/src/main.rs +20 -0
- package/src/memory/files.rs +155 -0
- package/src/memory/store.rs +406 -0
- package/src/memory.rs +5 -0
- package/src/ui/draw.rs +519 -0
- package/src/ui/tui.rs +812 -0
- package/src/ui.rs +2 -0
- package/tests/indexer_tests.rs +192 -0
- package/tests/memory_store_tests.rs +21 -0
- package/tests/project_files_tests.rs +72 -0
- package/tests/sandbox_tests.rs +178 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cobolX Rust",
|
|
3
|
+
"dockerComposeFile": [
|
|
4
|
+
"../docker-compose.yml"
|
|
5
|
+
],
|
|
6
|
+
"service": "dev",
|
|
7
|
+
"runServices": [
|
|
8
|
+
"dev"
|
|
9
|
+
],
|
|
10
|
+
"workspaceFolder": "/workspaces/cobolX",
|
|
11
|
+
"remoteUser": "vscode",
|
|
12
|
+
"shutdownAction": "stopCompose",
|
|
13
|
+
"postCreateCommand": "cargo fetch",
|
|
14
|
+
"customizations": {
|
|
15
|
+
"vscode": {
|
|
16
|
+
"extensions": [
|
|
17
|
+
"rust-lang.rust-analyzer",
|
|
18
|
+
"vadimcn.vscode-lldb",
|
|
19
|
+
"tamasfe.even-better-toml"
|
|
20
|
+
],
|
|
21
|
+
"settings": {
|
|
22
|
+
"rust-analyzer.cargo.targetDir": "/workspaces/cobolX/target"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
package/.dockerignore
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
name: Rust CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main", "master", "release/**" ]
|
|
6
|
+
tags: [ "v*" ]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [ "main", "master", "release/**" ]
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
CARGO_TERM_COLOR: always
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
fmt:
|
|
15
|
+
name: Rustfmt Check
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout Source Code
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Install Stable Toolchain
|
|
22
|
+
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
23
|
+
with:
|
|
24
|
+
components: rustfmt
|
|
25
|
+
|
|
26
|
+
- name: Enforce Code Formatting
|
|
27
|
+
run: cargo fmt --all --check
|
|
28
|
+
|
|
29
|
+
clippy:
|
|
30
|
+
name: Clippy Lints Check
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- name: Checkout Source Code
|
|
34
|
+
uses: actions/checkout@v4
|
|
35
|
+
|
|
36
|
+
- name: Install Stable Toolchain
|
|
37
|
+
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
38
|
+
with:
|
|
39
|
+
components: clippy
|
|
40
|
+
|
|
41
|
+
- name: Enforce Clippy warnings
|
|
42
|
+
run: cargo clippy --all-targets --all-features -- -D warnings
|
|
43
|
+
|
|
44
|
+
test:
|
|
45
|
+
name: Run Tests Suite
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
steps:
|
|
48
|
+
- name: Checkout Source Code
|
|
49
|
+
uses: actions/checkout@v4
|
|
50
|
+
|
|
51
|
+
- name: Install Stable Toolchain
|
|
52
|
+
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
53
|
+
|
|
54
|
+
- name: Run cargo test
|
|
55
|
+
run: cargo test --all-targets --all-features
|
|
56
|
+
|
|
57
|
+
audit:
|
|
58
|
+
name: Security Vulnerability Scan
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
steps:
|
|
61
|
+
- name: Checkout Source Code
|
|
62
|
+
uses: actions/checkout@v4
|
|
63
|
+
|
|
64
|
+
- name: Scan Vulnerable Dependencies
|
|
65
|
+
uses: actions-rust-lang/audit@v1
|
|
66
|
+
|
|
67
|
+
create-release:
|
|
68
|
+
name: Create GitHub Release
|
|
69
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
needs: [fmt, clippy, test, audit]
|
|
72
|
+
permissions:
|
|
73
|
+
contents: write
|
|
74
|
+
steps:
|
|
75
|
+
- name: Checkout Source Code
|
|
76
|
+
uses: actions/checkout@v4
|
|
77
|
+
|
|
78
|
+
- name: Create Release
|
|
79
|
+
uses: softprops/action-gh-release@v2
|
|
80
|
+
with:
|
|
81
|
+
draft: false
|
|
82
|
+
prerelease: false
|
|
83
|
+
generate_release_notes: true
|
|
84
|
+
|
|
85
|
+
build-binaries:
|
|
86
|
+
name: Build & Release Binaries
|
|
87
|
+
runs-on: ${{ matrix.os }}
|
|
88
|
+
needs: [fmt, clippy, test, audit, create-release]
|
|
89
|
+
if: |
|
|
90
|
+
always() &&
|
|
91
|
+
needs.fmt.result == 'success' &&
|
|
92
|
+
needs.clippy.result == 'success' &&
|
|
93
|
+
needs.test.result == 'success' &&
|
|
94
|
+
needs.audit.result == 'success' &&
|
|
95
|
+
(needs.create-release.result == 'success' || needs.create-release.result == 'skipped') &&
|
|
96
|
+
(startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release/') || startsWith(github.head_ref, 'release/'))
|
|
97
|
+
permissions:
|
|
98
|
+
contents: write
|
|
99
|
+
strategy:
|
|
100
|
+
fail-fast: false
|
|
101
|
+
matrix:
|
|
102
|
+
include:
|
|
103
|
+
- target: x86_64-unknown-linux-gnu
|
|
104
|
+
os: ubuntu-latest
|
|
105
|
+
- target: aarch64-unknown-linux-gnu
|
|
106
|
+
os: ubuntu-latest
|
|
107
|
+
use-cross: true
|
|
108
|
+
- target: x86_64-apple-darwin
|
|
109
|
+
os: macos-latest
|
|
110
|
+
- target: aarch64-apple-darwin
|
|
111
|
+
os: macos-latest
|
|
112
|
+
- target: x86_64-pc-windows-msvc
|
|
113
|
+
os: windows-latest
|
|
114
|
+
steps:
|
|
115
|
+
- name: Checkout Source Code
|
|
116
|
+
uses: actions/checkout@v4
|
|
117
|
+
|
|
118
|
+
- name: Install Stable Toolchain
|
|
119
|
+
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
120
|
+
with:
|
|
121
|
+
target: ${{ matrix.target }}
|
|
122
|
+
|
|
123
|
+
- name: Build and Package Binary
|
|
124
|
+
uses: taiki-e/upload-rust-binary-action@v1
|
|
125
|
+
with:
|
|
126
|
+
bin: rdo
|
|
127
|
+
target: ${{ matrix.target }}
|
|
128
|
+
archive: $bin-$target
|
|
129
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
130
|
+
use-cross: ${{ matrix.use-cross || false }}
|
|
131
|
+
dry-run: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
publish-npm:
|
|
136
|
+
name: Publish to npm
|
|
137
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
138
|
+
runs-on: ubuntu-latest
|
|
139
|
+
needs: [build-binaries]
|
|
140
|
+
permissions:
|
|
141
|
+
id-token: write
|
|
142
|
+
contents: read
|
|
143
|
+
steps:
|
|
144
|
+
- name: Checkout Source Code
|
|
145
|
+
uses: actions/checkout@v4
|
|
146
|
+
|
|
147
|
+
- name: Set up Node.js
|
|
148
|
+
uses: actions/setup-node@v4
|
|
149
|
+
with:
|
|
150
|
+
node-version: '22'
|
|
151
|
+
registry-url: 'https://registry.npmjs.org'
|
|
152
|
+
|
|
153
|
+
- name: Upgrade npm CLI
|
|
154
|
+
run: npm install -g npm@latest
|
|
155
|
+
|
|
156
|
+
- name: Publish to npm
|
|
157
|
+
run: npm publish --access public --provenance
|