ammonite-ops_2.11

ammonite-ops

License

License

MIT
GroupId

GroupId

com.lihaoyi
ArtifactId

ArtifactId

ammonite-ops_2.11
Last Version

Last Version

1.6.7-2-c28002d
Release Date

Release Date

Type

Type

jar
Description

Description

ammonite-ops_2.11
ammonite-ops
Project URL

Project URL

https://github.com/lihaoyi/Ammonite
Source Code Management

Source Code Management

https://github.com/lihaoyi/ammonite

Download ammonite-ops_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/com.lihaoyi/ammonite-ops_2.11/ -->
<dependency>
    <groupId>com.lihaoyi</groupId>
    <artifactId>ammonite-ops_2.11</artifactId>
    <version>1.6.7-2-c28002d</version>
</dependency>
// https://jarcasting.com/artifacts/com.lihaoyi/ammonite-ops_2.11/
implementation 'com.lihaoyi:ammonite-ops_2.11:1.6.7-2-c28002d'
// https://jarcasting.com/artifacts/com.lihaoyi/ammonite-ops_2.11/
implementation ("com.lihaoyi:ammonite-ops_2.11:1.6.7-2-c28002d")
'com.lihaoyi:ammonite-ops_2.11:jar:1.6.7-2-c28002d'
<dependency org="com.lihaoyi" name="ammonite-ops_2.11" rev="1.6.7-2-c28002d">
  <artifact name="ammonite-ops_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.lihaoyi', module='ammonite-ops_2.11', version='1.6.7-2-c28002d')
)
libraryDependencies += "com.lihaoyi" % "ammonite-ops_2.11" % "1.6.7-2-c28002d"
[com.lihaoyi/ammonite-ops_2.11 "1.6.7-2-c28002d"]

Dependencies

compile (2)

Group / Artifact Type Version
com.lihaoyi : os-lib_2.11 jar 0.2.9
org.scala-lang.modules : scala-collection-compat_2.11 jar 0.3.0

Project Modules

There are no modules declared in this project.

Ammonite Build Status Build (Windows) Gitter Chat Patreon

This is where the code for the Ammonite project lives:

If you use Ammonite and like it, you will probably enjoy the following book by the Author:

Hands-on Scala has uses Ammonite extensively throughout the book, using Ammonite to accomplish a lot of useful tasks: exploring third party libraries or writing parallel web-crawlers in the REPL, and implementing entire programming languages in Ammonite Scala Scripts. Hands-on Scala is a great way to level up your skills in Scala in general and Ammonite in particular.

If you want to learn more about Ammonite or how to use it, check out the links above, or ask on the Gitter Channel. The remainder of this document is developer-docs for people who want to work on the Ammonite source code itself.

If you are interested in living more "on the edge", we also publish artifacts and the doc-site every commit; the doc-site is available at

And contains instructions on how to download the per-commit executable or depend on the per-commit maven artifact.

If you use Ammonite and like it, please support us by donating to our Patreon:

Developer Docs

The layout of the repository is roughly:

  • ops/ is Ammonite-Ops
  • amm/ is Ammonite's core, REPL and script runner
  • shell/ is Ammonite-Shell
  • terminal/ is the JLine re-implementation used by Ammonite-REPL to provide syntax highlighting and multiline editing
  • readme/ is the source code for the Documentation, written in Scalatex.
  • published/ is a synthetic project used for publishing, excluding the readme and integration tests

For more detailed information, check out the internals documentation for high-level overviews of some interesting facets of the codebase

Common Commands

Manual Testing

