arc-cloud 0.1.0__tar.gz
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.
- arc_cloud-0.1.0/.github/workflows/release.yml +90 -0
- arc_cloud-0.1.0/.github/workflows/tests.yml +43 -0
- arc_cloud-0.1.0/.gitignore +33 -0
- arc_cloud-0.1.0/.python-version +1 -0
- arc_cloud-0.1.0/CHANGELOG.md +22 -0
- arc_cloud-0.1.0/LICENSE +21 -0
- arc_cloud-0.1.0/PKG-INFO +303 -0
- arc_cloud-0.1.0/README.md +268 -0
- arc_cloud-0.1.0/arc_cloud/__init__.py +4 -0
- arc_cloud-0.1.0/arc_cloud/blueprint/__init__.py +35 -0
- arc_cloud-0.1.0/arc_cloud/blueprint/generator.py +89 -0
- arc_cloud-0.1.0/arc_cloud/blueprint/models.py +108 -0
- arc_cloud-0.1.0/arc_cloud/commands/__init__.py +5 -0
- arc_cloud-0.1.0/arc_cloud/commands/scan.py +177 -0
- arc_cloud-0.1.0/arc_cloud/main.py +48 -0
- arc_cloud-0.1.0/arc_cloud/scanner/__init__.py +41 -0
- arc_cloud-0.1.0/arc_cloud/scanner/config_detector.py +54 -0
- arc_cloud-0.1.0/arc_cloud/scanner/dependencies.py +246 -0
- arc_cloud-0.1.0/arc_cloud/scanner/engine.py +252 -0
- arc_cloud-0.1.0/arc_cloud/scanner/frameworks.py +341 -0
- arc_cloud-0.1.0/arc_cloud/scanner/languages.py +82 -0
- arc_cloud-0.1.0/arc_cloud/scanner/platforms.py +64 -0
- arc_cloud-0.1.0/arc_cloud/scanner/structure.py +54 -0
- arc_cloud-0.1.0/arc_cloud/utils/__init__.py +16 -0
- arc_cloud-0.1.0/arc_cloud/utils/filesystem.py +143 -0
- arc_cloud-0.1.0/arc_cloud/utils/security.py +121 -0
- arc_cloud-0.1.0/pyproject.toml +68 -0
- arc_cloud-0.1.0/tests/fixtures/django_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/django_project/manage.py +9 -0
- arc_cloud-0.1.0/tests/fixtures/django_project/myproject/settings.py +7 -0
- arc_cloud-0.1.0/tests/fixtures/django_project/myproject/urls.py +3 -0
- arc_cloud-0.1.0/tests/fixtures/django_project/requirements.txt +3 -0
- arc_cloud-0.1.0/tests/fixtures/dotnet_project/Program.cs +6 -0
- arc_cloud-0.1.0/tests/fixtures/dotnet_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/dotnet_project/SampleApp.csproj +14 -0
- arc_cloud-0.1.0/tests/fixtures/dotnet_project/appsettings.json +8 -0
- arc_cloud-0.1.0/tests/fixtures/fastapi_project/Dockerfile +6 -0
- arc_cloud-0.1.0/tests/fixtures/fastapi_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/fastapi_project/app/api/endpoints.py +7 -0
- arc_cloud-0.1.0/tests/fixtures/fastapi_project/app/main.py +7 -0
- arc_cloud-0.1.0/tests/fixtures/fastapi_project/requirements.txt +5 -0
- arc_cloud-0.1.0/tests/fixtures/fastapi_project/tests/test_main.py +8 -0
- arc_cloud-0.1.0/tests/fixtures/flutter_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/flutter_project/android/AndroidManifest.xml +2 -0
- arc_cloud-0.1.0/tests/fixtures/flutter_project/ios/Runner.xcodeproj +2 -0
- arc_cloud-0.1.0/tests/fixtures/flutter_project/lib/main.dart +3 -0
- arc_cloud-0.1.0/tests/fixtures/flutter_project/pubspec.yaml +19 -0
- arc_cloud-0.1.0/tests/fixtures/flutter_project/test/widget_test.dart +1 -0
- arc_cloud-0.1.0/tests/fixtures/nextjs_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/nextjs_project/app/layout.tsx +7 -0
- arc_cloud-0.1.0/tests/fixtures/nextjs_project/app/page.tsx +3 -0
- arc_cloud-0.1.0/tests/fixtures/nextjs_project/next.config.js +6 -0
- arc_cloud-0.1.0/tests/fixtures/nextjs_project/package.json +15 -0
- arc_cloud-0.1.0/tests/fixtures/node_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/node_project/package.json +14 -0
- arc_cloud-0.1.0/tests/fixtures/node_project/src/routes/api.js +6 -0
- arc_cloud-0.1.0/tests/fixtures/node_project/src/server.js +9 -0
- arc_cloud-0.1.0/tests/fixtures/react_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/react_project/package.json +14 -0
- arc_cloud-0.1.0/tests/fixtures/react_project/public/index.html +10 -0
- arc_cloud-0.1.0/tests/fixtures/react_project/src/App.tsx +5 -0
- arc_cloud-0.1.0/tests/fixtures/react_project/src/index.tsx +5 -0
- arc_cloud-0.1.0/tests/fixtures/react_project/tsconfig.json +9 -0
- arc_cloud-0.1.0/tests/fixtures/spring_project/README.md +2 -0
- arc_cloud-0.1.0/tests/fixtures/spring_project/pom.xml +23 -0
- arc_cloud-0.1.0/tests/fixtures/spring_project/src/main/java/com/example/demo/DemoApplication.java +7 -0
- arc_cloud-0.1.0/tests/fixtures/spring_project/src/main/resources/application.properties +2 -0
- arc_cloud-0.1.0/tests/test_blueprint.py +66 -0
- arc_cloud-0.1.0/tests/test_dependencies.py +78 -0
- arc_cloud-0.1.0/tests/test_frameworks.py +85 -0
- arc_cloud-0.1.0/tests/test_languages.py +77 -0
- arc_cloud-0.1.0/tests/test_platforms.py +34 -0
- arc_cloud-0.1.0/tests/test_scanner.py +190 -0
- arc_cloud-0.1.0/tests/test_structure.py +42 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: Release to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v[0-9]+.[0-9]+.[0-9]+*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
target:
|
|
10
|
+
description: "Release destination"
|
|
11
|
+
required: true
|
|
12
|
+
default: "testpypi"
|
|
13
|
+
type: choice
|
|
14
|
+
options:
|
|
15
|
+
- testpypi
|
|
16
|
+
- pypi
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
build:
|
|
20
|
+
name: Build distribution
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python 3.11
|
|
26
|
+
uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: "3.11"
|
|
29
|
+
|
|
30
|
+
- name: Install build tools
|
|
31
|
+
run: |
|
|
32
|
+
python -m pip install --upgrade pip
|
|
33
|
+
pip install build twine
|
|
34
|
+
|
|
35
|
+
- name: Build sdist and wheel
|
|
36
|
+
run: |
|
|
37
|
+
python -m build
|
|
38
|
+
|
|
39
|
+
- name: Check package integrity
|
|
40
|
+
run: |
|
|
41
|
+
python -m twine check dist/*
|
|
42
|
+
|
|
43
|
+
- name: Upload dist artifact
|
|
44
|
+
uses: actions/upload-artifact@v4
|
|
45
|
+
with:
|
|
46
|
+
name: python-package-distributions
|
|
47
|
+
path: dist/
|
|
48
|
+
|
|
49
|
+
publish-testpypi:
|
|
50
|
+
name: Publish to TestPyPI
|
|
51
|
+
needs: [build]
|
|
52
|
+
if: github.event.inputs.target == 'testpypi' || startsWith(github.ref, 'refs/tags/v')
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
environment:
|
|
55
|
+
name: testpypi
|
|
56
|
+
url: https://test.pypi.org/p/arc-cloud
|
|
57
|
+
permissions:
|
|
58
|
+
id-token: write # Mandatory for Trusted Publishing
|
|
59
|
+
steps:
|
|
60
|
+
- name: Download dist artifact
|
|
61
|
+
uses: actions/download-artifact@v4
|
|
62
|
+
with:
|
|
63
|
+
name: python-package-distributions
|
|
64
|
+
path: dist/
|
|
65
|
+
|
|
66
|
+
- name: Publish to TestPyPI via PyPI Publish Action
|
|
67
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
68
|
+
with:
|
|
69
|
+
repository-url: https://test.pypi.org/legacy/
|
|
70
|
+
skip-existing: true
|
|
71
|
+
|
|
72
|
+
publish-pypi:
|
|
73
|
+
name: Publish to Production PyPI
|
|
74
|
+
needs: [build, publish-testpypi]
|
|
75
|
+
if: github.event.inputs.target == 'pypi' || (startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-rc') && !contains(github.ref, '-alpha'))
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
environment:
|
|
78
|
+
name: pypi
|
|
79
|
+
url: https://pypi.org/p/arc-cloud
|
|
80
|
+
permissions:
|
|
81
|
+
id-token: write # Mandatory for Trusted Publishing
|
|
82
|
+
steps:
|
|
83
|
+
- name: Download dist artifact
|
|
84
|
+
uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
name: python-package-distributions
|
|
87
|
+
path: dist/
|
|
88
|
+
|
|
89
|
+
- name: Publish package to PyPI
|
|
90
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Tests & CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Check out repository
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python-version }}
|
|
26
|
+
cache: "pip"
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
pip install -e ".[dev]"
|
|
32
|
+
|
|
33
|
+
- name: Run pytest
|
|
34
|
+
run: |
|
|
35
|
+
pytest -v --cov=arc_cloud --cov-report=term-missing
|
|
36
|
+
|
|
37
|
+
- name: Build distribution packages
|
|
38
|
+
run: |
|
|
39
|
+
python -m build
|
|
40
|
+
|
|
41
|
+
- name: Verify distribution archives
|
|
42
|
+
run: |
|
|
43
|
+
python -m twine check dist/*
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Distribution / packaging
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# Virtual Environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
ENV/
|
|
16
|
+
env/
|
|
17
|
+
|
|
18
|
+
# Testing & Coverage
|
|
19
|
+
.pytest_cache/
|
|
20
|
+
.coverage
|
|
21
|
+
htmlcov/
|
|
22
|
+
|
|
23
|
+
# Editor directories
|
|
24
|
+
.idea/
|
|
25
|
+
.vscode/
|
|
26
|
+
*.swp
|
|
27
|
+
*.swo
|
|
28
|
+
.DS_Store
|
|
29
|
+
|
|
30
|
+
# Temporary outputs
|
|
31
|
+
blueprint.json
|
|
32
|
+
scan_results.json
|
|
33
|
+
target/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2026-09-04
|
|
9
|
+
|
|
10
|
+
Initial public release of ARC CLOUD CLI.
|
|
11
|
+
|
|
12
|
+
- **Local Software X-Ray Scanning**: Deterministic static analysis without executing project code or requiring an LLM/cloud account.
|
|
13
|
+
- **Language Detection**: Extension- and manifest-based detection for Dart, Python, JavaScript, TypeScript, Java, Kotlin, Swift, C#, C++, Go, Rust, PHP, and Ruby with file counts and percentage metrics.
|
|
14
|
+
- **Modular Framework Detectors**: Independent detectors for Flutter, React, Next.js, Node.js, FastAPI, Django, Spring Boot, and .NET.
|
|
15
|
+
- **Target Platform Detection**: Automated detection for Android, iOS, Web, Windows, macOS, and Linux.
|
|
16
|
+
- **Safe Dependency Extraction**: Static parsing for `pubspec.yaml`, `package.json`, `requirements.txt`, `pyproject.toml`, `Pipfile`, `pom.xml`, `build.gradle`, and `*.csproj`.
|
|
17
|
+
- **Configuration & Structure Analysis**: Categorizes directories into source, tests, assets, platforms, configuration, and documentation; catalogs key project manifests.
|
|
18
|
+
- **Software Blueprint Schema v1.0**: Validated Pydantic models with schema versioning.
|
|
19
|
+
- **Rich Terminal UI**: Polished terminal presentation powered by Rich.
|
|
20
|
+
- **Flexible Output Modes**: Raw JSON output (`arc scan --json`) and direct file export (`arc scan --output blueprint.json`).
|
|
21
|
+
- **Security & Limits**: Hardened path traversal protection, symlink escape isolation, sensitive/`.env` file blocking, and safe traversal limits.
|
|
22
|
+
- **Global Executable**: Installs globally as `arc` via `pipx` or standard `pip`.
|
arc_cloud-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ARC CLOUD
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
arc_cloud-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: arc-cloud
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: ARC CLOUD Software X-Ray CLI
|
|
5
|
+
Project-URL: Homepage, https://github.com/arc-cloud-innovations/arc-cloud-cli
|
|
6
|
+
Project-URL: Documentation, https://github.com/arc-cloud-innovations/arc-cloud-cli#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/arc-cloud-innovations/arc-cloud-cli
|
|
8
|
+
Project-URL: Issues, https://github.com/arc-cloud-innovations/arc-cloud-cli/issues
|
|
9
|
+
Author-email: ARC CLOUD Team <support@arc-cloud.dev>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: architecture,cli,developer-tools,project-scanner,software-blueprint,static-analysis,x-ray
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
23
|
+
Classifier: Topic :: Utilities
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Requires-Dist: pydantic>=2.6.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0.1
|
|
27
|
+
Requires-Dist: rich>=13.7.0
|
|
28
|
+
Requires-Dist: typer>=0.12.0
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: build>=1.1.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
|
|
32
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: twine>=5.0.0; extra == 'dev'
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
# ARC CLOUD CLI
|
|
37
|
+
|
|
38
|
+
[](https://github.com/arc-cloud-innovations/arc-cloud-cli/actions/workflows/tests.yml)
|
|
39
|
+
[](https://pypi.org/project/arc-cloud/)
|
|
40
|
+
[](https://www.python.org/)
|
|
41
|
+
[](https://opensource.org/licenses/MIT)
|
|
42
|
+
|
|
43
|
+
> **ARC CLOUD CLI** is a local Software X-Ray tool that analyzes a software project and generates a structured Software Blueprint containing detected languages, frameworks, platforms, dependencies, configuration and project structure.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Privacy & Security Guarantee
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
ARC CLOUD CLI performs project scanning locally.
|
|
51
|
+
Your source code is not uploaded to ARC CLOUD during local scanning.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- **100% Offline & Local**: Scanning runs entirely on your local machine without sending your code to any cloud server or LLM API.
|
|
55
|
+
- **Zero Code Execution**: Manifests and code files are statically inspected. The scanner never executes project code or runs package managers (`npm install`, `pip install`, `flutter pub get`, `gradle`, `cargo`, etc.).
|
|
56
|
+
- **Secret Protection**: Files matching `.env`, `.env.*`, `credentials.json`, `id_rsa`, `*.key`, and secret patterns are never read, printed, or exported.
|
|
57
|
+
- **No AI / LLM Requirement**: Deterministic, rule-based static analysis engine.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Installation
|
|
62
|
+
|
|
63
|
+
### Recommended: `pipx` (Globally Available)
|
|
64
|
+
Install once globally and run from any project directory:
|
|
65
|
+
```bash
|
|
66
|
+
pipx install arc-cloud
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Standard `pip`
|
|
70
|
+
```bash
|
|
71
|
+
pip install arc-cloud
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Development Installation
|
|
75
|
+
```bash
|
|
76
|
+
git clone https://github.com/arc-cloud-innovations/arc-cloud-cli.git
|
|
77
|
+
cd arc-cloud-cli
|
|
78
|
+
python3 -m venv .venv
|
|
79
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
80
|
+
pip install -e ".[dev]"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Usage
|
|
86
|
+
|
|
87
|
+
### 1. Scan Current Project Directory
|
|
88
|
+
Navigate to any project on your computer and run:
|
|
89
|
+
```bash
|
|
90
|
+
cd my-project
|
|
91
|
+
arc scan
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 2. Scan a Specific Project Path
|
|
95
|
+
```bash
|
|
96
|
+
arc scan ./my-project
|
|
97
|
+
arc scan /absolute/path/to/project
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 3. Output as Raw JSON
|
|
101
|
+
Stream the normalized Software Blueprint JSON directly to stdout for scripting or piping into `jq`:
|
|
102
|
+
```bash
|
|
103
|
+
arc scan --json
|
|
104
|
+
arc scan ./my-project --json | jq .project
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 4. Export Blueprint to File
|
|
108
|
+
```bash
|
|
109
|
+
arc scan --output blueprint.json
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 5. Check CLI Version & Help
|
|
113
|
+
```bash
|
|
114
|
+
arc --version
|
|
115
|
+
arc --help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Supported Technologies
|
|
121
|
+
|
|
122
|
+
### Programming Languages
|
|
123
|
+
- **Dart** (`.dart`)
|
|
124
|
+
- **Python** (`.py`, `.pyi`, `.pyw`)
|
|
125
|
+
- **JavaScript** (`.js`, `.mjs`, `.cjs`, `.jsx`)
|
|
126
|
+
- **TypeScript** (`.ts`, `.mts`, `.cts`, `.tsx`)
|
|
127
|
+
- **Java** (`.java`)
|
|
128
|
+
- **Kotlin** (`.kt`, `.kts`)
|
|
129
|
+
- **Swift** (`.swift`)
|
|
130
|
+
- **C#** (`.cs`, `.csx`)
|
|
131
|
+
- **C++ / C** (`.cpp`, `.cc`, `.cxx`, `.hpp`, `.h`, `.c`)
|
|
132
|
+
- **Go** (`.go`)
|
|
133
|
+
- **Rust** (`.rs`)
|
|
134
|
+
- **PHP** (`.php`)
|
|
135
|
+
- **Ruby** (`.rb`)
|
|
136
|
+
|
|
137
|
+
### Frameworks & Ecosystems
|
|
138
|
+
- **Flutter**: `pubspec.yaml`, Flutter SDK dependencies, Dart files, Android/iOS directories.
|
|
139
|
+
- **React**: `package.json`, `react` dependencies, JSX/TSX components.
|
|
140
|
+
- **Next.js**: `package.json`, `next` dependencies, `next.config.*`, App/Pages router.
|
|
141
|
+
- **Node.js**: `package.json`, JavaScript/TypeScript server signals.
|
|
142
|
+
- **FastAPI**: `requirements.txt`, `pyproject.toml`, `fastapi` dependencies.
|
|
143
|
+
- **Django**: `requirements.txt`, `manage.py`, `django` dependencies.
|
|
144
|
+
- **Spring Boot**: `pom.xml`, `build.gradle`, Spring starter dependencies.
|
|
145
|
+
- **.NET**: `*.csproj`, `*.sln`, SDK indicators.
|
|
146
|
+
|
|
147
|
+
### Platforms Detected
|
|
148
|
+
- **Android**, **iOS**, **Web**, **Windows**, **macOS**, **Linux**
|
|
149
|
+
|
|
150
|
+
### Project Classifications
|
|
151
|
+
- **Mobile Application**, **Web Application**, **Backend**, **Full Stack**, **Desktop Application**, **Library**, **CLI Application**, **Unknown**
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## CLI Commands Reference
|
|
156
|
+
|
|
157
|
+
| Command | Description |
|
|
158
|
+
| :--- | :--- |
|
|
159
|
+
| `arc scan [PATH]` | Perform static project analysis and generate Software Blueprint (defaults to current directory) |
|
|
160
|
+
| `arc --version` | Display the installed CLI version |
|
|
161
|
+
| `arc --help` | Display general help and command options |
|
|
162
|
+
|
|
163
|
+
Options for `arc scan`:
|
|
164
|
+
- `--json`, `-j`: Output the normalized Software Blueprint as raw JSON to stdout.
|
|
165
|
+
- `--output`, `-o <FILE>`: Save the normalized Software Blueprint JSON to a specified file.
|
|
166
|
+
- `--max-files <INT>`: Maximum number of files to inspect (default: 20,000).
|
|
167
|
+
- `--max-depth <INT>`: Maximum directory recursion depth (default: 20).
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Software Blueprint JSON Specification
|
|
172
|
+
|
|
173
|
+
The Software Blueprint uses schema version `1.0`:
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"schema_version": "1.0",
|
|
178
|
+
"scanner": {
|
|
179
|
+
"name": "ARC CLOUD CLI",
|
|
180
|
+
"version": "0.1.0",
|
|
181
|
+
"timestamp": "2026-09-04T12:00:00Z",
|
|
182
|
+
"duration_seconds": 0.04,
|
|
183
|
+
"files_scanned": 128
|
|
184
|
+
},
|
|
185
|
+
"project": {
|
|
186
|
+
"name": "my_project",
|
|
187
|
+
"type": "Mobile Application",
|
|
188
|
+
"root_path": "/path/to/my_project",
|
|
189
|
+
"description": null
|
|
190
|
+
},
|
|
191
|
+
"languages": [
|
|
192
|
+
{
|
|
193
|
+
"name": "Dart",
|
|
194
|
+
"files": 45,
|
|
195
|
+
"percentage": 88.2
|
|
196
|
+
}
|
|
197
|
+
],
|
|
198
|
+
"frameworks": [
|
|
199
|
+
{
|
|
200
|
+
"name": "Flutter",
|
|
201
|
+
"version": "3.19.0",
|
|
202
|
+
"category": "Mobile",
|
|
203
|
+
"confidence": 1.0
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
"platforms": [
|
|
207
|
+
{
|
|
208
|
+
"name": "Android",
|
|
209
|
+
"source": "android/ directory"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "iOS",
|
|
213
|
+
"source": "ios/ directory"
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
"dependencies": [
|
|
217
|
+
{
|
|
218
|
+
"name": "cupertino_icons",
|
|
219
|
+
"version": "^1.0.6",
|
|
220
|
+
"source": "pubspec.yaml",
|
|
221
|
+
"type": "runtime"
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
"configuration_files": [
|
|
225
|
+
{
|
|
226
|
+
"path": "pubspec.yaml",
|
|
227
|
+
"name": "pubspec.yaml",
|
|
228
|
+
"type": "package"
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"structure": {
|
|
232
|
+
"areas": [
|
|
233
|
+
{
|
|
234
|
+
"name": "source",
|
|
235
|
+
"paths": ["lib"]
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "tests",
|
|
239
|
+
"paths": ["test"]
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
"total_files": 128,
|
|
243
|
+
"total_directories": 14,
|
|
244
|
+
"ignored_directories": [".git", ".dart_tool"]
|
|
245
|
+
},
|
|
246
|
+
"architecture": {
|
|
247
|
+
"patterns": ["Layered / Modular Architecture"],
|
|
248
|
+
"details": {
|
|
249
|
+
"test_suite_detected": true
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
"warnings": []
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Development & Testing
|
|
259
|
+
|
|
260
|
+
Run all tests:
|
|
261
|
+
```bash
|
|
262
|
+
pytest -v
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Run test coverage:
|
|
266
|
+
```bash
|
|
267
|
+
pytest --cov=arc_cloud --cov-report=term-missing
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Build the distribution packages:
|
|
271
|
+
```bash
|
|
272
|
+
python -m pip install --upgrade build twine
|
|
273
|
+
python -m build
|
|
274
|
+
python -m twine check dist/*
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Release Process
|
|
280
|
+
|
|
281
|
+
### 1. TestPyPI Publishing
|
|
282
|
+
```bash
|
|
283
|
+
twine upload -r testpypi dist/*
|
|
284
|
+
```
|
|
285
|
+
Verify the TestPyPI package:
|
|
286
|
+
```bash
|
|
287
|
+
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ arc-cloud
|
|
288
|
+
arc --version
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### 2. Production PyPI Publishing
|
|
292
|
+
When authorized by the project owner:
|
|
293
|
+
```bash
|
|
294
|
+
git tag v0.1.0
|
|
295
|
+
git push origin v0.1.0
|
|
296
|
+
```
|
|
297
|
+
GitHub Actions will run tests, build distribution wheels, and publish to production PyPI via PyPI Trusted Publishing.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## License
|
|
302
|
+
|
|
303
|
+
MIT License. See [LICENSE](LICENSE) for details.
|