@sdd-method/author-cli 0.0.0-stage → 0.1.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/LICENSE +201 -0
- package/NOTICE +17 -0
- package/README.md +6 -2
- package/dist/author-bin.js +8 -0
- package/dist/author-program.js +99 -0
- package/dist/lib/adr-origin.js +59 -0
- package/dist/lib/agent-harness.js +37 -0
- package/dist/lib/api-surface/__fixtures__/serverless-repo/serverless/serverless.yml +18 -0
- package/dist/lib/api-surface/analyzers/library.js +95 -0
- package/dist/lib/api-surface/analyzers/serverless.js +336 -0
- package/dist/lib/api-surface/analyzers/spring.js +237 -0
- package/dist/lib/api-surface/analyzers/terraform.js +109 -0
- package/dist/lib/api-surface/detect.js +25 -0
- package/dist/lib/api-surface/emit.js +109 -0
- package/dist/lib/api-surface/file-set.js +43 -0
- package/dist/lib/api-surface/index.js +134 -0
- package/dist/lib/api-surface/types.js +17 -0
- package/dist/lib/briefing/index.js +13 -0
- package/dist/lib/briefing/render.js +132 -0
- package/dist/lib/briefing/variables.js +92 -0
- package/dist/lib/catalogue/application-archetype/vocabulary.js +177 -0
- package/dist/lib/catalogue/archetype/maps/android.yaml +66 -0
- package/dist/lib/catalogue/archetype/maps/swiftui.yaml +58 -0
- package/dist/lib/catalogue/archetype/maps/uikit.yaml +48 -0
- package/dist/lib/catalogue/archetype/maps/web-generic.yaml +86 -0
- package/dist/lib/catalogue/archetype/openui-archetype-vocabulary.yaml +46 -0
- package/dist/lib/catalogue/archetype/resolver.js +103 -0
- package/dist/lib/catalogue/archetype/wireframe.js +418 -0
- package/dist/lib/catalogue/baseline-check.js +151 -0
- package/dist/lib/catalogue/build.js +1502 -0
- package/dist/lib/catalogue/builders/adr-supersedes.js +103 -0
- package/dist/lib/catalogue/builders/adrs.js +222 -0
- package/dist/lib/catalogue/builders/application-conformance-coverage.js +47 -0
- package/dist/lib/catalogue/builders/application-data-plane-bindings.js +115 -0
- package/dist/lib/catalogue/builders/c4-components.js +229 -0
- package/dist/lib/catalogue/builders/c4-containers.js +240 -0
- package/dist/lib/catalogue/builders/c4-entity-rollups.js +87 -0
- package/dist/lib/catalogue/builders/c4-external-systems.js +194 -0
- package/dist/lib/catalogue/builders/c4-l1-candidates.js +107 -0
- package/dist/lib/catalogue/builders/c4-systems.js +98 -0
- package/dist/lib/catalogue/builders/capabilities.js +488 -0
- package/dist/lib/catalogue/builders/capability-domain-model.js +74 -0
- package/dist/lib/catalogue/builders/capability-edges.js +256 -0
- package/dist/lib/catalogue/builders/capability-spec-walker.js +99 -0
- package/dist/lib/catalogue/builders/capability-spec.js +348 -0
- package/dist/lib/catalogue/builders/container-dependency.js +183 -0
- package/dist/lib/catalogue/builders/contracts.js +402 -0
- package/dist/lib/catalogue/builders/data-items.js +344 -0
- package/dist/lib/catalogue/builders/data-store-mapping.js +113 -0
- package/dist/lib/catalogue/builders/domain-models.js +175 -0
- package/dist/lib/catalogue/builders/domains.js +119 -0
- package/dist/lib/catalogue/builders/edge-label-merge.js +19 -0
- package/dist/lib/catalogue/builders/entities-manifest.js +160 -0
- package/dist/lib/catalogue/builders/entities-mermaid.js +189 -0
- package/dist/lib/catalogue/builders/entity-persistence.js +102 -0
- package/dist/lib/catalogue/builders/entity-slug.js +47 -0
- package/dist/lib/catalogue/builders/event-catalog-walker.js +186 -0
- package/dist/lib/catalogue/builders/event-edges.js +327 -0
- package/dist/lib/catalogue/builders/events.js +168 -0
- package/dist/lib/catalogue/builders/evidence-class.js +43 -0
- package/dist/lib/catalogue/builders/evidence-target-repo.js +67 -0
- package/dist/lib/catalogue/builders/external-system-exemption.js +120 -0
- package/dist/lib/catalogue/builders/feature-contract.js +77 -0
- package/dist/lib/catalogue/builders/feature-domain-model.js +50 -0
- package/dist/lib/catalogue/builders/feature-grounding-walker.js +254 -0
- package/dist/lib/catalogue/builders/feature-grounding.js +391 -0
- package/dist/lib/catalogue/builders/feature-groups.js +63 -0
- package/dist/lib/catalogue/builders/feature-subscription-channels.js +228 -0
- package/dist/lib/catalogue/builders/feature-tree-walker.js +295 -0
- package/dist/lib/catalogue/builders/features.js +300 -0
- package/dist/lib/catalogue/builders/glossary-xref.js +378 -0
- package/dist/lib/catalogue/builders/glossary.js +204 -0
- package/dist/lib/catalogue/builders/implementations.js +214 -0
- package/dist/lib/catalogue/builders/index.js +64 -0
- package/dist/lib/catalogue/builders/integration-components.js +344 -0
- package/dist/lib/catalogue/builders/integrations.js +181 -0
- package/dist/lib/catalogue/builders/persona-c4system.js +149 -0
- package/dist/lib/catalogue/builders/persona-container.js +133 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.js +133 -0
- package/dist/lib/catalogue/builders/personas.js +152 -0
- package/dist/lib/catalogue/builders/product-edges.js +106 -0
- package/dist/lib/catalogue/builders/product-platform-dependencies.js +405 -0
- package/dist/lib/catalogue/builders/products.js +162 -0
- package/dist/lib/catalogue/builders/quality-scores.js +635 -0
- package/dist/lib/catalogue/builders/repo-capability-exemption.js +61 -0
- package/dist/lib/catalogue/builders/repo-dependency.js +127 -0
- package/dist/lib/catalogue/builders/repo-edges.js +340 -0
- package/dist/lib/catalogue/builders/repositories.js +458 -0
- package/dist/lib/catalogue/builders/scaffolds.js +197 -0
- package/dist/lib/catalogue/builders/screen-tree.js +222 -0
- package/dist/lib/catalogue/builders/screens.js +396 -0
- package/dist/lib/catalogue/builders/service-capability-exemption.js +63 -0
- package/dist/lib/catalogue/builders/service-contract-consumes.js +186 -0
- package/dist/lib/catalogue/builders/service-contract.js +74 -0
- package/dist/lib/catalogue/builders/service-entity-tables.js +187 -0
- package/dist/lib/catalogue/builders/services.js +232 -0
- package/dist/lib/catalogue/builders/system-external-dependency.js +115 -0
- package/dist/lib/catalogue/builders/user-journeys.js +253 -0
- package/dist/lib/catalogue/canonical-schema.yaml +4117 -0
- package/dist/lib/catalogue/cli-version.js +10 -0
- package/dist/lib/catalogue/contract-id.js +49 -0
- package/dist/lib/catalogue/coverage-predicates.js +603 -0
- package/dist/lib/catalogue/coverage-render.js +552 -0
- package/dist/lib/catalogue/coverage-run.js +115 -0
- package/dist/lib/catalogue/csv-reader.js +97 -0
- package/dist/lib/catalogue/csv-writer.js +96 -0
- package/dist/lib/catalogue/data-plane-coherence.js +77 -0
- package/dist/lib/catalogue/ddl-generator.js +233 -0
- package/dist/lib/catalogue/dedupe-keyed-tables.js +0 -0
- package/dist/lib/catalogue/engine-validator.js +239 -0
- package/dist/lib/catalogue/ext-id.js +76 -0
- package/dist/lib/catalogue/feature-grounding-aliases-loader.js +65 -0
- package/dist/lib/catalogue/feature-repo-zero-resolution-summary.js +31 -0
- package/dist/lib/catalogue/finding-identity.js +183 -0
- package/dist/lib/catalogue/findings.js +46 -0
- package/dist/lib/catalogue/fk-validator.js +136 -0
- package/dist/lib/catalogue/freshness.js +70 -0
- package/dist/lib/catalogue/gate-checks.js +338 -0
- package/dist/lib/catalogue/graph-projection.js +346 -0
- package/dist/lib/catalogue/impact-run.js +228 -0
- package/dist/lib/catalogue/manifest-loader.js +435 -0
- package/dist/lib/catalogue/platform-scope.js +7 -0
- package/dist/lib/catalogue/population-checks.js +87 -0
- package/dist/lib/catalogue/relationship-semantics.js +66 -0
- package/dist/lib/catalogue/reverse-product-quality.js +99 -0
- package/dist/lib/catalogue/rubric-coverage-map.yaml +871 -0
- package/dist/lib/catalogue/runway-vocabulary-loader.js +56 -0
- package/dist/lib/catalogue/scaffold-delta.js +261 -0
- package/dist/lib/catalogue/schema-compat.js +52 -0
- package/dist/lib/catalogue/schema-loader.js +87 -0
- package/dist/lib/catalogue/scores-coverage.js +573 -0
- package/dist/lib/catalogue/screen-validation-loader.js +89 -0
- package/dist/lib/catalogue/service-architecture-parser.js +193 -0
- package/dist/lib/catalogue/service-contract-aliases-loader.js +109 -0
- package/dist/lib/catalogue/staleness-verdicts.js +345 -0
- package/dist/lib/catalogue/traceability-loader.js +350 -0
- package/dist/lib/catalogue/validate.js +200 -0
- package/dist/lib/catalogue/version.js +18 -0
- package/dist/lib/conformance/binding.js +70 -0
- package/dist/lib/conformance/finding.js +69 -0
- package/dist/lib/conformance/index.js +578 -0
- package/dist/lib/context-pull/index.js +191 -0
- package/dist/lib/context-pull/resolve.js +70 -0
- package/dist/lib/context-pull/retired-mcp-setup.js +7 -0
- package/dist/lib/contracts-availability/index.js +267 -0
- package/dist/lib/generate-briefing/index.js +77 -0
- package/dist/lib/list/discover.js +100 -0
- package/dist/lib/list/format.js +84 -0
- package/dist/lib/list/index.js +16 -0
- package/dist/lib/lock-file.js +437 -0
- package/dist/lib/pack/log.js +18 -0
- package/dist/lib/pack/schema.js +121 -0
- package/dist/lib/pack/seed.js +182 -0
- package/dist/lib/pack/validate.js +49 -0
- package/dist/lib/package-version.js +92 -0
- package/dist/lib/plan/index.js +69 -0
- package/dist/lib/plan/read-sdd.js +102 -0
- package/dist/lib/plan/render-template.js +84 -0
- package/dist/lib/repo-kind.js +129 -0
- package/dist/lib/scaffold/domain.js +234 -0
- package/dist/lib/scaffold/registry.js +136 -0
- package/dist/lib/scripts.js +7 -0
- package/dist/lib/sdd-index/repo-config.js +245 -0
- package/dist/lib/sdd-reader.js +91 -0
- package/dist/lib/snapshot/advance.js +454 -0
- package/dist/lib/snapshot/diff.js +190 -0
- package/dist/lib/snapshot/fold.js +208 -0
- package/dist/lib/snapshot/land.js +178 -0
- package/dist/lib/snapshot/manifest.js +206 -0
- package/dist/lib/snapshot/targets.js +169 -0
- package/dist/lib/snapshot/verify.js +91 -0
- package/dist/lib/sync/briefing-merge.js +106 -0
- package/dist/lib/sync/bundle-cache.js +109 -0
- package/dist/lib/sync/yaml-block-merge.js +120 -0
- package/dist/lib/validate/aggregate.js +51 -0
- package/dist/lib/validate/bundle-coherence.js +74 -0
- package/dist/lib/validate/dispatch.js +243 -0
- package/dist/lib/validate/index.js +110 -0
- package/dist/lib/validate/plan.js +54 -0
- package/dist/lib/validate/runner.js +85 -0
- package/dist/lib/validate/yaml-parse.js +112 -0
- package/dist/maintain-version.json +4 -0
- package/dist/verbs/api-surface.js +71 -0
- package/dist/verbs/catalogue-check.js +28 -0
- package/dist/verbs/catalogue-verify.js +114 -0
- package/dist/verbs/conformance.js +34 -0
- package/dist/verbs/context.js +39 -0
- package/dist/verbs/contracts.js +34 -0
- package/dist/verbs/generate-briefing.js +29 -0
- package/dist/verbs/list.js +45 -0
- package/dist/verbs/pack-validate.js +17 -0
- package/dist/verbs/path-option.js +25 -0
- package/dist/verbs/plan.js +42 -0
- package/dist/verbs/render.js +87 -0
- package/dist/verbs/scaffold.js +83 -0
- package/dist/verbs/snapshot.js +134 -0
- package/dist/verbs/validate.js +48 -0
- package/dist/verify-program.js +122 -0
- package/dist/verify-version.json +4 -0
- package/package.json +32 -4
- package/scripts/validate-app-dependencies.sh +664 -0
- package/scripts/validate-app-docs.sh +199 -0
- package/scripts/validate-integration-docs.sh +505 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# validate-app-docs.sh - Validate app repo documentation structure
|
|
4
|
+
#
|
|
5
|
+
# Usage: ./validate-app-docs.sh [--app-root <path>]
|
|
6
|
+
#
|
|
7
|
+
# Checks:
|
|
8
|
+
# 1. service-architecture.md is present
|
|
9
|
+
# 2. feature-tree.md is present (may be at docs/ or repo root)
|
|
10
|
+
# 3. app-platform-dependencies.yaml is present
|
|
11
|
+
# 4. Feature spec files under features/*/ have required sections:
|
|
12
|
+
# - ## Overview
|
|
13
|
+
# - ## Acceptance Criteria
|
|
14
|
+
# - ## Platform Contract Dependencies
|
|
15
|
+
#
|
|
16
|
+
# Does NOT check:
|
|
17
|
+
# - Glossary alignment (no domain glossary in app repos)
|
|
18
|
+
# - Cascade completeness (no domain model or capability tier)
|
|
19
|
+
# - DDD artifacts (no bounded contexts or aggregates)
|
|
20
|
+
# - Traceability manifests (no capability traceability in app repos)
|
|
21
|
+
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
|
|
24
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
25
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
26
|
+
|
|
27
|
+
RED='\033[0;31m'
|
|
28
|
+
GREEN='\033[0;32m'
|
|
29
|
+
YELLOW='\033[1;33m'
|
|
30
|
+
BLUE='\033[0;34m'
|
|
31
|
+
NC='\033[0m'
|
|
32
|
+
|
|
33
|
+
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
|
34
|
+
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
35
|
+
log_fail() { echo -e "${RED}[FAIL]${NC} $1"; }
|
|
36
|
+
log_pass() { echo -e "${GREEN}[PASS]${NC} $1"; }
|
|
37
|
+
# R1: an empty population is "measured nothing", not a pass — the [N/A] tag
|
|
38
|
+
# must start the line (no leading colour escape) so callers can detect it.
|
|
39
|
+
log_na() { echo -e "[N/A] $1"; }
|
|
40
|
+
log_section() {
|
|
41
|
+
echo -e "\n${BLUE}═══════════════════════════════════════════════════════════${NC}"
|
|
42
|
+
echo -e "${BLUE} $1${NC}"
|
|
43
|
+
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}\n"
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
APP_ROOT="$ROOT_DIR"
|
|
47
|
+
|
|
48
|
+
while [[ $# -gt 0 ]]; do
|
|
49
|
+
case "$1" in
|
|
50
|
+
--app-root)
|
|
51
|
+
APP_ROOT="${2:-}"
|
|
52
|
+
shift 2
|
|
53
|
+
;;
|
|
54
|
+
-h|--help)
|
|
55
|
+
echo "Usage: $(basename "$0") [--app-root <path>]"
|
|
56
|
+
exit 0
|
|
57
|
+
;;
|
|
58
|
+
*)
|
|
59
|
+
log_fail "Unknown argument: $1"
|
|
60
|
+
exit 1
|
|
61
|
+
;;
|
|
62
|
+
esac
|
|
63
|
+
done
|
|
64
|
+
|
|
65
|
+
if [[ ! -d "$APP_ROOT" ]]; then
|
|
66
|
+
log_fail "App root not found: $APP_ROOT"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
FAILURES=0
|
|
71
|
+
|
|
72
|
+
# R1: the feature specs are the population this validator measures. With none,
|
|
73
|
+
# the Group 1 file-presence checks are reported as [INFO] rather than [PASS] so
|
|
74
|
+
# the run reads as "measured nothing", not as a pass.
|
|
75
|
+
FEATURE_SPEC_COUNT="$( (find "$APP_ROOT/features" -type f -name "*.md" 2>/dev/null || true) | wc -l | tr -d ' ')"
|
|
76
|
+
log_found() {
|
|
77
|
+
if [[ "$FEATURE_SPEC_COUNT" -gt 0 ]]; then log_pass "$1"; else log_info "$1"; fi
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
81
|
+
check_required_files() {
|
|
82
|
+
log_section "Group 1: Required App Repo Files"
|
|
83
|
+
|
|
84
|
+
local checks_passed=0
|
|
85
|
+
local checks_failed=0
|
|
86
|
+
|
|
87
|
+
# 1a. service-architecture.md
|
|
88
|
+
local service_arch=""
|
|
89
|
+
if [[ -f "$APP_ROOT/docs/service-architecture.md" ]]; then
|
|
90
|
+
service_arch="$APP_ROOT/docs/service-architecture.md"
|
|
91
|
+
elif [[ -f "$APP_ROOT/service-architecture.md" ]]; then
|
|
92
|
+
service_arch="$APP_ROOT/service-architecture.md"
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
if [[ -z "$service_arch" ]]; then
|
|
96
|
+
log_fail "service-architecture.md not found (checked docs/service-architecture.md and service-architecture.md)"
|
|
97
|
+
checks_failed=$((checks_failed + 1))
|
|
98
|
+
else
|
|
99
|
+
log_found "service-architecture.md found: ${service_arch#$APP_ROOT/}"
|
|
100
|
+
checks_passed=$((checks_passed + 1))
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
# 1b. feature-tree.md
|
|
104
|
+
local feature_tree=""
|
|
105
|
+
if [[ -f "$APP_ROOT/docs/platform/feature-tree.md" ]]; then
|
|
106
|
+
feature_tree="$APP_ROOT/docs/platform/feature-tree.md"
|
|
107
|
+
elif [[ -f "$APP_ROOT/docs/feature-tree.md" ]]; then
|
|
108
|
+
feature_tree="$APP_ROOT/docs/feature-tree.md"
|
|
109
|
+
elif [[ -f "$APP_ROOT/feature-tree.md" ]]; then
|
|
110
|
+
feature_tree="$APP_ROOT/feature-tree.md"
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
if [[ -z "$feature_tree" ]]; then
|
|
114
|
+
log_warn "feature-tree.md not found (checked docs/platform/, docs/, and repo root) — create when features are classified"
|
|
115
|
+
# warn only; not a hard fail at exploration stage
|
|
116
|
+
else
|
|
117
|
+
log_found "feature-tree.md found: ${feature_tree#$APP_ROOT/}"
|
|
118
|
+
checks_passed=$((checks_passed + 1))
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# 1c. app-platform-dependencies.yaml
|
|
122
|
+
if [[ -f "$APP_ROOT/app-platform-dependencies.yaml" ]]; then
|
|
123
|
+
log_found "app-platform-dependencies.yaml found"
|
|
124
|
+
checks_passed=$((checks_passed + 1))
|
|
125
|
+
else
|
|
126
|
+
log_fail "app-platform-dependencies.yaml not found in repo root"
|
|
127
|
+
checks_failed=$((checks_failed + 1))
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
if [[ "$checks_failed" -gt 0 ]]; then
|
|
131
|
+
FAILURES=$((FAILURES + checks_failed))
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
log_info "Group 1: $checks_passed passed, $checks_failed failed"
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
138
|
+
check_feature_specs() {
|
|
139
|
+
log_section "Group 2: Feature Spec Section Validation"
|
|
140
|
+
|
|
141
|
+
local required_sections=("## Overview" "## Acceptance Criteria" "## Platform Contract Dependencies")
|
|
142
|
+
local specs_found=0
|
|
143
|
+
local specs_failed=0
|
|
144
|
+
local specs_passed=0
|
|
145
|
+
|
|
146
|
+
# Discover feature specs under features/*/
|
|
147
|
+
local feature_spec
|
|
148
|
+
while IFS= read -r feature_spec; do
|
|
149
|
+
specs_found=$((specs_found + 1))
|
|
150
|
+
local rel="${feature_spec#$APP_ROOT/}"
|
|
151
|
+
local file_failures=0
|
|
152
|
+
|
|
153
|
+
for section in "${required_sections[@]}"; do
|
|
154
|
+
if ! grep -q "^${section}" "$feature_spec" 2>/dev/null; then
|
|
155
|
+
log_fail "$rel: missing required section '$section'"
|
|
156
|
+
file_failures=$((file_failures + 1))
|
|
157
|
+
fi
|
|
158
|
+
done
|
|
159
|
+
|
|
160
|
+
if [[ "$file_failures" -eq 0 ]]; then
|
|
161
|
+
log_pass "$rel: all required sections present"
|
|
162
|
+
specs_passed=$((specs_passed + 1))
|
|
163
|
+
else
|
|
164
|
+
specs_failed=$((specs_failed + 1))
|
|
165
|
+
FAILURES=$((FAILURES + file_failures))
|
|
166
|
+
fi
|
|
167
|
+
done < <(find "$APP_ROOT/features" -type f -name "*.md" 2>/dev/null | sort)
|
|
168
|
+
|
|
169
|
+
if [[ "$specs_found" -eq 0 ]]; then
|
|
170
|
+
log_info "No feature specs found under features/ — skipping section validation"
|
|
171
|
+
return 0
|
|
172
|
+
fi
|
|
173
|
+
|
|
174
|
+
log_info "Group 2: $specs_passed/$specs_found feature specs passed, $specs_failed failed"
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
178
|
+
main() {
|
|
179
|
+
log_section "App Documentation Validation"
|
|
180
|
+
log_info "App root: $APP_ROOT"
|
|
181
|
+
|
|
182
|
+
check_required_files
|
|
183
|
+
check_feature_specs
|
|
184
|
+
|
|
185
|
+
log_section "Summary"
|
|
186
|
+
|
|
187
|
+
if [[ "$FAILURES" -eq 0 && "$FEATURE_SPEC_COUNT" -eq 0 ]]; then
|
|
188
|
+
log_na "App documentation: required files present, but 0 feature specs found under features/ — nothing to check"
|
|
189
|
+
exit 0
|
|
190
|
+
elif [[ "$FAILURES" -eq 0 ]]; then
|
|
191
|
+
log_pass "All app documentation checks passed."
|
|
192
|
+
exit 0
|
|
193
|
+
else
|
|
194
|
+
log_fail "$FAILURES check(s) failed."
|
|
195
|
+
exit 1
|
|
196
|
+
fi
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
main "$@"
|