Although most features should be unit tested, it's still useful to fire up a REPL from the current codebase to see things work (or not). There are a variety of shells you can spin up for testing different things:

  • mill -i -w terminal[2.12.6].test.run is useful for manual testing the terminal interaction; it basically contains a minimal echo-anything terminal, with multiline input based on the count of open- and closed-parentheses. This lets you test all terminal interactions without all the complexity of the Scala compiler, classloaders, etc. that comes in repl/

  • mill -i -w amm[2.12.6].run brings up the Ammonite-REPL using the source code in the repository, and automatically restarts it on-exit if you have made a change to the code. Useful for manual testing both of amm/ as well as ops/, since you can just import ammonite.ops._ and start using them. Note that this does not bring in filesystem utilities like the wd variable, cd! command. You can also pass in the path to a .sc file to run it using Ammonite's script runner

  • mill -i -w shell[2.12.6].test.run brings up a fully-loaded shell with all filesystem utilities included: wd, cd!, autocomplete for filesystem paths, and more. This uses readme/resources/example-predef.scala instead of your default predef, for easier experimentation and development.

  • sbt -i -w integration[2.12.6].test.run runs the trivial main method in the integration subproject, letting you manually test running Ammonite programmatically, whether through run or debug

  • mill -i amm[2.12.6].assembly creates an assembly at out/amm/2.12.6/assembly/dest/out.jar that you can then use to test: start a REPL, run scripts, etc. in a standalone environment without being wrapped in Mill build tool

  • mill -i amm[2.12.6].launcher creates a launcher script at out/amm/2.12.6/launcher/dest/run that can also be used to run Ammonite outside of the Mill build tool.

Automated Testing

While working on an arbitrary xyz subproject, sbt ~xyz/test runs tests after every change. amm/test can be a bit slow because of the amount of code it compiles, so you may want to specify the test manually via amm/test-only -- ammonite.TestObject.path.to.test.

  • ops/test tests the filesystem operations, without any REPL present
  • amm/test tests the Ammonite-REPL/Script-runner, without filesystem-shell integration.
  • terminal/test tests the readline re-implementation: keyboard navigation, shortcuts, editing, without any filesystem/scala-repl logic
  • shell/test tests the integration between the standalone ops/ and amm/ projects: features like cd!/wd, path-completion, ops-related pretty-printing and tools
  • integration/test kicks off the integration tests, which bundle amm/ and shell/ into their respective jars and invoke them as subprocesses. Somewhat slow, but exercises all the command-line-parsing stuff that the other unit tests do not exercise, and makes sure that everything works when run from .jars instead of loose class-files

Publishing

  • Publishing is automatic, controlled by scripts in the ci/ folder.

  • Every commit that lands in master will publish a new unstable version, that you can already use and download. This includes publishing the unstable version to maven central to the snapshot-commit-uploads tag, and updating the documentation-site so it's Unstable Version download instructions to point to it, though the "main" download/install instructions in the doc-site will not be changed.

  • Every commit that lands in master with a tag will re-publish a stable version to maven central and upload a new versioned release (using the tag as the version) and the doc-site is updated so the main download/install instructions point at the new published stable version.

In general, if you land a change in master, once CI completes (1-2hrs) you should be able to download it via the Unstable Version instructions and make use of your changes standalone or in an SBT project.

Occasionally, the CI job building and publishing one of the above steps flakes and fails, and needs to be re-run through the travis web interface.

Issue Tags

I've started tagging open issues in the issue tracker to try and keep things neat. This is what the various tags mean:

Each issue should only have one of these:

  • bug: this behavior clearly wrong, and needs to be fixed
  • enhancement: something relatively speccable, that can be worked on, finished, and will make Ammonite better
  • wishlist: could be totally awesome, but we're uncertain if it is worth doing at all, what it would look like, or if it will ever reach a "finished" state.

And possibly:

  • help wanted: I don't have context, hardware, or for some other reason am unlikely to ever do this. But I know people out there care, so one of you should step up and fix it.

Contribution Guidelines

  • All code PRs should come with: a meaningful description, inline-comments for important things, unit tests (positive and negative), and a green build in CI
  • Try to keep lines below 80 characters width, with a hard limit of 100 characters.
  • PRs for features should generally come with something added to the Documentation, so people can discover that it exists
  • Be prepared to discuss/argue-for your changes if you want them merged! You will probably need to refactor so your changes fit into the larger codebase
  • If your code is hard to unit test, and you don't want to unit test it, that's ok. But be prepared to argue why that's the case!
  • It's entirely possible your changes won't be merged, or will get ripped out later. This is also the case for my changes, as the Author!
  • Even a rejected/reverted PR is valuable! It helps to explore the solution space, and know what works and what doesn't. For every line in the repo, at least three lines were tried, committed, and reverted/refactored, and more than 10 were tried without committing.
  • Feel free to send Proof-Of-Concept PRs that you don't intend to get merged.

