Commit Graph

139 Commits

Author SHA1 Message Date
KtorZ 139226cdab Support interactive blueprint parameter application. 2023-08-19 13:39:39 -04:00
rvcas 690e41261e
chore: Release 2023-08-16 23:30:21 -04:00
rvcas 2600937447
chore: cargo fmt 2023-08-16 22:56:22 -04:00
logicalmechanism 050c41c8dc tx simulate returns a vector of exbudgets now 2023-08-16 22:37:00 -04:00
microproofs 55887d3a45 fix: decode should always print to textual 2023-08-01 00:47:29 -04:00
Cainã Costa 49cc76cf77 chore: cargo fmt 2023-07-25 14:00:29 -04:00
Cainã Costa 2cecb099d7 feat: add a generator for shell completions 2023-07-25 14:00:29 -04:00
rvcas 152e847e26
chore: no longer need this env var 2023-07-24 10:30:02 -04:00
Cainã Costa d19a39239d fix: fix clippy error 2023-07-24 10:24:37 -04:00
Pi Lanningham 27c0f25606 Add a blueprint hash command
Similar to blueprint address and blueprint policy, this just prints the
hash of the validator; useful if you need the hash, and you don't want
to pipe the address to a bech32 decoder and juggle the hex.
2023-07-21 22:57:31 -04:00
rvcas 97acd6d7bd
chore: Release 2023-07-15 21:37:10 -04:00
rvcas 621017bd93
chore: Release 2023-07-14 10:55:13 -04:00
rvcas a36cc7d631
fix: cpu and mem in white terminals, cyan makes things stand out nicely closes #415 2023-07-11 18:50:27 -04:00
Pi Lanningham c10f0e53df cargo fmt 2023-07-01 16:17:10 -04:00
Pi Lanningham 4a8cb72708 Add a blueprint policy command
Computes the policy ID of a minting policy; added guards for blueprint address to check that it's not a minting policy; Wasn't 100% sure where the errors should live, so I'm happy to move them if there's objections
2023-07-01 16:17:10 -04:00
rvcas 90ff211205
chore: Release 2023-06-23 19:41:14 -04:00
rvcas 619b73d03e
feat: enhance new command 2023-06-23 19:40:11 -04:00
rvcas 85d82e5aec
chore: Release 2023-06-13 21:24:41 -04:00
rvcas 06079fa57e
fix: wow 2023-06-13 21:03:16 -04:00
microproofs 379c2fe2bf chore: Release 2023-06-13 20:32:22 -04:00
rvcas 878fd4de48 feat: include column number in location 2023-06-13 20:30:43 -04:00
rvcas 44e066f907 feat: add a panic hook, present issue link 2023-06-13 20:30:43 -04:00
microproofs c5af6e0be3 chore: Release 2023-06-08 19:34:51 -04:00
rvcas 41a08e4a06
chore: re-add nix stuff from @waalge
Co-authored-by: waalge
2023-06-07 17:16:56 -04:00
Pi Lanningham fbec4a9385 Update docs.rs
The doc comment was long, leading to an incorrect description on the command line
2023-06-02 02:25:04 -04:00
rvcas cb9a140601
chore: Release 2023-06-02 00:34:07 -04:00
rvcas 335cc0c8bc
feat(cli): rework uplc subcommands
closes #553

* rename flat to encode
* rename unflat to decode
* alias both to their old names
* both only print to stdout
  use can pipe to file
* split cbor and hex flags
* hex flag works for either cbor or flat
* encode takes --to flag
  [name, named-debruijn, debruijn]
* decode takes --from flag
  [name, named-debruijn, debruijn]
2023-06-01 23:50:59 -04:00
Micah Kendall ccb2d0b7ee urgent nix patch 2023-05-19 18:28:07 -04:00
rvcas d68d4656df
feat(aiken-new): output a github action
- bonus: include git short sha in version

