-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
88 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
protocol Hello { | ||
record Hello { | ||
string message; | ||
int timestamp; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# project-commands | ||
|
||
> **Warning** | ||
> If you copy the flake.nix remember to `git add [-N|--intent-to-add] flake.nix`, otherwise it won't work | ||
This example shows how to create scripts for your project, by leveraging [mission-control](https://github.com/Platonic-Systems/mission-control) | ||
|
||
This is a **potential** alternative to: | ||
|
||
- Using a `Makefile` to manage your project's scripts | ||
- Using the popular [Scripts To Rule Them All](https://github.com/github/scripts-to-rule-them-all) approach (having a `scripts/` folder) | ||
- Using a `bin/` folder | ||
|
||
## Explanation | ||
|
||
In this example we use the [avro-tools](https://avro.apache.org/) to convert our scripts from `.avdl` to `.avsc`. | ||
|
||
You don't need to know anything about avro to understand mission-control and use this example (that's nix baby 🚀). | ||
|
||
When setting up [mission-control](https://github.com/Platonic-Systems/mission-control), we add | ||
one script called `build`. Because of `wrapperName = "run";`, once we open the shell created by nix, | ||
the commands will be listed as `run build`. | ||
|
||
mission-control depends on flake-root, which also exposes the helpful `$FLAKE_ROOT` variable. | ||
|
||
After creating the scripts, we need to pass the newly created scripts to the desired shell, in this example we use the default shell. | ||
|
||
## Usage | ||
|
||
Run: | ||
|
||
```sh | ||
nix develop | ||
``` | ||
|
||
And mission-control will print in the new shell the available commands (you should see only one). | ||
|
||
Try running | ||
|
||
```sh | ||
run build | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
{ | ||
description = "Description for the project"; | ||
|
||
inputs = { | ||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; | ||
|
||
mission-control.url = "github:Platonic-Systems/mission-control"; | ||
flake-root.url = "github:srid/flake-root"; | ||
}; | ||
|
||
outputs = inputs@{ flake-parts, ... }: | ||
flake-parts.lib.mkFlake { inherit inputs; } { | ||
imports = [ | ||
inputs.mission-control.flakeModule | ||
inputs.flake-root.flakeModule | ||
]; | ||
systems = [ "x86_64-linux" "aarch64-darwin" "x86_64-darwin" ]; | ||
perSystem = { config, self', inputs', pkgs, system, ... }: { | ||
devShells.default = pkgs.mkShell { | ||
nativeBuildInputs = with pkgs; [ avro-tools ]; | ||
inputsFrom = [ config.mission-control.devShell config.flake-root.devShell ]; | ||
}; | ||
mission-control = { | ||
wrapperName = "run"; | ||
scripts = { | ||
build = { | ||
description = "convert files from .avdl to .avsc"; | ||
exec = '' | ||
avro-tools idl2schemata "$FLAKE_ROOT/Hello.avdl" . | ||
''; | ||
category = "Development"; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters