File: shards.adoc

package info (click to toggle)
shards 0.19.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 904 kB
  • sloc: makefile: 117
file content (218 lines) | stat: -rw-r--r-- 7,428 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
= shards(1)
:date: {localdate}
:shards_version: {shards_version}
:man manual: Shards Manual
:man source: shards {shards_version}

== NAME
shards - dependency manager for the Crystal Language

== SYNOPSIS
*shards* [_<general_options>_...] [_<command>_] [_<command_options>_...]

== DESCRIPTION
Manages dependencies for Crystal projects and libraries with reproducible
installs across computers and systems.

== USAGE
_shards_ requires the presence of a _shard.yml_ file in the project
folder (working directory). This file describes the project and lists
dependencies that are required to build it. See *shard.yml*(5) for more
information on its format. A default file can be created by running _shards init_.

Running _shards install_ resolves and installs the
specified dependencies. The installed versions are written into a
*shard.lock* file for using the exact same dependency versions when
running _shards install_ again.

If your shard builds an application, both *shard.yml* and *shard.lock*
should be checked into version control to provide reproducible
dependency installs.
If it is only a library for other shards to depend
on, *shard.lock* should _not_ be checked in, only *shard.yml*. It’s good
advice to add it to *.gitignore*.

== COMMANDS

If no _command_ is given, *install* command will be run by default.

To see the available options for a particular command, use _--help_ after the command.

*build* [_<targets>_] [_<build_options>_...]::
Builds the specified _<targets>_ in *bin* path. If no targets are specified,
all are built.
This command ensures all dependencies are installed, so it is not necessary
to run *shards install* before.
+
All _<build_options>_ following the command are delegated to *crystal build*.

*check*::
Verifies that all dependencies are installed and requirements are satisfied.
+
Exit status:
+
[horizontal]
*0*::: Dependencies are satisfied.
*1*::: Dependencies are not satisfied.

*init*::
Initializes a default _shard.yml_ in the current folder.

*install* [--frozen] [--without-development] [--production] [--skip-postinstall] [--skip-executables] [--jobs=N]::
Resolves and installs dependencies into the _lib_ folder. If not already
present, generates a _shard.lock_ file from resolved dependencies, locking
version numbers or Git commits.
+
Reads and enforces locked versions and commits if a _shard.lock_ file is
present. The *install* command may fail if a locked version doesn't match
a requirement, but may succeed if a new dependency was added, as long as it
doesn't generate a conflict, thus generating a new _shard.lock_ file.
+
--
--frozen:: Strictly installs locked versions from _shard.lock_. Fails if _shard.lock_ is missing.
--without-development:: Does not install development dependencies.
--production:: same as _--frozen_ and _--without-development_
--skip-postinstall:: Does not run postinstall of dependencies.
--skip-executables:: Does not install executables.
--jobs:: Number of repository downloads to perform in parallel (default: 8). Currently only for git.
--

*list* [--tree]::
Lists the installed dependencies and their versions.
+
Specifying _--tree_ arranges nested dependencies in a tree, instead of a flattened list.

*lock* [--update [<shards>...]]::
Resolves dependencies and creates or updates the _shard.lock_ file as per
the *install* command, but never installs the dependencies.
+
Specifying _--update_ follows the same semantics as the *update*
command.

*outdated* [--pre]::
Lists dependencies that are outdated.
+
When _--pre_ is specified, pre-release versions are also considered.

*prune*::
Removes unused dependencies from _lib_ folder.

*update* [<shards>...]::
Resolves and updates all dependencies into the _lib_ folder,
whatever the locked versions in the _shard.lock_ file.
Eventually generates a new _shard.lock_ file.
+
Specifying _shards_ will update these dependencies only, trying to be as
conservative as possible with other dependencies, respecting the locked versions
in the _shard.lock_ file.

*version* [_<path>_]::
Prints the current version of the shard located at _path_ (defaults to current
directory).

To see the available options for a particular command, use *--help*
after a command.

== GENERAL OPTIONS

--version::
  Prints the version of _shards_.

-h, --help::
  Prints usage synopsis.

--no-color::
  Disables colored output.

--local::
  Do not update remote repository cache. Instead, Shards will use the local copies
  already present in the cache (see *SHARDS_CACHE_PATH*).
  The command will fail if a dependency is unavailable in the cache.

-q, --quiet::
  Decreases the log verbosity, printing only warnings and errors.

-v, --verbose::
  Increases the log verbosity, printing all debug statements.

== INSTALLATION
Shards is usually distributed with Crystal itself. Alternatively, a
separate _shards_ package may be available for your system.

To install from source, download or clone
https://github.com/crystal-lang/shards[the repository] and run
*make CRFLAGS=--release*. The compiled binary is in _bin/shards_ and
should be added to *PATH*.

== Environment variables

SHARDS_OPTS::
Allows general options to be passed in as environment variable.
*Example*: _SHARDS_OPTS="--no-color" shards update_

SHARDS_CACHE_PATH::
Defines the cache location. In this folder, shards stores local copies of remote
repositories.
Defaults to _.cache/shards_ in the home directory (_$XDG_CACHE_HOME_ or _$HOME_)
or the current directory.

SHARDS_INSTALL_PATH::
Defines the location where dependencies are installed.
Defaults to _lib_.

SHARDS_BIN_PATH::
Defines the location where executables are installed.
Defaults to _bin_.

CRYSTAL_VERSION::
Defines the crystal version that dependencies should be resolved against.
Defaults to the output of _crystal env CRYSTAL_VERSION_.

SHARDS_OVERRIDE::
Defines an alternate location of _shard.override.yml_.

== Files

shard.yml::
Describes a shard project including its dependencies.
See *shard.yml*(5) for documentation.

shard.override.yml::
Allows overriding the source and restriction of dependencies. An alternative
location can be configured with the env var *SHARDS_OVERRIDE*.
+
The file contains a YAML document with a single *dependencies* key. It has the
same semantics as in *shard.yml*. Dependency configuration takes precedence over
the configuration in *shard.yml* or any dependency's *shard.yml*.
+
Use cases are local working copies, forcing a specific dependency version
despite mismatching constraints, fixing a dependency, checking compatibility
with unreleased dependency versions.

shard.lock::
Lockfile that stores information about the installed versions.
+
If your shard builds an application, *shard.lock* should be checked into version
control to provide reproducible dependency installs.
+
If it is only a library for other shards to depend on, *shard.lock* should _not_
be checked in, only *shard.yml*. It’s good advice to add it to *.gitignore*.

== REPORTING BUGS
Report shards bugs to <https://github.com/crystal-lang/shards/issues>

Crystal Language home page: <https://crystal-lang.org>

== COPYRIGHT
Copyright © {localyear} Julien Portalier.

http://www.apache.org/licenses/LICENSE-2.0[License Apache 2.0]

This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

== AUTHORS
Written by Julien Portalier and the Crystal project.

== SEE ALSO
*shard.yml*(5)