closes #515
2023-05-18 01:33:03 -04:00
microproofs 8e60234562 chore: Release 2023-05-17 18:04:45 -04:00
rvcas f2d8c8938c
chore: Release 2023-05-14 21:25:29 -04:00
rvcas e1a75391a1
chore: Release 2023-05-09 23:16:59 -04:00
microproofs b1728b57b8 chore: Release 2023-04-28 17:11:56 -04:00
KtorZ 4269cf20b0
Fix erroneous "aiken new" command's output instructions
Fixes #505.
2023-04-20 14:38:48 +02:00
rvcas 3182dac908
chore: Release 2023-04-17 10:53:30 -04:00
rvcas 3d0fa1a5f6
chore: Release 2023-04-16 16:49:08 -04:00
rvcas 63ddef7efb
chore: Release 2023-04-13 13:37:12 -04:00
rvcas 12e8ebdf4f
chore: revert version bumps 2023-04-13 13:03:43 -04:00
KtorZ 067e39286d
Bump versions to 1.0.0-alpha, update CHANGELOG. 2023-04-13 17:35:21 +02:00
KtorZ 00550f8ddb
Add myself as co-authors for some of the project's crate
Forgot to do it before, and noticing now :D
2023-04-13 17:25:21 +02:00
KtorZ e2c78bdd3b
Add min rust-version to crates
So that people runs into better errors if they try installing from source with an 'obsolete' rust compiler.
2023-04-13 17:24:44 +02:00
KtorZ 74a7257ec9
Add some more instructions to 'blueprint apply' command help text. 2023-04-13 12:23:20 +02:00
KtorZ 4799af3242
Rework 'blueprint apply' command and wrap up wiring up validation.
The apply command now works only from a serialized CBOR data (instead of a UPLC syntax). So it is no longer possible to specify arbitrary cbor terms through the CLI. I believe it to be an acceptable limitation for now; especially given that Aiken will never generate blueprints with non-data terms at the interface boundary.
2023-04-08 08:57:40 +02:00
KtorZ cdc7ebf9a0
Remove now-unnecessary blueprint generics.
These were needed before as a way to _partially deserialize_
  blueprints. Indeed, some commands required accessing information of
  the blueprint, but not necessarily the schema. So out of laziness (or
  cleverness?), we only deserialized validators as serde::Value and
  achieved that through the use of generics.

  Now that validators and schemas have proper deserialisers, we can
  simply deserialize a blueprint.

  TODO: Our serialisation/deserialisation is safe with regards to
  itself; i.e. it roundtrips. However, we only supports a subset of the
  specified blueprint format. For example, we would fail to deserialize
  blueprints that have inline data-schemas (we only use references).
2023-04-08 08:53:51 +02:00
KtorZ 6422027c6c
Fix README template for newly generated projects, and hello, world 2023-03-18 22:23:55 +01:00
KtorZ 451737237e Fix blueprint generation for recursive types.
This was a bit tricky and I ended up breaking things down a lot and
  trying different path. This commit is the result of the most
  satisfying one.

  It introduces a new 'concept' and types: Definitions and Reference.
  These elements are meant to reflect JSON pointers and JSON-schema
  definitions which we now use for pretty much all user-defined
  data-types.

  In fact, Schemas are no longer inlined, but are always referencing
  some schema under "definitions".

  This indirection is necessary in order to cope with recursive types.
  And while it's only truly necessary for recursive types, using it
  consistently makes it both easier to produce and easier to consume.

  ---

  The blueprint generation for recursive types here also works thanks to
  the 'Definitions' data-structure wrapper around a BTreeMap. This uses
  a strategy where:

  (1) schemas are only generated if they haven't been seen before
  (2) schemas are marked as seen BEFORE actually being generated (to
  effectively stop a recursive generation).

  This relies on one important aspect: the key must be uniquely
  identifying a given schema. Which means that we have to monomorphize
  data-types with generic parameters also here, and use keys that are
  specialized in one data-type.

  ---

  In this large overhaul we've also lost one thing which I didn't bother
  re-introducing yet to keep the work manageable: title for record
  fields. Before, we use to pull those from record constructor when
  available, yet now, every record constructor has been replaced by a
  `$ref`. We could theoritically attach a title to the reference. I'll
  try to quickly add that in a later commit.
2023-03-12 12:44:49 -04:00
rvcas f8545854fc
feat: json output for uplc eval 2023-03-08 10:19:36 +01:00
KtorZ cb11b21c9f
Update dependencies
In particular, tempfile >= 3.4.0 to remove the vulnerability on remove_dir_all
2023-03-08 10:17:22 +01:00
rvcas c3175e2fc9
fix: some breaking changes from clap v4 2023-03-06 13:16:33 -05:00
rvcas 1902a2d56c
chore: update all deps 2023-03-06 13:13:59 -05:00
rvcas 1f8535e76e
chore: update some deps 2023-03-06 11:09:44 -05:00
rvcas 9f587e802c chore: update comment 2023-03-03 20:57:20 -05:00
rvcas e2dc4ec6c8 feat: implement convert command 2023-03-03 20:57:20 -05:00
rvcas 812ffb30f0 feat(cli): wire together a new command for convert 2023-03-03 20:57:20 -05:00
KtorZ a46a9fca41
Only use colors & text decorations on ANSI-capable terminals.
Fixes #404.
2023-02-26 13:19:03 +01:00
rvcas 0066cc61cc
Release 0.0.29
aiken@0.0.29
aiken-lang@0.0.29
aiken-lsp@0.0.29
aiken-project@0.0.29
uplc@0.0.29

