README [skip ci]

This commit is contained in:
Michiel Borkent 2020-09-01 23:46:01 +02:00
parent f5468b6150
commit 45e55ccf5c

View file

@ -209,44 +209,49 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
In addition to `clojure.core`, the following namespaces are available. Some are In addition to `clojure.core`, the following namespaces are available. Some are
available through pre-defined aliases in the `user` namespace, which can be available through pre-defined aliases in the `user` namespace, which can be
handy for one-liners. If not all vars are available, they are enumerated handy for one-liners. If not all vars are available, they are enumerated
explicitly. explicitly. If some important var is missing, an issue or PR is welcome.
- `babashka.curl` (see [here](#babashkanamespaces)) From Clojure:
- `clojure.core`
- `clojure.core.protocols`: `Datafiable`, `Navigable`
- `clojure.data` - `clojure.data`
- `clojure.string` aliased as `str`
- `clojure.set` aliased as `set`
- `clojure.edn` aliased as `edn`:
- `read-string`
- `clojure.datafy` - `clojure.datafy`
- `clojure.edn` aliased as `edn`
- `clojure.java.browse` - `clojure.java.browse`
- `clojure.java.shell` aliased as `shell`
- `clojure.java.io` aliased as `io`: - `clojure.java.io` aliased as `io`:
- `as-relative-path`, `as-url`, `copy`, `delete-file`, `file`, `input-stream`, - `as-relative-path`, `as-url`, `copy`, `delete-file`, `file`, `input-stream`,
`make-parents`, `output-stream`, `reader`, `resource`, `writer` `make-parents`, `output-stream`, `reader`, `resource`, `writer`
- `clojure.main`: `repl` - `clojure.java.shell` aliased as `shell`
- [`clojure.core.async`](https://clojure.github.io/core.async/) aliased as - `clojure.main`: `demunge`, `repl`, `repl-requires`
`async`. - `clojure.pprint`: `pprint` (currently backed by [fipp](https://github.com/brandonbloom/fipp)'s `fipp.edn/pprint`)
- `clojure.set` aliased as `set`
- `clojure.string` aliased as `str`
- `clojure.stacktrace` - `clojure.stacktrace`
- `clojure.test` - `clojure.test`
- `clojure.pprint`: `pprint` (currently backed by [fipp](https://github.com/brandonbloom/fipp)'s `fipp.edn/pprint`)
- `clojure.zip` - `clojure.zip`
- `clojure.core.protocols`: `Datafiable`, `Navigable`
- [`clojure.tools.cli`](https://github.com/clojure/tools.cli) aliased as `tools.cli` Additional libraries:
- [`babashka.curl`](https://github.com/borkdude/babashka.curl)
- [`bencode.core`](https://github.com/nrepl/bencode) aliased as `bencode`: `read-bencode`, `write-bencode`
- [`cheshire.core`](https://github.com/dakrone/cheshire) aliased as `json`
- [`clojure.core.async`](https://clojure.github.io/core.async/) aliased as
`async`. Also see [docs](https://github.com/borkdude/babashka#coreasync).
- [`clojure.data.csv`](https://github.com/clojure/data.csv) aliased as `csv` - [`clojure.data.csv`](https://github.com/clojure/data.csv) aliased as `csv`
- [`clojure.data.xml`](https://github.com/clojure/data.xml) aliased as `xml` - [`clojure.data.xml`](https://github.com/clojure/data.xml) aliased as `xml`
- [`cheshire.core`](https://github.com/dakrone/cheshire) aliased as `json` - [`clojure.tools.cli`](https://github.com/clojure/tools.cli) aliased as `tools.cli`
- [`cognitect.transit`](https://github.com/cognitect/transit-clj) aliased as `transit`
- [`clj-yaml.core`](https://github.com/clj-commons/clj-yaml) alias as `yaml` - [`clj-yaml.core`](https://github.com/clj-commons/clj-yaml) alias as `yaml`
- [`bencode.core`](https://github.com/nrepl/bencode) aliased as `bencode`: `read-bencode`, `write-bencode` - [`cognitect.transit`](https://github.com/cognitect/transit-clj) aliased as `transit`
- [`next.jdbc`](https://github.com/seancorfield/next-jdbc) aliased as `jdbc` (available under feature flag)
See the See the
[libraries](https://github.com/borkdude/babashka/blob/master/doc/libraries.md) [libraries](https://github.com/borkdude/babashka/blob/master/doc/libraries.md)
page for libraries that are not built-in, but which you can load via the classpath. page for libraries that are not built-in, but which you can load from source via
the `--classpath` option.
See the [build](https://github.com/borkdude/babashka/blob/master/doc/build.md) See the [build](https://github.com/borkdude/babashka/blob/master/doc/build.md)
page for namespaces that can be enabled via feature flags, if you want to page for built-in libraries that can be enabled via feature flags, if you want
compile babashka yourself. to compile babashka yourself.
A selection of Java classes are available, see `babashka/impl/classes.clj`. A selection of Java classes are available, see `babashka/impl/classes.clj`.
@ -349,7 +354,9 @@ $ bb example.clj
Command-line arguments can be retrieved using `*command-line-args*`. If you want Command-line arguments can be retrieved using `*command-line-args*`. If you want
to parse command line arguments, you may use the built-in `clojure.tools.cli` to parse command line arguments, you may use the built-in `clojure.tools.cli`
namespace or use the namespace (see
[docs](https://github.com/borkdude/babashka#parsing-command-line-arguments)) or
use the
[nubank/docopt](https://github.com/borkdude/babashka/blob/master/doc/libraries.md#nubankdocopt) [nubank/docopt](https://github.com/borkdude/babashka/blob/master/doc/libraries.md#nubankdocopt)
library. library.
@ -497,7 +504,7 @@ Note that `*input*` is not available in preloads.
## Classpath ## Classpath
Babashka accepts a `--classpath` option that will be used to search for Babashka accepts a `--classpath` option that will be used to search for
namespaces and load them: namespaces when requiring them:
``` clojure ``` clojure
$ cat src/my/namespace.clj $ cat src/my/namespace.clj
@ -509,7 +516,7 @@ $ bb --classpath src --main my.namespace
Hello from my namespace! Hello from my namespace!
``` ```
So if you have a larger script with a classic Clojure project layout like If you have a larger script with a classic Clojure project layout like
```shellsession ```shellsession
$ tree -L 3 $ tree -L 3
@ -524,7 +531,8 @@ $ tree -L 3
├── test_main.clj ├── test_main.clj
└── test_utilities.clj └── test_utilities.clj
``` ```
Then you can tell Babashka to include both the `src` and `test`
then you can tell babashka to include both the `src` and `test`
folders in the classpath and start a socket REPL by running: folders in the classpath and start a socket REPL by running:
```shellsession ```shellsession