Versions

Version
1.6.7-2-c28002d
1.6.7-1-a44339b
1.6.7-0-0ea3902
1.6.7
1.6.6-10-5fa74ab
1.6.6-8-7a0fd41
1.6.6-7-5e5461b
1.6.6-6-7e89968
1.6.6-2-edaf2a9
1.6.6-1-05ecc9b
1.6.6-0-2b13f8a
1.6.6
1.6.5-10-649d2b3
1.6.5-7-189109d
1.6.5-1-00a8cbc
1.6.5-0-8defb47
1.6.5
1.6.4-6-b9f5548
1.6.4-3-73c2d69
1.6.4-2-499fc2a
1.6.4-1-50418a9
1.6.4-0-42ab1ab
1.6.4
1.6.3-6-2fdd2df
1.6.3-5-c25dc3a
1.6.3-4-f816268
1.6.3-1-42cb857
1.6.3-0-c77705a
1.6.3
1.6.2-2-5ad9ae5
1.6.2-0-cd5c4ce
1.6.2
1.6.1-3-377cd57
1.6.1-2-3078e35
1.6.0
1.5.0-4-6296f20
1.5.0
1.4.4-6-afec827
1.4.4
1.4.3
1.4.2-2-577585b
1.4.2-1-c724b9b
1.4.2
1.4.1
1.4.0
1.3.3-6-2b44e33
1.3.3-5-8e984a2
1.3.3-4-972e991
1.3.3-4-27f8ed0
1.3.3
1.3.2-4-5b2f1ed
1.3.2-2-3da4986
1.3.2
1.3.1-0-f283950
1.3.1
1.3.0
1.2.1-16-48ce533
1.2.1-15-4121944
1.2.1-14-c224223
1.2.1-13-b5082b2
1.2.1-12-bc459e3
1.2.1-8-67e43cf
1.2.1-6-9f55ef3
1.2.1-5-156537a
1.2.1-4-97ec0e8
1.2.1-2-6c94d82
1.2.1-1-e12a845
1.2.1-0-6d84a9b
1.2.1
1.2.0
1.1.2-41-477d541
1.1.2-40-af0a31e
1.1.2-39-903d7d2
1.1.2-37-53fcfcd
1.1.2-30-53edc31
1.1.2-29-2e6570e
1.1.2-28-e8b4996
1.1.2-27-c4ab498
1.1.2-25-5ef5ee1
1.1.2-21-df41270
1.1.2-17-7d454d7
1.1.2-17-e08bd48
1.1.2-11-82361da
1.1.2-9-e9dee62
1.1.2-8-d28a36d
1.1.2-7-b6ffcf0
1.1.2-6-27842d9
1.1.2-4-d5e5531
1.1.2-1-2572d9c
1.1.2
1.1.1-2-62d9047
1.1.1-1-5a9939d
1.1.1
1.1.0-48-e58183c
1.1.0-22-1cbf71e
1.1.0-21-ccc8024
1.1.0-18-0dc8a8e
1.1.0-17-6c3552c
1.1.0-16-147fdfe
1.1.0-14-037b8eb
1.1.0-13-7446d8f
1.1.0-12-f07633d
1.1.0-11-6e72d49
1.1.0-11-1d8b039
1.1.0-7-33b728c
1.1.0-6-c2b03b5
1.1.0-5-7191c70
1.1.0-4-973d84b
1.1.0-3-73d5734
1.1.0-2-1288b4d
1.1.0-1-6221cbc
1.1.0
1.0.5-26-c8a9dd3
1.0.5-25-b3b801e
1.0.5-23-f4a534b
1.0.5-22-16b9cde
1.0.5-21-2f995c1
1.0.5-15-db11210
1.0.5-14-daf7e0d
1.0.5-11-70bf3f2
1.0.5-10-a673ea0
1.0.5-8-ac754ee
1.0.5-7-f032887
1.0.5-5-98f2868
1.0.5-4-c0cdbaf
1.0.5-1-819bc80
1.0.5
1.0.4-0-8404911
1.0.4
1.0.3-52-6dbd4ab
1.0.3-52-ad4629d
1.0.3-49-7fa03d0
1.0.3-39-9db2c21
1.0.3-38-5726e14
1.0.3-38-e7010a3
1.0.3-36-efa67ed
1.0.3-35-b6085be
1.0.3-34-24e8714
1.0.3-33-2d70b25
1.0.3-32-3c3d657
1.0.3-31-51763e6
1.0.3-30-ded4f42
1.0.3-28-b111386
1.0.3-27-985ecaf
1.0.3-26-96ea548
1.0.3-25-233d189
1.0.3-24-9251456
1.0.3-23-b07c6dc
1.0.3-22-a5855b7
1.0.3-21-05b5d32
1.0.3-20-75e58ac
1.0.3-19-d595c71
1.0.3-18-9876e2e
1.0.3-17-a9b5ae3
1.0.3-16-5a4af7b
1.0.3-15-1d378f9
1.0.3-14-ad44c9f
1.0.3-10-4311ac9
1.0.3-9-b0b068a
1.0.3-7-1dada91
1.0.3-6-4896e9f
1.0.3-6-05e8fb9
1.0.3-1-cd346fb
1.0.3
1.0.2-5-43b3ca9
1.0.2-4-73a8741
1.0.2-3-79f3f8b
1.0.2-2-142491d
1.0.2-1-f40ad4c
1.0.2
1.0.1-7-865402c
1.0.1-6-6d2db3a
1.0.1-4-b250f64
1.0.1-3-468b67b
1.0.1-1-d2e04ce
1.0.1
1.0.0-15-1ea8ed9
1.0.0-14-de953a2
1.0.0-13-5091a87
1.0.0-13-6b427ef
1.0.0-11-8359b9c
1.0.0-10-5dc7e0b
1.0.0-9-adc1ffd
1.0.0
1.0.0-RC9
1.0.0-RC8
1.0.0-RC7
1.0.0-RC6
1.0.0-RC5
1.0.0-RC4
1.0.0-RC3
1.0.0-RC2
1.0.0-RC1
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.0
0.6.2
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
COMMIT-ffdaa96
COMMIT-ff563f2
COMMIT-fbd9e49
COMMIT-fabce69
COMMIT-f91419e
COMMIT-f952eb7
COMMIT-f77f1c2
COMMIT-f08ca71
COMMIT-f6e34a8
COMMIT-f6a1903
COMMIT-f3fb8cd
COMMIT-f0e9b0a
COMMIT-efd305b
COMMIT-e139450
COMMIT-e020311
COMMIT-e93df57
COMMIT-e45eae5
COMMIT-e37c568
COMMIT-e34b984
COMMIT-e15a426
COMMIT-e9fda7d
COMMIT-e4e73e7
COMMIT-e0fb186
COMMIT-e00c88b
COMMIT-dfe5927
COMMIT-de2b9f2
COMMIT-dc37a7f
COMMIT-db07f18
COMMIT-da1e941
COMMIT-d83cfae
COMMIT-d81fb74
COMMIT-d32e120
COMMIT-d8b32a3
COMMIT-d7e3a86
COMMIT-d7b5165
COMMIT-d6fdf82
COMMIT-d6b3604
COMMIT-d5fa784
COMMIT-d2e00a9
COMMIT-cf4dd5a
COMMIT-cd50520
COMMIT-cc9941d
COMMIT-cbf3b24
COMMIT-c810260
COMMIT-c85c7d7
COMMIT-c8c1ded
COMMIT-c4dd64f
COMMIT-c2f90da
COMMIT-bfa54a5
COMMIT-bf04f83
COMMIT-bc30c11
COMMIT-bb6e12f
COMMIT-babf816
COMMIT-ad2d7bc
COMMIT-ac93d7c
COMMIT-abf8df7
COMMIT-aaaaccd
COMMIT-7784517
COMMIT-7425320
COMMIT-6556555
COMMIT-4180332
COMMIT-3383831
COMMIT-3119490
COMMIT-980241f
COMMIT-0922882
COMMIT-0872868
COMMIT-832376b
COMMIT-722391e
COMMIT-297573b
COMMIT-242627f
COMMIT-90107d1
COMMIT-057440b
COMMIT-49775a8
COMMIT-30982ec
COMMIT-20878f3
COMMIT-7837dbd
COMMIT-7608d6f
COMMIT-7265b89
COMMIT-6999ec7
COMMIT-6993be5
COMMIT-6883f48
COMMIT-6079a1b
COMMIT-4052e0d
COMMIT-4032eee
COMMIT-3467b1b
COMMIT-2974b1e
COMMIT-965ac46
COMMIT-963de4e
COMMIT-954ba33
COMMIT-911db21
COMMIT-849e5e7
COMMIT-729f6e0
COMMIT-717eac5
COMMIT-690b09f
COMMIT-666f496
COMMIT-641b527
COMMIT-625d760
COMMIT-586ebfa
COMMIT-0489efd
COMMIT-335b657
COMMIT-297fe8a
COMMIT-246ed56
COMMIT-187b3c7
COMMIT-184b723
COMMIT-180d2cd
COMMIT-153d7b4
COMMIT-102d67b
COMMIT-0097dc5
COMMIT-096f00a
COMMIT-90afc77
COMMIT-88e8322
COMMIT-88cbd8a
COMMIT-85bb3cc
COMMIT-82ef524
COMMIT-81da8b4
COMMIT-67a4081
COMMIT-66e3ced
COMMIT-65f4908
COMMIT-57db3a8
COMMIT-56aff4a
COMMIT-55bdace
COMMIT-54cfca3
COMMIT-49e007d
COMMIT-49d9e0c
COMMIT-47f5661
COMMIT-44c5603
COMMIT-38f6574
COMMIT-33d35a7
COMMIT-31d97c4
COMMIT-30f4c5a
COMMIT-30d6715
COMMIT-21c26dc
COMMIT-20ff273
COMMIT-16c597e
COMMIT-13aee83
COMMIT-010fa68
COMMIT-10ddba9
COMMIT-9f8f9df
COMMIT-9ef47e5
COMMIT-9d0d16f
COMMIT-9cb3804
COMMIT-8c3248e
COMMIT-8bb102b
COMMIT-8af3ceb
COMMIT-8b103a7
COMMIT-8a85582
COMMIT-7fb934a
COMMIT-7f74ca2
COMMIT-7e7622a
COMMIT-7e9b82d
COMMIT-7d7b824
COMMIT-7d2a7bb
COMMIT-7af9273
COMMIT-7b06800
COMMIT-6f558e9
COMMIT-6f0e5a9
COMMIT-6d5abe9
COMMIT-6bc4ddd
COMMIT-6b4d463
COMMIT-5d5467d
COMMIT-5d0aa4f
COMMIT-5ad48f3
COMMIT-5abc379
COMMIT-5a86b5d
COMMIT-5a44e34
COMMIT-4e858ab
COMMIT-4d2a824
COMMIT-4caf560
COMMIT-3efe1a1
COMMIT-3ebf9df
COMMIT-3d74481
COMMIT-3ccb6b1
COMMIT-3bb0991
COMMIT-3a5b96d
COMMIT-3a4c0f1
COMMIT-3a2b4b5
COMMIT-2fef389
COMMIT-02f0986
COMMIT-2eae411
COMMIT-2dc0ae6
COMMIT-2ab8633
COMMIT-1f834a7
COMMIT-1e9d917
COMMIT-1de96ff
COMMIT-1dd5a36
COMMIT-1d15ce3
COMMIT-1ad6535
COMMIT-01b67ac
COMMIT-1b2e268
COMMIT-1a191ad
COMMIT-0eb3b0e
COMMIT-0df7f24
COMMIT-0c03b31
COMMIT-0ae4bc3
COMMIT-0aaed87
COMMIT-0b4bc39
COMMIT-0a6fda9
COMMIT-0a3e2b3
COMMIT-b742940
COMMIT-b640854
COMMIT-b456824
COMMIT-b8325cb
COMMIT-b114a80
COMMIT-b77b18b
COMMIT-a8602d5
COMMIT-a8021a4
COMMIT-a72a9a0
COMMIT-a9b7887
COMMIT-a6bc113
COMMIT-a0d5f97