Generated by cargo-workspaces
2023-02-23 19:04:18 -05:00
rvcas e611d1ee7a
chore(cmd::new): update validator definition in generated readme 2023-02-20 15:51:12 -05:00
rvcas b55726c90f feat(project): remove Error::List and use Vec<Error> 2023-02-20 15:30:25 -05:00
KtorZ 45454ced01 Make tracing configurable, when relevant.
Tracing is now turn OFF by default when:

  - building project
  - building documentation
  - building dependencies

  It can be turned ON only when building project using `--keep-traces`.
  That means it's not possible to build dependencies with traces. The
  address `--rebuild` flag will also rebuild without traces.

  Tracing is however turn ON by default when:

  - checking the project (and running tests).

  In this scenario, tracing can be disabled using `--no-traces` (if for
  example, one want to analyze the execution units of specific functions
  without having to manually remove traces from code).
2023-02-16 20:29:41 -05:00
KtorZ 3204322da6
Fix validator lookup by title.
We want the lookup to yield a result when there's only a single
  validator; and no title is provided. So that users can simply do
  'aiken address' in their project if it's unambiguous. The validator's
  name is only required to disambiguate between multiple validators.

  I also noticed that the order of arguments in with_validator was
  wrong. Somehow.
2023-02-16 10:28:27 +01:00
rvcas a311531508 fix(cli): aiken address 2023-02-16 00:05:55 -05:00
KtorZ 014c7a3d73
Fix error display in tx simulate. 2023-02-15 09:42:46 +01:00
KtorZ 428b5f2b37
Align output of `tx simulate` with other Aiken's commands.
And also return a structured output as JSON, so it's more easily used
  by other tools.

  ```
       Parsing script context
    Simulating 78ec148ea647cf9969446891af31939c5d57b275a2455706782c6183ef0b62f1
      Redeemer Spend → 0

  {"mem":151993,"cpu":58180696}
  ```
2023-02-14 16:50:55 +01:00
KtorZ 4aa92a6d5e
Use positional argument for blueprint 'apply' command 2023-02-07 11:42:42 +01:00
KtorZ 9b8ff590b8
Implement 'blueprint apply' command.
This is still a bit clunky as the interface is expecting parameters in UPLC form and we don't do any kind of verification. So it is easy to shoot oneself in the foot at the moment (for example, to apply an integer into something that should have received a data). To be improved later.
2023-02-04 11:39:55 +01:00
rvcas a365649360 chore: clippy autofix 2023-02-01 18:53:11 -05:00
KtorZ daee8e39d6
Implement new command: address
This calculates a validator's address from validators found in a blueprint. It also provides a convenient way to attach a delegation part to the validator if needs be. The command is meant to provide a nice user experience and works 'out of the box' for projects that have only a single validator. Just call 'aiken address' to get the validator's address.

  Note that the command-line doesn't provide any option to configure the target network. This automatically assumes testnet, and will until we deem the project ready for mainnet. Those brave enough to run an Aiken's program on mainnet will find a way anyway.
2023-01-31 15:39:40 +01:00
KtorZ f8970ecb9e
Move UPLC dump into separate function + log event.
```
    Compiling aiken-lang/stdlib 43d8e740ffdf5febc59e51b7f0d5f8506115340c (examples/hello_world/build/packages/aiken-lang-stdlib)
    Compiling aiken-lang/hello_world 1.0.0 (examples/hello_world)
   Generating project's blueprint (examples/hello_world/plutus.json)
    Exporting UPLC (examples/hello_world/artifacts)
  ```
2023-01-31 09:48:44 +01:00
KtorZ 5683d19a4c
Refactor build steps to generate blueprints instead
The blueprint is generated at the root of the repository and is
  intended to be versioned with the rest. It acts as a business card
  that contains many practical information. There's a variety of tools
  we can then build on top of open-source contracts. And, quite
  importantly, the blueprint is language-agnostic; it isn't specific to
  Aiken. So it is really meant as an interop format within the
  ecosystem.
2023-01-31 09:48:38 +01:00
KtorZ c440026e36
Fix generated projects' README + rename 'certify' -> 'publish'
This hints to how this particular purpose is about publishing
  certificate (either delegation or key de-registration).
