@nowline/cli 0.2.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 +190 -0
- package/README.md +372 -0
- package/dist/cli/args.d.ts +54 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +165 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/formats.d.ts +61 -0
- package/dist/cli/formats.d.ts.map +1 -0
- package/dist/cli/formats.js +153 -0
- package/dist/cli/formats.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +90 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/output-path.d.ts +57 -0
- package/dist/cli/output-path.d.ts.map +1 -0
- package/dist/cli/output-path.js +70 -0
- package/dist/cli/output-path.js.map +1 -0
- package/dist/commands/init.d.ts +20 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +80 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/render.d.ts +15 -0
- package/dist/commands/render.d.ts.map +1 -0
- package/dist/commands/render.js +435 -0
- package/dist/commands/render.js.map +1 -0
- package/dist/commands/serve.d.ts +16 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +287 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/convert/parse-json.d.ts +7 -0
- package/dist/convert/parse-json.d.ts.map +1 -0
- package/dist/convert/parse-json.js +34 -0
- package/dist/convert/parse-json.js.map +1 -0
- package/dist/convert/printer.d.ts +6 -0
- package/dist/convert/printer.d.ts.map +1 -0
- package/dist/convert/printer.js +334 -0
- package/dist/convert/printer.js.map +1 -0
- package/dist/convert/schema.d.ts +33 -0
- package/dist/convert/schema.d.ts.map +1 -0
- package/dist/convert/schema.js +77 -0
- package/dist/convert/schema.js.map +1 -0
- package/dist/core/parse.d.ts +24 -0
- package/dist/core/parse.d.ts.map +1 -0
- package/dist/core/parse.js +58 -0
- package/dist/core/parse.js.map +1 -0
- package/dist/diagnostics/adapt.d.ts +46 -0
- package/dist/diagnostics/adapt.d.ts.map +1 -0
- package/dist/diagnostics/adapt.js +109 -0
- package/dist/diagnostics/adapt.js.map +1 -0
- package/dist/diagnostics/format.d.ts +18 -0
- package/dist/diagnostics/format.d.ts.map +1 -0
- package/dist/diagnostics/format.js +41 -0
- package/dist/diagnostics/format.js.map +1 -0
- package/dist/diagnostics/index.d.ts +5 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +5 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/json.d.ts +8 -0
- package/dist/diagnostics/json.d.ts.map +1 -0
- package/dist/diagnostics/json.js +24 -0
- package/dist/diagnostics/json.js.map +1 -0
- package/dist/diagnostics/model.d.ts +44 -0
- package/dist/diagnostics/model.d.ts.map +1 -0
- package/dist/diagnostics/model.js +2 -0
- package/dist/diagnostics/model.js.map +1 -0
- package/dist/diagnostics/text.d.ts +6 -0
- package/dist/diagnostics/text.d.ts.map +1 -0
- package/dist/diagnostics/text.js +43 -0
- package/dist/diagnostics/text.js.map +1 -0
- package/dist/generated/templates.d.ts +4 -0
- package/dist/generated/templates.d.ts.map +1 -0
- package/dist/generated/templates.js +9 -0
- package/dist/generated/templates.js.map +1 -0
- package/dist/generated/version.d.ts +11 -0
- package/dist/generated/version.d.ts.map +1 -0
- package/dist/generated/version.js +8 -0
- package/dist/generated/version.js.map +1 -0
- package/dist/i18n/locale.d.ts +56 -0
- package/dist/i18n/locale.d.ts.map +1 -0
- package/dist/i18n/locale.js +107 -0
- package/dist/i18n/locale.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/io/config.d.ts +2 -0
- package/dist/io/config.d.ts.map +1 -0
- package/dist/io/config.js +5 -0
- package/dist/io/config.js.map +1 -0
- package/dist/io/exit-codes.d.ts +12 -0
- package/dist/io/exit-codes.d.ts.map +1 -0
- package/dist/io/exit-codes.js +15 -0
- package/dist/io/exit-codes.js.map +1 -0
- package/dist/io/read.d.ts +13 -0
- package/dist/io/read.d.ts.map +1 -0
- package/dist/io/read.js +53 -0
- package/dist/io/read.js.map +1 -0
- package/dist/io/write.d.ts +32 -0
- package/dist/io/write.d.ts.map +1 -0
- package/dist/io/write.js +61 -0
- package/dist/io/write.js.map +1 -0
- package/dist/version.d.ts +13 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +20 -0
- package/dist/version.js.map +1 -0
- package/man/fr/nowline.1 +424 -0
- package/man/fr/nowline.5 +1864 -0
- package/man/nowline.1 +517 -0
- package/man/nowline.5 +1784 -0
- package/package.json +66 -0
- package/scripts/bundle-templates.mjs +105 -0
- package/scripts/compile.mjs +131 -0
- package/src/cli/args.ts +252 -0
- package/src/cli/formats.ts +207 -0
- package/src/cli/help.ts +92 -0
- package/src/cli/output-path.ts +98 -0
- package/src/commands/init.ts +99 -0
- package/src/commands/render.ts +566 -0
- package/src/commands/serve.ts +322 -0
- package/src/convert/parse-json.ts +57 -0
- package/src/convert/printer.ts +376 -0
- package/src/convert/schema.ts +105 -0
- package/src/core/parse.ts +93 -0
- package/src/diagnostics/adapt.ts +148 -0
- package/src/diagnostics/format.ts +70 -0
- package/src/diagnostics/index.ts +4 -0
- package/src/diagnostics/json.ts +30 -0
- package/src/diagnostics/model.ts +48 -0
- package/src/diagnostics/text.ts +62 -0
- package/src/generated/templates.ts +12 -0
- package/src/generated/version.ts +18 -0
- package/src/i18n/locale.ts +133 -0
- package/src/index.ts +60 -0
- package/src/io/config.ts +11 -0
- package/src/io/exit-codes.ts +18 -0
- package/src/io/read.ts +70 -0
- package/src/io/write.ts +94 -0
- package/src/version.ts +21 -0
package/man/nowline.1
ADDED
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
.Dd $Mdocdate$
|
|
2
|
+
.Dt NOWLINE 1
|
|
3
|
+
.Os
|
|
4
|
+
.Sh NAME
|
|
5
|
+
.Nm nowline
|
|
6
|
+
.Nd render, validate, and serve .nowline roadmap files
|
|
7
|
+
.Sh SYNOPSIS
|
|
8
|
+
.Nm
|
|
9
|
+
.Op Fl f Ar format
|
|
10
|
+
.Op Fl o Ar path
|
|
11
|
+
.Op Fl t Ar theme
|
|
12
|
+
.Op Fl -now Ar date
|
|
13
|
+
.Op Ar options
|
|
14
|
+
.Ar input
|
|
15
|
+
.Nm
|
|
16
|
+
.Fl -serve
|
|
17
|
+
.Op Fl p Ar port
|
|
18
|
+
.Op Ar options
|
|
19
|
+
.Ar input
|
|
20
|
+
.Nm
|
|
21
|
+
.Fl -init
|
|
22
|
+
.Op Ar name
|
|
23
|
+
.Nm
|
|
24
|
+
.Fl -dry-run
|
|
25
|
+
.Op Ar options
|
|
26
|
+
.Ar input
|
|
27
|
+
.Nm
|
|
28
|
+
.Op Fl V | Fl -version
|
|
29
|
+
.Nm
|
|
30
|
+
.Op Fl h | Fl -help
|
|
31
|
+
.Sh DESCRIPTION
|
|
32
|
+
.Nm
|
|
33
|
+
parses a
|
|
34
|
+
.Pa .nowline
|
|
35
|
+
roadmap file (or its JSON AST form) and writes the rendered output to a
|
|
36
|
+
file or to standard output.
|
|
37
|
+
Rendering is the default; other modes are selected by mutually-exclusive
|
|
38
|
+
mode flags rather than subcommands
|
|
39
|
+
.Pq verbless, matching mmdc, dot, d2, prettier, and tsc .
|
|
40
|
+
.Pp
|
|
41
|
+
The render pipeline is
|
|
42
|
+
.Sy parse
|
|
43
|
+
\(->
|
|
44
|
+
.Sy validate
|
|
45
|
+
\(->
|
|
46
|
+
.Sy layout
|
|
47
|
+
\(->
|
|
48
|
+
.Sy format-specific exporter .
|
|
49
|
+
Output is byte-for-byte deterministic for a given input,
|
|
50
|
+
.Fl -theme ,
|
|
51
|
+
and
|
|
52
|
+
.Fl -now .
|
|
53
|
+
.Pp
|
|
54
|
+
A single
|
|
55
|
+
.Nm
|
|
56
|
+
binary ships every export format: SVG, PNG, PDF, HTML,
|
|
57
|
+
Markdown+Mermaid, XLSX, MS Project XML, plus AST round-trip
|
|
58
|
+
.Pq json , nowline .
|
|
59
|
+
.Pp
|
|
60
|
+
.Ar input
|
|
61
|
+
is required for the default render mode,
|
|
62
|
+
.Fl -serve ,
|
|
63
|
+
and
|
|
64
|
+
.Fl -dry-run .
|
|
65
|
+
Pass
|
|
66
|
+
.Sq -
|
|
67
|
+
to read from standard input.
|
|
68
|
+
With zero arguments,
|
|
69
|
+
.Nm
|
|
70
|
+
prints help and exits 0.
|
|
71
|
+
.Sh INPUT
|
|
72
|
+
The input format is detected from the file extension:
|
|
73
|
+
.Pa .nowline
|
|
74
|
+
\(-> DSL,
|
|
75
|
+
.Pa .json
|
|
76
|
+
\(-> AST.
|
|
77
|
+
Standard-input input defaults to
|
|
78
|
+
.Pa .nowline .
|
|
79
|
+
Use
|
|
80
|
+
.Fl -input-format
|
|
81
|
+
to override for unusual filenames.
|
|
82
|
+
.Sh LANGUAGE
|
|
83
|
+
A
|
|
84
|
+
.Pa .nowline
|
|
85
|
+
file is an indentation-significant outline.
|
|
86
|
+
Two-space indent is canonical; tabs are accepted but must not be
|
|
87
|
+
mixed with spaces in a single file.
|
|
88
|
+
Strings are double-quoted; properties are
|
|
89
|
+
.Sy key:value
|
|
90
|
+
pairs.
|
|
91
|
+
Comments use
|
|
92
|
+
.Sq //
|
|
93
|
+
or
|
|
94
|
+
.Sq /* */ .
|
|
95
|
+
.Pp
|
|
96
|
+
File structure has up to four sections in strict order:
|
|
97
|
+
.Bl -enum -offset indent -compact
|
|
98
|
+
.It
|
|
99
|
+
.Sy nowline v1
|
|
100
|
+
directive (optional, must be the first non-comment line; accepts
|
|
101
|
+
.Sy locale:<bcp47> ) .
|
|
102
|
+
.It
|
|
103
|
+
.Sy include
|
|
104
|
+
declarations (optional).
|
|
105
|
+
.It
|
|
106
|
+
.Sy config
|
|
107
|
+
section (optional): styles, defaults, scale, calendar, symbols.
|
|
108
|
+
.It
|
|
109
|
+
.Sy roadmap
|
|
110
|
+
section (required): the content.
|
|
111
|
+
.El
|
|
112
|
+
.Pp
|
|
113
|
+
Keyword summary:
|
|
114
|
+
.Bl -tag -width "person/team" -compact
|
|
115
|
+
.It Sy nowline
|
|
116
|
+
DSL version directive (currently
|
|
117
|
+
.Sy v1 ) .
|
|
118
|
+
.It Sy include
|
|
119
|
+
Pull in another
|
|
120
|
+
.Pa .nowline
|
|
121
|
+
file;
|
|
122
|
+
.Sy config:
|
|
123
|
+
and
|
|
124
|
+
.Sy roadmap:
|
|
125
|
+
modes
|
|
126
|
+
.Pq Sy merge | ignore | isolate
|
|
127
|
+
control merge behavior.
|
|
128
|
+
.It Sy config , roadmap
|
|
129
|
+
Section markers; one
|
|
130
|
+
.Sy roadmap
|
|
131
|
+
per file.
|
|
132
|
+
.It Sy style , symbol , default , scale , calendar
|
|
133
|
+
Config keywords (presentation, defaults, axis, day arithmetic).
|
|
134
|
+
.It Sy person , team
|
|
135
|
+
Org vocabulary referenced by
|
|
136
|
+
.Sy owner: .
|
|
137
|
+
.It Sy anchor , milestone
|
|
138
|
+
Named dates and achievement markers on the timeline.
|
|
139
|
+
.It Sy label , size , status
|
|
140
|
+
Reusable vocabulary referenced by
|
|
141
|
+
.Sy labels: , size: , status: .
|
|
142
|
+
.It Sy swimlane
|
|
143
|
+
Groups items by team / area / stream.
|
|
144
|
+
.It Sy item
|
|
145
|
+
Work item, indented under a swimlane (or parallel / group).
|
|
146
|
+
.It Sy parallel , group
|
|
147
|
+
Parallel block and sequential bundle; nestable.
|
|
148
|
+
.It Sy footnote
|
|
149
|
+
Annotation attached to one or more entities via
|
|
150
|
+
.Sy on: .
|
|
151
|
+
.El
|
|
152
|
+
.Pp
|
|
153
|
+
Every entity follows a universal shape:
|
|
154
|
+
.Bd -literal -offset indent
|
|
155
|
+
keyword [id] ["title"] [key:value ...]
|
|
156
|
+
.Ed
|
|
157
|
+
.Pp
|
|
158
|
+
At least one of
|
|
159
|
+
.Ar id
|
|
160
|
+
or
|
|
161
|
+
.Qq Ar title
|
|
162
|
+
is required \(em the parser distinguishes them by quoting.
|
|
163
|
+
Lists use bracket notation
|
|
164
|
+
.Pq Sy labels:[a, b] ;
|
|
165
|
+
a trailing
|
|
166
|
+
.Sq \e
|
|
167
|
+
continues a line.
|
|
168
|
+
.Pp
|
|
169
|
+
Minimal example:
|
|
170
|
+
.Bd -literal -offset indent
|
|
171
|
+
nowline v1
|
|
172
|
+
|
|
173
|
+
roadmap r "Demo" start:2026-01-06
|
|
174
|
+
|
|
175
|
+
size m effort:1w
|
|
176
|
+
|
|
177
|
+
swimlane platform
|
|
178
|
+
item auth "Auth refactor" size:m
|
|
179
|
+
.Ed
|
|
180
|
+
.Pp
|
|
181
|
+
See
|
|
182
|
+
.Xr nowline 5
|
|
183
|
+
.Pq Sy man 5 nowline
|
|
184
|
+
for the full grammar, every property, validation rules, and the
|
|
185
|
+
.Sy include
|
|
186
|
+
collision model.
|
|
187
|
+
.Sh MODE FLAGS
|
|
188
|
+
The mode flags below are mutually exclusive.
|
|
189
|
+
.Bl -tag -width Fl
|
|
190
|
+
.It Fl -serve
|
|
191
|
+
Run a local live-reload preview server.
|
|
192
|
+
Re-parses, re-validates, re-lays-out, and re-renders on every file
|
|
193
|
+
change; connected browsers refresh via Server-Sent Events.
|
|
194
|
+
Validation errors are shown as an overlay on top of the most recent
|
|
195
|
+
successful render.
|
|
196
|
+
Opt-in
|
|
197
|
+
.Fl o Ar path
|
|
198
|
+
also writes the rendered output to disk on each rebuild.
|
|
199
|
+
.It Fl -init Op Ar name
|
|
200
|
+
Scaffold a starter
|
|
201
|
+
.Pa .nowline
|
|
202
|
+
file in the current directory.
|
|
203
|
+
The positional argument is the project
|
|
204
|
+
.Em name ,
|
|
205
|
+
not a file path;
|
|
206
|
+
.Pa .nowline
|
|
207
|
+
is auto-appended if missing.
|
|
208
|
+
Default name is
|
|
209
|
+
.Sy roadmap .
|
|
210
|
+
Existing files are silently overwritten.
|
|
211
|
+
.It Fl n , -dry-run
|
|
212
|
+
Run the full pipeline (parse + validate + layout + format) but skip the
|
|
213
|
+
write step.
|
|
214
|
+
Replaces the deprecated
|
|
215
|
+
.Sy validate
|
|
216
|
+
verb.
|
|
217
|
+
Exits 0 on success, 1 on validation error.
|
|
218
|
+
Works with any output format \(em
|
|
219
|
+
.Nm Ar roadmap.nowline Fl f Ar pdf Fl -dry-run
|
|
220
|
+
exercises the entire PDF pipeline without producing a file.
|
|
221
|
+
.El
|
|
222
|
+
.Sh I/O OPTIONS
|
|
223
|
+
.Bl -tag -width Fl
|
|
224
|
+
.It Fl f , -format Ar fmt
|
|
225
|
+
Output format:
|
|
226
|
+
.Sy svg , png , pdf , html , mermaid , xlsx , msproj , json , nowline .
|
|
227
|
+
Default: inferred from
|
|
228
|
+
.Fl o
|
|
229
|
+
extension, else
|
|
230
|
+
.Pa .nowlinerc
|
|
231
|
+
.Sy defaultFormat ,
|
|
232
|
+
else
|
|
233
|
+
.Sy svg .
|
|
234
|
+
.It Fl o , -output Ar path
|
|
235
|
+
Output file path.
|
|
236
|
+
Use
|
|
237
|
+
.Sq -
|
|
238
|
+
for standard output (Unix dash convention).
|
|
239
|
+
Default:
|
|
240
|
+
.Pa <cwd>/<input-base>.<format> .
|
|
241
|
+
Existing files are silently overwritten.
|
|
242
|
+
.It Fl -input-format Ar fmt
|
|
243
|
+
Force input format:
|
|
244
|
+
.Sy nowline | json .
|
|
245
|
+
Default: inferred from extension; standard input defaults to
|
|
246
|
+
.Sy nowline .
|
|
247
|
+
.El
|
|
248
|
+
.Sh RENDER OPTIONS
|
|
249
|
+
.Bl -tag -width Fl
|
|
250
|
+
.It Fl t , -theme Ar name
|
|
251
|
+
.Sy light | dark .
|
|
252
|
+
.It Fl -now Ar date
|
|
253
|
+
.Sq Now
|
|
254
|
+
anchor for the now-line and date math, in
|
|
255
|
+
.Pa YYYY-MM-DD
|
|
256
|
+
form.
|
|
257
|
+
Default: today (the OS calendar date in UTC).
|
|
258
|
+
Pass
|
|
259
|
+
.Fl -now Sq -
|
|
260
|
+
to suppress the now-line entirely.
|
|
261
|
+
.It Fl -locale Ar bcp47
|
|
262
|
+
BCP-47 language tag for the operator's CLI message output (validator
|
|
263
|
+
diagnostics on standard error,
|
|
264
|
+
.Fl -help ,
|
|
265
|
+
parse errors, verbose logs).
|
|
266
|
+
Examples:
|
|
267
|
+
.Sy en-US , fr , fr-CA , fr-FR .
|
|
268
|
+
.Pp
|
|
269
|
+
Nowline keeps two independent locale chains so a French operator
|
|
270
|
+
can read errors in French while still rendering an English roadmap
|
|
271
|
+
authored by an American teammate (and vice-versa):
|
|
272
|
+
.Bl -tag -width Ds
|
|
273
|
+
.It Em Content locale Pq baked into the rendered SVG / PDF / etc.
|
|
274
|
+
File's
|
|
275
|
+
.Sy nowline v1 locale:
|
|
276
|
+
directive
|
|
277
|
+
\(->
|
|
278
|
+
.Fl -locale
|
|
279
|
+
\(->
|
|
280
|
+
.Ev LC_ALL Ns / Ns Ev LC_MESSAGES Ns / Ns Ev LANG
|
|
281
|
+
\(->
|
|
282
|
+
.Sy en-US .
|
|
283
|
+
The file always wins; the operator's locale only acts as a fallback
|
|
284
|
+
when the file declines to declare its own.
|
|
285
|
+
.It Em Operator locale Pq stderr / stdout messages
|
|
286
|
+
.Fl -locale
|
|
287
|
+
\(->
|
|
288
|
+
.Ev LC_ALL Ns / Ns Ev LC_MESSAGES Ns / Ns Ev LANG
|
|
289
|
+
\(->
|
|
290
|
+
.Sy en-US .
|
|
291
|
+
Independent of the file directive: a French
|
|
292
|
+
.Ev LANG
|
|
293
|
+
keeps validator errors in French even when the file says
|
|
294
|
+
.Sy locale:en-US .
|
|
295
|
+
.El
|
|
296
|
+
.Pp
|
|
297
|
+
Bundles fall back along the BCP-47 chain
|
|
298
|
+
.Pq Sy fr-CA No \(-> Sy fr No \(-> Sy en-US ,
|
|
299
|
+
so missing entries are silently filled in.
|
|
300
|
+
See
|
|
301
|
+
.Pa specs/localization.md
|
|
302
|
+
for the resolution matrix.
|
|
303
|
+
.It Fl -no-links
|
|
304
|
+
Omit link icons from rendered items.
|
|
305
|
+
.It Fl s , -scale Ar n
|
|
306
|
+
Raster scale factor (PNG only; default 1).
|
|
307
|
+
.It Fl -strict
|
|
308
|
+
Promote asset / sanitizer warnings to errors.
|
|
309
|
+
.It Fl w , -width Ar px
|
|
310
|
+
Canvas width in pixels (default 1280).
|
|
311
|
+
.It Fl -asset-root Ar dir
|
|
312
|
+
Directory from which logo / image assets may be loaded
|
|
313
|
+
(default: input file's directory).
|
|
314
|
+
.El
|
|
315
|
+
.Sh FORMAT-SPECIFIC OPTIONS
|
|
316
|
+
.Bl -tag -width Fl
|
|
317
|
+
.It Fl -page-size Ar size
|
|
318
|
+
PDF page size: preset
|
|
319
|
+
.Pq Sy letter , legal , tabloid , ledger , a1 No \(en Sy a5 , b3 No \(en Sy b5 ,
|
|
320
|
+
.Sy content
|
|
321
|
+
for auto-fit, or
|
|
322
|
+
.Sy WxH Ns Em unit
|
|
323
|
+
for custom (e.g.
|
|
324
|
+
.Sy 8.5x11in , 210x297mm ) .
|
|
325
|
+
Default:
|
|
326
|
+
.Sy letter .
|
|
327
|
+
.It Fl -orientation Ar name
|
|
328
|
+
PDF orientation:
|
|
329
|
+
.Sy portrait | landscape | auto .
|
|
330
|
+
Default:
|
|
331
|
+
.Sy auto .
|
|
332
|
+
.It Fl -margin Ar length
|
|
333
|
+
PDF page margin.
|
|
334
|
+
Bare numbers are points; length suffixes
|
|
335
|
+
.Pq Sy in , mm , cm
|
|
336
|
+
are accepted.
|
|
337
|
+
Default:
|
|
338
|
+
.Sy 36pt
|
|
339
|
+
(1/2 inch).
|
|
340
|
+
.It Fl -font-sans Ar ref
|
|
341
|
+
Sans font for PNG/PDF: TTF/OTF path, or alias
|
|
342
|
+
.Pq Sy sf , helvetica , dejavu , ... .
|
|
343
|
+
Default: platform probe \(-> bundled DejaVu fallback.
|
|
344
|
+
.It Fl -font-mono Ar ref
|
|
345
|
+
Monospace font for PNG/PDF; same resolution chain as
|
|
346
|
+
.Fl -font-sans .
|
|
347
|
+
.It Fl -headless
|
|
348
|
+
Skip the platform font probe and force the bundled DejaVu pair.
|
|
349
|
+
Output is byte-stable across machines.
|
|
350
|
+
.It Fl -start Ar date
|
|
351
|
+
MS Project: anchor date
|
|
352
|
+
.Pq Pa YYYY-MM-DD
|
|
353
|
+
for relative-only roadmaps.
|
|
354
|
+
Default:
|
|
355
|
+
.Fl -now ,
|
|
356
|
+
then deterministic fallback.
|
|
357
|
+
.El
|
|
358
|
+
.Sh SERVE OPTIONS
|
|
359
|
+
.Bl -tag -width Fl
|
|
360
|
+
.It Fl p , -port Ar n
|
|
361
|
+
Port to bind (default 4318).
|
|
362
|
+
.It Fl -host Ar host
|
|
363
|
+
Bind address (default
|
|
364
|
+
.Sy 127.0.0.1 ;
|
|
365
|
+
use
|
|
366
|
+
.Sy 0.0.0.0
|
|
367
|
+
to expose on the LAN).
|
|
368
|
+
.It Fl -open
|
|
369
|
+
Open the browser on start.
|
|
370
|
+
.El
|
|
371
|
+
.Sh LOGGING OPTIONS
|
|
372
|
+
The logging flags are mutually exclusive.
|
|
373
|
+
.Bl -tag -width Fl
|
|
374
|
+
.It Fl v , -verbose
|
|
375
|
+
Print extra diagnostics to standard error (config path, pipeline
|
|
376
|
+
timings, font resolution, fallback decisions).
|
|
377
|
+
.It Fl q , -quiet
|
|
378
|
+
Suppress non-error standard error.
|
|
379
|
+
.El
|
|
380
|
+
.Sh STANDARD OPTIONS
|
|
381
|
+
.Bl -tag -width Fl
|
|
382
|
+
.It Fl h , -help
|
|
383
|
+
Print help to standard output and exit 0.
|
|
384
|
+
.It Fl V , -version
|
|
385
|
+
Print version to standard output and exit 0.
|
|
386
|
+
.El
|
|
387
|
+
.Pp
|
|
388
|
+
.Fl V
|
|
389
|
+
(uppercase) is
|
|
390
|
+
.Fl -version ;
|
|
391
|
+
lowercase
|
|
392
|
+
.Fl v
|
|
393
|
+
is
|
|
394
|
+
.Fl -verbose ,
|
|
395
|
+
matching
|
|
396
|
+
.Xr curl 1
|
|
397
|
+
and
|
|
398
|
+
.Xr ssh 1 .
|
|
399
|
+
.Sh ENVIRONMENT
|
|
400
|
+
.Bl -tag -width Ev
|
|
401
|
+
.It Ev LC_ALL , LC_MESSAGES , LANG
|
|
402
|
+
Operator locale fallback when
|
|
403
|
+
.Fl -locale
|
|
404
|
+
is absent.
|
|
405
|
+
First non-empty value wins, in the order listed.
|
|
406
|
+
POSIX-style suffixes
|
|
407
|
+
.Pq Sq .UTF-8 , Sq @euro
|
|
408
|
+
are stripped and the result is normalized to BCP-47.
|
|
409
|
+
.Pp
|
|
410
|
+
Affects the operator chain
|
|
411
|
+
.Pq stderr / stdout, validator diagnostics, --help, errors, verbose logs
|
|
412
|
+
unconditionally.
|
|
413
|
+
Affects the content chain
|
|
414
|
+
.Pq rendered axis labels, now-pill, quarter prefix
|
|
415
|
+
only when the file does not declare its own
|
|
416
|
+
.Sy nowline v1 locale:
|
|
417
|
+
directive — the file directive always wins for the rendered
|
|
418
|
+
artifact.
|
|
419
|
+
See
|
|
420
|
+
.Pa specs/localization.md
|
|
421
|
+
for the resolution matrix.
|
|
422
|
+
.El
|
|
423
|
+
.Sh FILES
|
|
424
|
+
.Bl -tag -width Pa
|
|
425
|
+
.It Pa .nowlinerc
|
|
426
|
+
Optional JSON or YAML configuration file.
|
|
427
|
+
Walked up from the input file's directory; nearest one wins.
|
|
428
|
+
CLI flags override config values.
|
|
429
|
+
Recognized keys:
|
|
430
|
+
.Sy theme , defaultFormat , width , pdfPageSize , pdfOrientation ,
|
|
431
|
+
.Sy pdfMargin , fontSans , fontMono , headlessFonts , locale .
|
|
432
|
+
Unknown keys are ignored.
|
|
433
|
+
.El
|
|
434
|
+
.Sh EXIT STATUS
|
|
435
|
+
.Bl -tag -width Ds
|
|
436
|
+
.It 0
|
|
437
|
+
Success.
|
|
438
|
+
.It 1
|
|
439
|
+
Validation error (parse failure, invalid reference, etc.).
|
|
440
|
+
.It 2
|
|
441
|
+
Usage error (missing input, bad flags, mutually-exclusive flags,
|
|
442
|
+
unsupported format, file not found, binary output to TTY, unreadable
|
|
443
|
+
input).
|
|
444
|
+
.It 3
|
|
445
|
+
Output error (cannot write to destination, exporter pipeline failure).
|
|
446
|
+
.El
|
|
447
|
+
.Sh EXAMPLES
|
|
448
|
+
Render the default SVG to the current directory:
|
|
449
|
+
.Bd -literal -offset indent
|
|
450
|
+
nowline roadmap.nowline
|
|
451
|
+
.Ed
|
|
452
|
+
.Pp
|
|
453
|
+
Render to a different format; format inferred from
|
|
454
|
+
.Fl o
|
|
455
|
+
extension:
|
|
456
|
+
.Bd -literal -offset indent
|
|
457
|
+
nowline roadmap.nowline -f pdf
|
|
458
|
+
nowline roadmap.nowline -o roadmap.pdf
|
|
459
|
+
nowline roadmap.nowline -f png --scale 3
|
|
460
|
+
.Ed
|
|
461
|
+
.Pp
|
|
462
|
+
Stream SVG to standard output, validate, and live-preview:
|
|
463
|
+
.Bd -literal -offset indent
|
|
464
|
+
nowline roadmap.nowline -o -
|
|
465
|
+
nowline roadmap.nowline --dry-run
|
|
466
|
+
nowline roadmap.nowline --serve -p 8080
|
|
467
|
+
.Ed
|
|
468
|
+
.Pp
|
|
469
|
+
Read from standard input; convert text \(<-\(-> JSON AST:
|
|
470
|
+
.Bd -literal -offset indent
|
|
471
|
+
cat roadmap.nowline | nowline -
|
|
472
|
+
nowline roadmap.nowline -f json -o roadmap.json
|
|
473
|
+
nowline roadmap.json -f nowline -o roadmap.nowline
|
|
474
|
+
.Ed
|
|
475
|
+
.Pp
|
|
476
|
+
Scaffold a new file:
|
|
477
|
+
.Bd -literal -offset indent
|
|
478
|
+
nowline --init
|
|
479
|
+
nowline --init my-project
|
|
480
|
+
.Ed
|
|
481
|
+
.Pp
|
|
482
|
+
PDF with explicit page geometry, byte-stable across machines:
|
|
483
|
+
.Bd -literal -offset indent
|
|
484
|
+
nowline roadmap.nowline -f pdf --page-size a4 \\
|
|
485
|
+
--orientation landscape --margin 0.5in --headless
|
|
486
|
+
.Ed
|
|
487
|
+
.Pp
|
|
488
|
+
Read errors and diagnostics in French while rendering whatever
|
|
489
|
+
locale the file declares:
|
|
490
|
+
.Bd -literal -offset indent
|
|
491
|
+
nowline roadmap.nowline --locale fr-CA
|
|
492
|
+
.Ed
|
|
493
|
+
.Pp
|
|
494
|
+
Set the rendered artifact's locale at the file level so it stays
|
|
495
|
+
French no matter who runs
|
|
496
|
+
.Nm :
|
|
497
|
+
.Bd -literal -offset indent
|
|
498
|
+
nowline v1 locale:fr-CA
|
|
499
|
+
.Ed
|
|
500
|
+
.Sh SEE ALSO
|
|
501
|
+
.Xr nowline 5
|
|
502
|
+
.Pq Sy man 5 nowline
|
|
503
|
+
.Pp
|
|
504
|
+
.Lk https://github.com/lolay/nowline "Source code, issues, and full DSL reference"
|
|
505
|
+
.Pp
|
|
506
|
+
The
|
|
507
|
+
.Sy specs/
|
|
508
|
+
directory in the source repository documents the DSL grammar
|
|
509
|
+
.Pq Pa specs/dsl.md ,
|
|
510
|
+
the layout / rendering pipeline
|
|
511
|
+
.Pq Pa specs/rendering.md ,
|
|
512
|
+
the CLI surface
|
|
513
|
+
.Pq Pa specs/cli.md ,
|
|
514
|
+
and OSS milestones
|
|
515
|
+
.Pq Pa specs/milestones.md .
|
|
516
|
+
.Sh AUTHORS
|
|
517
|
+
.An Lolay Aq Mt packages@lolay.com
|