2023-01-18 16:48:42 +01:00
rvcas 38734361d0 feat: make part of summary red if errors exist 2023-01-16 15:17:39 -05:00
KtorZ d2c03b0094
Remove restriction on the project's package name
There are restrictions regarding how modules are called, but given that packages are tight to repositories anyway; there's no way someone can publish and use an aiken package on 'aiken-lang' without being part of the organization. So the restriction on the command-line is pointless. Plus, it prevents us from using 'aiken-lang' as a placeholder name for tutorials.
2023-01-14 23:47:57 +01:00
KtorZ 219e81cb75
Add 'packages upgrade' command. 2023-01-14 23:29:28 +01:00
KtorZ 6286132a3e
Rename sub-command 'deps' → 'packages'
Slightly more readable and self-explanatory.
2023-01-14 23:29:28 +01:00
KtorZ 38df9a586e
Add new 'deps add' command
This makes it easier to add new dependencies, without having to
  manually edit the `aiken.toml` file.

  The command is accessible via two different paths:

  - aiken deps add

  or simply

  - aiken add

  for this is quite common to find at the top-level of the command-line,
  and, we still want to keep commands for managing dependencies grouped
  under a command sub-group and not all at the top-level. So we're
  merely promoting that one for visibility.
2023-01-14 23:29:28 +01:00
KtorZ d4f905b1db
Also move some associated methods to the 'Config' module
And refactor the 'new' command implementation.
2023-01-14 23:29:28 +01:00
KtorZ 0771ab24bd
Move 'PackageName' and associated methods in its own module.
This is a bit cleaner, as the 'cmd/new' had many on-the-fly functions
  which are better scoped inside this module.

  Plus, it plays nicely with the std::str::FromStr trait definition.
2023-01-14 23:29:28 +01:00
KtorZ db22395764 Add new command group 'deps' and 'clear-cache' command.
This allows in case of issues with dependencies to at least safely
  remove cached packages. Before that, it could be hard to know where
  are even located the cached files without looking at the source code.

  ```
     Clearing /Users/ktorz/Library/Caches/aiken/packages
     Removing aiken-lang-stdlib-7ca9e659688ea88e1cfdc439b6c20c4c7fae9985.zip
     Removing aiken-lang-stdlib-main@04eb45df3c77f6611bbdff842a0e311be2c56390f0fa01f020d69c93ff567fe5.zip
     Removing aiken-lang-stdlib-6b482fa00ec37fe936c93155e8c670f32288a686.zip
     Removing aiken-lang-stdlib-1cedbe85b7c7e9c4036d63d45cad4ced27b0d50b.zip
         Done
  ```
2023-01-14 11:51:18 -05:00
rvcas 99ec0ff6b0
feat(check): change some logic around and add --exact-match 2023-01-10 11:46:44 -05:00
rvcas 9002ea263f
feat(check): make match tests flag fancier 2023-01-10 10:19:13 -05:00
rvcas d649b34ec3
Release 0.0.28
aiken@0.0.28
aiken-lang@0.0.28
aiken-lsp@0.0.28
aiken-project@0.0.28
uplc@0.0.28

Generated by cargo-workspaces
2023-01-06 13:41:00 -05:00
rvcas c89802eaed chore: bump pallas version 2023-01-06 13:39:18 -05:00
rvcas ee678f2978
Release 0.0.27
aiken@0.0.27
aiken-lang@0.0.27
aiken-lsp@0.0.27
aiken-project@0.0.27
flat-rs@0.0.27
uplc@0.0.27

Generated by cargo-workspaces
2022-12-30 00:57:49 -05:00
KtorZ ad5a393c4d
Add 'docs' and 'assets' to generated gitignore
And also make 'docs' the default folder (instead of doc) to be more aligned with Github's defaults.
2022-12-29 10:54:46 +01:00
rvcas 22103739c3 chore: some clippy warnings 2022-12-23 15:52:44 -05:00
KtorZ 39f5d1a86d
Make build, check and docs target directory an (optional) argument
Instead of being an option. Feels more natural that way.
2022-12-23 20:23:27 +01:00
KtorZ b1b57406e7
Do not generate placeholder files when creating new projects.
And fix the --lib flag to be a flag.
2022-12-23 20:19:28 +01:00
rvcas c723f4f796 feat: redo the new command 2022-12-22 10:52:49 -05:00
rvcas 42204d2d71 chore: make folder names match crate name 2022-12-21 18:11:07 -05:00