-25
.fluentci/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-25
.fluentci/.fluentci/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/.fluentci/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-28
.fluentci/.fluentci/.fluentci/.github/workflows/ci.yml
-28
.fluentci/.fluentci/.fluentci/.github/workflows/ci.yml
···
1
-
name: Codecov
2
-
3
-
# Controls when the action will run. Triggers the workflow on push or pull request
4
-
# events but only for the master branch
5
-
on:
6
-
push:
7
-
branches: [main]
8
-
pull_request:
9
-
branches: [main]
10
-
11
-
jobs:
12
-
test:
13
-
runs-on: ubuntu-latest
14
-
steps:
15
-
- uses: actions/checkout@v2
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.34
19
-
- name: Create coverage files
20
-
run: deno test --allow-read --coverage=coverage --lock-write # create coverage files
21
-
- name: Create coverage report
22
-
run: deno coverage ./coverage --lcov > coverage.lcov # create coverage report
23
-
- name: Collect coverage
24
-
uses: codecov/codecov-action@v3 # upload the report on Codecov
25
-
env:
26
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
27
-
with:
28
-
file: ./coverage.lcov
-132
.fluentci/.fluentci/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/.fluentci/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/.fluentci/.fluentci/CONTRIBUTING.md
-70
.fluentci/.fluentci/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/.fluentci/.fluentci/LICENSE
-19
.fluentci/.fluentci/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-88
.fluentci/.fluentci/.fluentci/README.md
-88
.fluentci/.fluentci/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use GitLab CI Pipeline and Jobs for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Quick start:
12
-
13
-
```ts
14
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
15
-
16
-
const { pipeline } = GitLab;
17
-
18
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
19
-
```
20
-
21
-
Or, if you want to use the predefined jobs:
22
-
23
-
```ts
24
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci/mod.ts";
25
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
26
-
27
-
const { fmt, lint, test } = GitLab;
28
-
29
-
const const pipeline = new GitlabCI()
30
-
.image("denoland/deno:alpine")
31
-
.addJob("fmt", fmt)
32
-
.addJob("lint", lint)
33
-
.addJob("test", test);
34
-
35
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
36
-
```
37
-
38
-
It will generate the following `.gitlab-ci.yml` file:
39
-
40
-
```yaml
41
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
42
-
43
-
image: denoland/deno:alpine
44
-
45
-
fmt:
46
-
image: denoland/deno:alpine
47
-
script:
48
-
- deno fmt --check
49
-
50
-
lint:
51
-
image: denoland/deno:alpine
52
-
script:
53
-
- deno lint
54
-
55
-
test:
56
-
image: denoland/deno:alpine
57
-
script:
58
-
- deno test
59
-
```
60
-
61
-
## ๐งช Advanced Usage
62
-
63
-
This package also provides a ready-to-use pipeline for
64
-
[Dagger](https://dagger.io/), just run the following command on your Deno
65
-
project:
66
-
67
-
```sh
68
-
dagger run deno run -A https://deno.land/x/deno_pipeline/ci.ts
69
-
```
70
-
71
-
Or, if you want to use the predefined jobs:
72
-
73
-
```ts
74
-
import Client, { connect } from "@dagger.io/dagger";
75
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
76
-
77
-
const { fmt, lint, test } = Dagger;
78
-
79
-
function pipeline(src = ".") {
80
-
connect(async (client: Client) => {
81
-
await fmt(client, src);
82
-
await lint(client, src);
83
-
await test(client, src);
84
-
});
85
-
}
86
-
87
-
pipeline();
88
-
```
-12
.fluentci/.fluentci/.fluentci/ci.ts
-12
.fluentci/.fluentci/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/.fluentci/.fluentci/deno.json
-9
.fluentci/.fluentci/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-68
.fluentci/.fluentci/.fluentci/deno.lock
-68
.fluentci/.fluentci/.fluentci/deno.lock
···
1
-
{
2
-
"version": "2",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/codecov_pipeline@v0.1.0/src/dagger/jobs.ts": "e980479e0bcd759773286145f3345ce7e1662c7d6734bfc4bbf8e6bfc93b974e",
9
-
"https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts": "a34aea3753c7079de5877f592ce31f30d05d552155729ff3e695d77326405133",
10
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
11
-
"https://esm.sh/stringify-tree@1.1.1": "8d994a105481fa944515323d89bd2596c1de79f3d9bd1386266463934716eca0",
12
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
13
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
14
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
15
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
16
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
17
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
18
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
19
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
20
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
21
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
22
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
23
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
25
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
26
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
27
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
28
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
29
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
30
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
31
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
32
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
33
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
34
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
35
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
36
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
37
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
38
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
39
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
40
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
41
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
42
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
43
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
44
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
45
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
46
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
47
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
48
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
49
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
50
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
51
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
52
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
53
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
54
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
55
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
56
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
57
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
58
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
59
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
60
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
61
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
62
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
63
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
64
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
65
-
"https://esm.sh/v130/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
66
-
"https://esm.sh/v130/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "40a9d40e0282b5432302a3da68b88aa11685bc0b8a0b70246168deed5c5773fe"
67
-
}
68
-
}
-19
.fluentci/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/.fluentci/.fluentci/flake.lock
-61
.fluentci/.fluentci/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/.fluentci/.fluentci/flake.nix
-26
.fluentci/.fluentci/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-28
.fluentci/.fluentci/.fluentci/import_map.json
-28
.fluentci/.fluentci/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.1.2/mod.ts",
6
-
"url": "node:url",
7
-
"readline": "node:readline",
8
-
"process": "node:process",
9
-
"path": "node:path",
10
-
"os": "node:os",
11
-
"fs": "node:fs",
12
-
"crypto": "node:crypto"
13
-
},
14
-
"scopes": {
15
-
"https://esm.sh/v128/": {
16
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
17
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
18
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
19
-
"execa": "https://esm.sh/v128/execa@7.1.1",
20
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
21
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
22
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
23
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
24
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
25
-
"tar": "https://esm.sh/v128/tar@6.1.15"
26
-
}
27
-
}
28
-
}
-4
.fluentci/.fluentci/.fluentci/mod.ts
-4
.fluentci/.fluentci/.fluentci/mod.ts
-4
.fluentci/.fluentci/.fluentci/src/dagger/index.ts
-4
.fluentci/.fluentci/.fluentci/src/dagger/index.ts
-197
.fluentci/.fluentci/.fluentci/src/dagger/jobs.ts
-197
.fluentci/.fluentci/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { upload } from "https://deno.land/x/codecov_pipeline@v0.1.0/src/dagger/jobs.ts";
3
-
import { withDevbox } from "https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts";
4
-
import { existsSync } from "fs";
5
-
6
-
export enum Job {
7
-
fmt = "fmt",
8
-
lint = "lint",
9
-
test = "test",
10
-
deploy = "deploy",
11
-
codecov = "codecov",
12
-
}
13
-
14
-
const baseCtr = (client: Client, pipeline: string) => {
15
-
if (existsSync("devbox.json")) {
16
-
return withDevbox(
17
-
client
18
-
.pipeline(pipeline)
19
-
.container()
20
-
.from("alpine:latest")
21
-
.withExec(["apk", "update"])
22
-
.withExec(["apk", "add", "bash", "curl"])
23
-
.withMountedCache("/nix", client.cacheVolume("nix"))
24
-
.withMountedCache("/etc/nix", client.cacheVolume("nix-etc"))
25
-
);
26
-
}
27
-
return client.pipeline(pipeline).container().from("denoland/deno:alpine");
28
-
};
29
-
30
-
export const lint = async (client: Client, src = ".") => {
31
-
const context = client.host().directory(src);
32
-
let command = ["deno", "lint"];
33
-
34
-
if (existsSync("devbox.json")) {
35
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
36
-
}
37
-
38
-
const ctr = baseCtr(client, Job.lint)
39
-
.withDirectory("/app", context, {
40
-
exclude: [".git", ".devbox", ".fluentci"],
41
-
})
42
-
.withWorkdir("/app")
43
-
.withExec(command);
44
-
45
-
const result = await ctr.stdout();
46
-
47
-
console.log(result);
48
-
};
49
-
50
-
export const fmt = async (client: Client, src = ".") => {
51
-
const context = client.host().directory(src);
52
-
let command = ["deno", "fmt"];
53
-
54
-
if (existsSync("devbox.json")) {
55
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
56
-
}
57
-
58
-
const ctr = baseCtr(client, Job.fmt)
59
-
.withDirectory("/app", context, {
60
-
exclude: [".git", ".devbox", ".fluentci"],
61
-
})
62
-
.withWorkdir("/app")
63
-
.withExec(command);
64
-
65
-
const result = await ctr.stdout();
66
-
67
-
console.log(result);
68
-
};
69
-
70
-
export const test = async (
71
-
client: Client,
72
-
src = ".",
73
-
options: { ignore: string[] } = { ignore: [] }
74
-
) => {
75
-
const context = client.host().directory(src);
76
-
let command = ["deno", "test", "-A", "--coverage=coverage", "--lock-write"];
77
-
78
-
if (options.ignore.length > 0) {
79
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
80
-
}
81
-
82
-
if (existsSync("devbox.json")) {
83
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
84
-
}
85
-
86
-
const ctr = baseCtr(client, Job.test)
87
-
.from("denoland/deno:alpine")
88
-
.withDirectory("/app", context, {
89
-
exclude: [".git", ".devbox", ".fluentci"],
90
-
})
91
-
.withWorkdir("/app")
92
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
93
-
.withExec(command)
94
-
.withExec(["sh", "-c", "deno coverage ./coverage --lcov > coverage.lcov"]);
95
-
96
-
await ctr.file("/app/coverage.lcov").export("./coverage.lcov");
97
-
98
-
const result = await ctr.stdout();
99
-
100
-
console.log(result);
101
-
};
102
-
103
-
export const deploy = async (client: Client, src = ".") => {
104
-
const context = client.host().directory(src);
105
-
let installDeployCtl = [
106
-
"deno",
107
-
"install",
108
-
"--allow-all",
109
-
"--no-check",
110
-
"-r",
111
-
"-f",
112
-
"https://deno.land/x/deploy/deployctl.ts",
113
-
];
114
-
const project = Deno.env.get("DENO_PROJECT");
115
-
const noStatic = Deno.env.get("NO_STATIC");
116
-
const exclude = Deno.env.get("EXCLUDE");
117
-
118
-
let command = ["deployctl", "deploy"];
119
-
120
-
if (noStatic) {
121
-
command = command.concat(["--no-static"]);
122
-
}
123
-
124
-
if (exclude) {
125
-
command = command.concat([`--exclude=${exclude}`]);
126
-
}
127
-
128
-
if (!Deno.env.get("DENO_DEPLOY_TOKEN")) {
129
-
throw new Error("DENO_DEPLOY_TOKEN environment variable is not set");
130
-
}
131
-
132
-
if (!project) {
133
-
throw new Error("DENO_PROJECT environment variable is not set");
134
-
}
135
-
136
-
const script = Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx";
137
-
command = command.concat([`--project=${project}`, script]);
138
-
139
-
if (existsSync("devbox.json")) {
140
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
141
-
installDeployCtl = [
142
-
"sh",
143
-
"-c",
144
-
`devbox run -- ${installDeployCtl.join(" ")}`,
145
-
];
146
-
}
147
-
148
-
const ctr = baseCtr(client, Job.deploy)
149
-
.from("denoland/deno:alpine")
150
-
.withDirectory("/app", context, {
151
-
exclude: [".git", ".devbox", ".fluentci"],
152
-
})
153
-
.withWorkdir("/app")
154
-
.withEnvVariable("PATH", "/root/.deno/bin:$PATH", { expand: true })
155
-
.withEnvVariable("DENO_DEPLOY_TOKEN", Deno.env.get("DENO_DEPLOY_TOKEN")!)
156
-
.withEnvVariable(
157
-
"DENO_MAIN_SCRIPT",
158
-
Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx"
159
-
)
160
-
.withExec(installDeployCtl)
161
-
.withExec(command);
162
-
163
-
const result = await ctr.stdout();
164
-
165
-
console.log(result);
166
-
};
167
-
168
-
export type JobExec = (
169
-
client: Client,
170
-
src?: string
171
-
) =>
172
-
| Promise<void>
173
-
| ((
174
-
client: Client,
175
-
src?: string,
176
-
options?: {
177
-
ignore: string[];
178
-
}
179
-
) => Promise<void>);
180
-
181
-
export const codecov = upload;
182
-
183
-
export const runnableJobs: Record<Job, JobExec> = {
184
-
[Job.fmt]: fmt,
185
-
[Job.lint]: lint,
186
-
[Job.test]: test,
187
-
[Job.deploy]: deploy,
188
-
[Job.codecov]: upload,
189
-
};
190
-
191
-
export const jobDescriptions: Record<Job, string> = {
192
-
[Job.fmt]: "Format your code",
193
-
[Job.lint]: "Lint your code",
194
-
[Job.test]: "Run your tests",
195
-
[Job.deploy]: "Deploy your code to Deno Deploy",
196
-
[Job.codecov]: "Upload your code coverage to Codecov",
197
-
};
-21
.fluentci/.fluentci/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/.fluentci/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/.fluentci/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/.fluentci/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/.fluentci/.fluentci/src/dagger/runner.ts
-3
.fluentci/.fluentci/.fluentci/src/dagger/runner.ts
-52
.fluentci/.fluentci/.fluentci/src/github/config.ts
-52
.fluentci/.fluentci/.fluentci/src/github/config.ts
···
1
-
import { JobSpec, Workflow } from "fluent_github_actions";
2
-
3
-
export function generateYaml() {
4
-
const workflow = new Workflow("Codecov");
5
-
6
-
const push = {
7
-
branches: ["main"],
8
-
};
9
-
10
-
const setupDagger = `\
11
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
12
-
sudo mv bin/dagger /usr/local/bin
13
-
dagger version`;
14
-
15
-
const tests: JobSpec = {
16
-
"runs-on": "ubuntu-latest",
17
-
steps: [
18
-
{
19
-
uses: "actions/checkout@v2",
20
-
},
21
-
{
22
-
uses: "denoland/setup-deno@v1",
23
-
with: {
24
-
"deno-version": "v1.37",
25
-
},
26
-
},
27
-
{
28
-
name: "Setup Fluent CI CLI",
29
-
run: "deno install -A -r https://cli.fluentci.io -n fluentci",
30
-
},
31
-
{
32
-
name: "Setup Dagger",
33
-
run: setupDagger,
34
-
},
35
-
{
36
-
name: "List Jobs",
37
-
run: "fluentci ls .",
38
-
},
39
-
{
40
-
name: "Run Dagger Pipelines",
41
-
run: "dagger run fluentci . fmt lint test codecov",
42
-
env: {
43
-
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}",
44
-
},
45
-
},
46
-
],
47
-
};
48
-
49
-
workflow.on({ push }).jobs({ tests });
50
-
51
-
workflow.save(".github/workflows/ci.yml");
52
-
}
-3
.fluentci/.fluentci/.fluentci/src/github/init.ts
-3
.fluentci/.fluentci/.fluentci/src/github/init.ts
-4
.fluentci/.fluentci/.fluentci/src/gitlab/index.ts
-4
.fluentci/.fluentci/.fluentci/src/gitlab/index.ts
-9
.fluentci/.fluentci/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/.fluentci/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/.fluentci/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/.fluentci/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-28
.fluentci/.fluentci/.github/workflows/ci.yml
-28
.fluentci/.fluentci/.github/workflows/ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent Github Actions
2
-
3
-
name: Codecov
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
tests:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: List Jobs
24
-
run: fluentci ls .
25
-
- name: Run Dagger Pipelines
26
-
run: dagger run fluentci . fmt lint test codecov
27
-
env:
28
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-132
.fluentci/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/.fluentci/CONTRIBUTING.md
-70
.fluentci/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/.fluentci/LICENSE
-19
.fluentci/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-69
.fluentci/.fluentci/README.md
-69
.fluentci/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use CI/CD Pipeline for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Run the following command:
12
-
13
-
```bash
14
-
dagger run fluentci deno_pipeline
15
-
```
16
-
17
-
Or, if you want to use it as a template:
18
-
19
-
```bash
20
-
fluentci init -t deno
21
-
```
22
-
23
-
This will create a `.fluentci` folder in your project.
24
-
25
-
Now you can run the pipeline with:
26
-
27
-
```bash
28
-
dagger run fluentci .
29
-
```
30
-
31
-
## Environment variables (Deno Deploy)
32
-
33
-
| Variable | Description | Default |
34
-
| ----------------- | ------------------------- | ---------- |
35
-
| DENO_PROJECT | Your project name | |
36
-
| NO_STATIC | Disable static assets | `false` |
37
-
| EXCLUDE | Exclude files from deploy | |
38
-
| DENO_DEPLOY_TOKEN | Your Deno Deploy token | |
39
-
| DENO_MAIN_SCRIPT | Your main script | `main.tsx` |
40
-
41
-
## Jobs
42
-
43
-
| Job | Description | Options |
44
-
| ------ | ------------------------------ | ---------------------- |
45
-
| fmt | Format your code | |
46
-
| lint | Lint your code | |
47
-
| test | Run your tests | `{ ignore: string[] }` |
48
-
| deploy | Deploy your app to Deno Deploy | |
49
-
50
-
## Programmatic usage
51
-
52
-
You can also use this pipeline programmatically:
53
-
54
-
```ts
55
-
import { Client, connect } from "https://esm.sh/@dagger.io/dagger@0.8.1";
56
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
57
-
58
-
const { fmt, lint, test } = Dagger;
59
-
60
-
function pipeline(src = ".") {
61
-
connect(async (client: Client) => {
62
-
await fmt(client, src);
63
-
await lint(client, src);
64
-
await test(client, src);
65
-
});
66
-
}
67
-
68
-
pipeline();
69
-
```
-12
.fluentci/.fluentci/ci.ts
-12
.fluentci/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/.fluentci/deno.json
-9
.fluentci/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-68
.fluentci/.fluentci/deno.lock
-68
.fluentci/.fluentci/deno.lock
···
1
-
{
2
-
"version": "3",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/codecov_pipeline@v0.1.1/src/dagger/jobs.ts": "ea5ea4fb985f879fdd1c0aed77ac635ba090606c1ecce9d5f5c107493d287984",
9
-
"https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts": "a34aea3753c7079de5877f592ce31f30d05d552155729ff3e695d77326405133",
10
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
11
-
"https://esm.sh/stringify-tree@1.1.1": "a0515b0f4fe97a6972047a588b7982592d9079e7aeac3323b0d26448a757cf84",
12
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
13
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
14
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
15
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
16
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
17
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
18
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
19
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
20
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
21
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
22
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
23
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
25
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
26
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
27
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
28
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
29
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
30
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
31
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
32
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
33
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
34
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
35
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
36
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
37
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
38
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
39
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
40
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
41
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
42
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
43
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
44
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
45
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
46
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
47
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
48
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
49
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
50
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
51
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
52
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
53
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
54
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
55
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
56
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
57
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
58
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
59
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
60
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
61
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
62
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
63
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
64
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
65
-
"https://esm.sh/v132/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
66
-
"https://esm.sh/v132/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "eaa9333a5219638ad170d12e12603ae00ae80fc8bf02cc112cfec7294e6bcb43"
67
-
}
68
-
}
-25
.fluentci/.fluentci/example/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/.fluentci/example/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-25
.fluentci/.fluentci/example/.fluentci/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/.fluentci/example/.fluentci/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-28
.fluentci/.fluentci/example/.fluentci/.fluentci/.github/workflows/ci.yml
-28
.fluentci/.fluentci/example/.fluentci/.fluentci/.github/workflows/ci.yml
···
1
-
name: Codecov
2
-
3
-
# Controls when the action will run. Triggers the workflow on push or pull request
4
-
# events but only for the master branch
5
-
on:
6
-
push:
7
-
branches: [main]
8
-
pull_request:
9
-
branches: [main]
10
-
11
-
jobs:
12
-
test:
13
-
runs-on: ubuntu-latest
14
-
steps:
15
-
- uses: actions/checkout@v2
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.34
19
-
- name: Create coverage files
20
-
run: deno test --allow-read --coverage=coverage --lock-write # create coverage files
21
-
- name: Create coverage report
22
-
run: deno coverage ./coverage --lcov > coverage.lcov # create coverage report
23
-
- name: Collect coverage
24
-
uses: codecov/codecov-action@v3 # upload the report on Codecov
25
-
env:
26
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
27
-
with:
28
-
file: ./coverage.lcov
-3
.fluentci/.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
-3
.fluentci/.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
-132
.fluentci/.fluentci/example/.fluentci/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/.fluentci/example/.fluentci/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/.fluentci/example/.fluentci/.fluentci/CONTRIBUTING.md
-70
.fluentci/.fluentci/example/.fluentci/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/.fluentci/example/.fluentci/.fluentci/LICENSE
-19
.fluentci/.fluentci/example/.fluentci/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-88
.fluentci/.fluentci/example/.fluentci/.fluentci/README.md
-88
.fluentci/.fluentci/example/.fluentci/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use GitLab CI Pipeline and Jobs for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Quick start:
12
-
13
-
```ts
14
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
15
-
16
-
const { pipeline } = GitLab;
17
-
18
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
19
-
```
20
-
21
-
Or, if you want to use the predefined jobs:
22
-
23
-
```ts
24
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci/mod.ts";
25
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
26
-
27
-
const { fmt, lint, test } = GitLab;
28
-
29
-
const const pipeline = new GitlabCI()
30
-
.image("denoland/deno:alpine")
31
-
.addJob("fmt", fmt)
32
-
.addJob("lint", lint)
33
-
.addJob("test", test);
34
-
35
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
36
-
```
37
-
38
-
It will generate the following `.gitlab-ci.yml` file:
39
-
40
-
```yaml
41
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
42
-
43
-
image: denoland/deno:alpine
44
-
45
-
fmt:
46
-
image: denoland/deno:alpine
47
-
script:
48
-
- deno fmt --check
49
-
50
-
lint:
51
-
image: denoland/deno:alpine
52
-
script:
53
-
- deno lint
54
-
55
-
test:
56
-
image: denoland/deno:alpine
57
-
script:
58
-
- deno test
59
-
```
60
-
61
-
## ๐งช Advanced Usage
62
-
63
-
This package also provides a ready-to-use pipeline for
64
-
[Dagger](https://dagger.io/), just run the following command on your Deno
65
-
project:
66
-
67
-
```sh
68
-
dagger run deno run -A https://deno.land/x/deno_pipeline/ci.ts
69
-
```
70
-
71
-
Or, if you want to use the predefined jobs:
72
-
73
-
```ts
74
-
import Client, { connect } from "@dagger.io/dagger";
75
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
76
-
77
-
const { fmt, lint, test } = Dagger;
78
-
79
-
function pipeline(src = ".") {
80
-
connect(async (client: Client) => {
81
-
await fmt(client, src);
82
-
await lint(client, src);
83
-
await test(client, src);
84
-
});
85
-
}
86
-
87
-
pipeline();
88
-
```
-12
.fluentci/.fluentci/example/.fluentci/.fluentci/ci.ts
-12
.fluentci/.fluentci/example/.fluentci/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/.fluentci/example/.fluentci/.fluentci/deno.json
-9
.fluentci/.fluentci/example/.fluentci/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-66
.fluentci/.fluentci/example/.fluentci/.fluentci/deno.lock
-66
.fluentci/.fluentci/example/.fluentci/.fluentci/deno.lock
···
1
-
{
2
-
"version": "2",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
9
-
"https://esm.sh/stringify-tree@1.1.1": "8d994a105481fa944515323d89bd2596c1de79f3d9bd1386266463934716eca0",
10
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
11
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
12
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
13
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
14
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
15
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
16
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
17
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
18
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
19
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
20
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
21
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
22
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
23
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
25
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
26
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
27
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
28
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
29
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
30
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
31
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
32
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
33
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
34
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
35
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
36
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
37
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
38
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
39
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
40
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
41
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
42
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
43
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
44
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
45
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
46
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
47
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
48
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
49
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
50
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
51
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
52
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
53
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
54
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
55
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
56
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
57
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
58
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
59
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
60
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
61
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
62
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
63
-
"https://esm.sh/v130/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
64
-
"https://esm.sh/v130/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "40a9d40e0282b5432302a3da68b88aa11685bc0b8a0b70246168deed5c5773fe"
65
-
}
66
-
}
-19
.fluentci/.fluentci/example/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/.fluentci/example/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/.fluentci/example/.fluentci/.fluentci/flake.lock
-61
.fluentci/.fluentci/example/.fluentci/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/.fluentci/example/.fluentci/.fluentci/flake.nix
-26
.fluentci/.fluentci/example/.fluentci/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-27
.fluentci/.fluentci/example/.fluentci/.fluentci/import_map.json
-27
.fluentci/.fluentci/example/.fluentci/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"url": "node:url",
6
-
"readline": "node:readline",
7
-
"process": "node:process",
8
-
"path": "node:path",
9
-
"os": "node:os",
10
-
"fs": "node:fs",
11
-
"crypto": "node:crypto"
12
-
},
13
-
"scopes": {
14
-
"https://esm.sh/v128/": {
15
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
16
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
17
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
18
-
"execa": "https://esm.sh/v128/execa@7.1.1",
19
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
20
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
21
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
22
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
23
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
24
-
"tar": "https://esm.sh/v128/tar@6.1.15"
25
-
}
26
-
}
27
-
}
-4
.fluentci/.fluentci/example/.fluentci/.fluentci/mod.ts
-4
.fluentci/.fluentci/example/.fluentci/.fluentci/mod.ts
-4
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
-4
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
-111
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/jobs.ts
-111
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { existsSync } from "fs";
3
-
4
-
export enum Job {
5
-
fmt = "fmt",
6
-
lint = "lint",
7
-
test = "test",
8
-
}
9
-
10
-
export const lint = async (client: Client, src = ".") => {
11
-
const context = client.host().directory(src);
12
-
let command = ["deno", "lint"];
13
-
14
-
if (existsSync("devbox.json")) {
15
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
16
-
}
17
-
18
-
const ctr = client
19
-
.pipeline(Job.lint)
20
-
.container()
21
-
.from("denoland/deno:alpine")
22
-
.withDirectory("/app", context, {
23
-
exclude: [".git", ".devbox", ".fluentci"],
24
-
})
25
-
.withWorkdir("/app")
26
-
.withExec(command);
27
-
28
-
const result = await ctr.stdout();
29
-
30
-
console.log(result);
31
-
};
32
-
33
-
export const fmt = async (client: Client, src = ".") => {
34
-
const context = client.host().directory(src);
35
-
let command = ["deno", "fmt"];
36
-
37
-
if (existsSync("devbox.json")) {
38
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
39
-
}
40
-
41
-
const ctr = client
42
-
.pipeline(Job.fmt)
43
-
.container()
44
-
.from("denoland/deno:alpine")
45
-
.withDirectory("/app", context, {
46
-
exclude: [".git", ".devbox", ".fluentci"],
47
-
})
48
-
.withWorkdir("/app")
49
-
.withExec(command);
50
-
51
-
const result = await ctr.stdout();
52
-
53
-
console.log(result);
54
-
};
55
-
56
-
export const test = async (
57
-
client: Client,
58
-
src = ".",
59
-
options: { ignore: string[] } = { ignore: [] }
60
-
) => {
61
-
const context = client.host().directory(src);
62
-
let command = ["deno", "test", "-A", "--lock-write"];
63
-
64
-
if (options.ignore.length > 0) {
65
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
66
-
}
67
-
68
-
if (existsSync("devbox.json")) {
69
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
70
-
}
71
-
72
-
const ctr = client
73
-
.pipeline(Job.test)
74
-
.container()
75
-
.from("denoland/deno:alpine")
76
-
.withDirectory("/app", context, {
77
-
exclude: [".git", ".devbox", ".fluentci"],
78
-
})
79
-
.withWorkdir("/app")
80
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
81
-
.withExec(command);
82
-
83
-
const result = await ctr.stdout();
84
-
85
-
console.log(result);
86
-
};
87
-
88
-
export type JobExec = (
89
-
client: Client,
90
-
src?: string
91
-
) =>
92
-
| Promise<void>
93
-
| ((
94
-
client: Client,
95
-
src?: string,
96
-
options?: {
97
-
ignore: string[];
98
-
}
99
-
) => Promise<void>);
100
-
101
-
export const runnableJobs: Record<Job, JobExec> = {
102
-
[Job.fmt]: fmt,
103
-
[Job.lint]: lint,
104
-
[Job.test]: test,
105
-
};
106
-
107
-
export const jobDescriptions: Record<Job, string> = {
108
-
[Job.fmt]: "Format your code",
109
-
[Job.lint]: "Lint your code",
110
-
[Job.test]: "Run your tests",
111
-
};
-21
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/runner.ts
-3
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/runner.ts
-4
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
-4
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
-9
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-28
.fluentci/.fluentci/example/.fluentci/.github/workflows/ci.yml
-28
.fluentci/.fluentci/example/.fluentci/.github/workflows/ci.yml
···
1
-
name: Codecov
2
-
3
-
# Controls when the action will run. Triggers the workflow on push or pull request
4
-
# events but only for the master branch
5
-
on:
6
-
push:
7
-
branches: [main]
8
-
pull_request:
9
-
branches: [main]
10
-
11
-
jobs:
12
-
test:
13
-
runs-on: ubuntu-latest
14
-
steps:
15
-
- uses: actions/checkout@v2
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.34
19
-
- name: Create coverage files
20
-
run: deno test --allow-read --coverage=coverage --lock-write # create coverage files
21
-
- name: Create coverage report
22
-
run: deno coverage ./coverage --lcov > coverage.lcov # create coverage report
23
-
- name: Collect coverage
24
-
uses: codecov/codecov-action@v3 # upload the report on Codecov
25
-
env:
26
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
27
-
with:
28
-
file: ./coverage.lcov
-3
.fluentci/.fluentci/example/.fluentci/.vscode/settings.json
-3
.fluentci/.fluentci/example/.fluentci/.vscode/settings.json
-132
.fluentci/.fluentci/example/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/.fluentci/example/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/.fluentci/example/.fluentci/CONTRIBUTING.md
-70
.fluentci/.fluentci/example/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/.fluentci/example/.fluentci/LICENSE
-19
.fluentci/.fluentci/example/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-58
.fluentci/.fluentci/example/.fluentci/README.md
-58
.fluentci/.fluentci/example/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use CI/CD Pipeline for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Run the following command:
12
-
13
-
```bash
14
-
dagger run fluentci deno_pipeline
15
-
```
16
-
17
-
Or, if you want to use it as a template:
18
-
19
-
```bash
20
-
fluentci init -t deno
21
-
```
22
-
23
-
This will create a `.fluentci` folder in your project.
24
-
25
-
Now you can run the pipeline with:
26
-
27
-
```bash
28
-
dagger run fluentci .
29
-
```
30
-
31
-
## Jobs
32
-
33
-
| Job | Description | Options |
34
-
| ----- | ---------------- | ---------------------- |
35
-
| fmt | Format your code | |
36
-
| lint | Lint your code | |
37
-
| test | Run your tests | `{ ignore: string[] }` |
38
-
39
-
## Programmatic usage
40
-
41
-
You can also use this pipeline programmatically:
42
-
43
-
```ts
44
-
import Client, { connect } from "@dagger.io/dagger";
45
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
46
-
47
-
const { fmt, lint, test } = Dagger;
48
-
49
-
function pipeline(src = ".") {
50
-
connect(async (client: Client) => {
51
-
await fmt(client, src);
52
-
await lint(client, src);
53
-
await test(client, src);
54
-
});
55
-
}
56
-
57
-
pipeline();
58
-
```
-12
.fluentci/.fluentci/example/.fluentci/ci.ts
-12
.fluentci/.fluentci/example/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/.fluentci/example/.fluentci/deno.json
-9
.fluentci/.fluentci/example/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-67
.fluentci/.fluentci/example/.fluentci/deno.lock
-67
.fluentci/.fluentci/example/.fluentci/deno.lock
···
1
-
{
2
-
"version": "2",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts": "a34aea3753c7079de5877f592ce31f30d05d552155729ff3e695d77326405133",
9
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
10
-
"https://esm.sh/stringify-tree@1.1.1": "8d994a105481fa944515323d89bd2596c1de79f3d9bd1386266463934716eca0",
11
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
12
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
13
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
14
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
15
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
16
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
17
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
18
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
19
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
20
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
21
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
22
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
23
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
25
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
26
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
27
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
28
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
29
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
30
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
31
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
32
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
33
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
34
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
35
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
36
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
37
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
38
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
39
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
40
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
41
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
42
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
43
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
44
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
45
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
46
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
47
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
48
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
49
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
50
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
51
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
52
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
53
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
54
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
55
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
56
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
57
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
58
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
59
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
60
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
61
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
62
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
63
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
64
-
"https://esm.sh/v130/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
65
-
"https://esm.sh/v130/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "40a9d40e0282b5432302a3da68b88aa11685bc0b8a0b70246168deed5c5773fe"
66
-
}
67
-
}
-19
.fluentci/.fluentci/example/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/.fluentci/example/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/.fluentci/example/.fluentci/flake.lock
-61
.fluentci/.fluentci/example/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/.fluentci/example/.fluentci/flake.nix
-26
.fluentci/.fluentci/example/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-27
.fluentci/.fluentci/example/.fluentci/import_map.json
-27
.fluentci/.fluentci/example/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"url": "node:url",
6
-
"readline": "node:readline",
7
-
"process": "node:process",
8
-
"path": "node:path",
9
-
"os": "node:os",
10
-
"fs": "node:fs",
11
-
"crypto": "node:crypto"
12
-
},
13
-
"scopes": {
14
-
"https://esm.sh/v128/": {
15
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
16
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
17
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
18
-
"execa": "https://esm.sh/v128/execa@7.1.1",
19
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
20
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
21
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
22
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
23
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
24
-
"tar": "https://esm.sh/v128/tar@6.1.15"
25
-
}
26
-
}
27
-
}
-4
.fluentci/.fluentci/example/.fluentci/mod.ts
-4
.fluentci/.fluentci/example/.fluentci/mod.ts
-4
.fluentci/.fluentci/example/.fluentci/src/dagger/index.ts
-4
.fluentci/.fluentci/example/.fluentci/src/dagger/index.ts
-188
.fluentci/.fluentci/example/.fluentci/src/dagger/jobs.ts
-188
.fluentci/.fluentci/example/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { withDevbox } from "https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts";
3
-
import { existsSync } from "fs";
4
-
5
-
export enum Job {
6
-
fmt = "fmt",
7
-
lint = "lint",
8
-
test = "test",
9
-
deploy = "deploy",
10
-
}
11
-
12
-
const baseCtr = (client: Client, pipeline: string) => {
13
-
if (existsSync("devbox.json")) {
14
-
return withDevbox(
15
-
client
16
-
.pipeline(pipeline)
17
-
.container()
18
-
.from("alpine:latest")
19
-
.withExec(["apk", "update"])
20
-
.withExec(["apk", "add", "bash", "curl"])
21
-
.withMountedCache("/nix", client.cacheVolume("nix"))
22
-
.withMountedCache("/etc/nix", client.cacheVolume("nix-etc"))
23
-
);
24
-
}
25
-
return client.pipeline(pipeline).container().from("denoland/deno:alpine");
26
-
};
27
-
28
-
export const lint = async (client: Client, src = ".") => {
29
-
const context = client.host().directory(src);
30
-
let command = ["deno", "lint"];
31
-
32
-
if (existsSync("devbox.json")) {
33
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
34
-
}
35
-
36
-
const ctr = baseCtr(client, Job.lint)
37
-
.withDirectory("/app", context, {
38
-
exclude: [".git", ".devbox", ".fluentci"],
39
-
})
40
-
.withWorkdir("/app")
41
-
.withExec(command);
42
-
43
-
const result = await ctr.stdout();
44
-
45
-
console.log(result);
46
-
};
47
-
48
-
export const fmt = async (client: Client, src = ".") => {
49
-
const context = client.host().directory(src);
50
-
let command = ["deno", "fmt"];
51
-
52
-
if (existsSync("devbox.json")) {
53
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
54
-
}
55
-
56
-
const ctr = baseCtr(client, Job.fmt)
57
-
.withDirectory("/app", context, {
58
-
exclude: [".git", ".devbox", ".fluentci"],
59
-
})
60
-
.withWorkdir("/app")
61
-
.withExec(command);
62
-
63
-
const result = await ctr.stdout();
64
-
65
-
console.log(result);
66
-
};
67
-
68
-
export const test = async (
69
-
client: Client,
70
-
src = ".",
71
-
options: { ignore: string[] } = { ignore: [] }
72
-
) => {
73
-
const context = client.host().directory(src);
74
-
let command = ["deno", "test", "-A", "--lock-write"];
75
-
76
-
if (options.ignore.length > 0) {
77
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
78
-
}
79
-
80
-
if (existsSync("devbox.json")) {
81
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
82
-
}
83
-
84
-
const ctr = baseCtr(client, Job.test)
85
-
.from("denoland/deno:alpine")
86
-
.withDirectory("/app", context, {
87
-
exclude: [".git", ".devbox", ".fluentci"],
88
-
})
89
-
.withWorkdir("/app")
90
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
91
-
.withExec(command);
92
-
93
-
const result = await ctr.stdout();
94
-
95
-
console.log(result);
96
-
};
97
-
98
-
export const deploy = async (client: Client, src = ".") => {
99
-
const context = client.host().directory(src);
100
-
let installDeployCtl = [
101
-
"deno",
102
-
"install",
103
-
"--allow-all",
104
-
"--no-check",
105
-
"-r",
106
-
"-f",
107
-
"https://deno.land/x/deploy/deployctl.ts",
108
-
];
109
-
const project = Deno.env.get("DENO_PROJECT");
110
-
const noStatic = Deno.env.get("NO_STATIC");
111
-
const exclude = Deno.env.get("EXCLUDE");
112
-
113
-
let command = ["deployctl", "deploy"];
114
-
115
-
if (noStatic) {
116
-
command = command.concat(["--no-static"]);
117
-
}
118
-
119
-
if (exclude) {
120
-
command = command.concat([`--exclude=${exclude}`]);
121
-
}
122
-
123
-
if (!Deno.env.get("DENO_DEPLOY_TOKEN")) {
124
-
throw new Error("DENO_DEPLOY_TOKEN environment variable is not set");
125
-
}
126
-
127
-
if (!project) {
128
-
throw new Error("DENO_PROJECT environment variable is not set");
129
-
}
130
-
131
-
const script = Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx";
132
-
command = command.concat([`--project=${project}`, script]);
133
-
134
-
if (existsSync("devbox.json")) {
135
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
136
-
installDeployCtl = [
137
-
"sh",
138
-
"-c",
139
-
`devbox run -- ${installDeployCtl.join(" ")}`,
140
-
];
141
-
}
142
-
143
-
const ctr = baseCtr(client, Job.deploy)
144
-
.from("denoland/deno:alpine")
145
-
.withDirectory("/app", context, {
146
-
exclude: [".git", ".devbox", ".fluentci"],
147
-
})
148
-
.withWorkdir("/app")
149
-
.withEnvVariable("PATH", "/root/.deno/bin:$PATH", { expand: true })
150
-
.withEnvVariable("DENO_DEPLOY_TOKEN", Deno.env.get("DENO_DEPLOY_TOKEN")!)
151
-
.withEnvVariable(
152
-
"DENO_MAIN_SCRIPT",
153
-
Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx"
154
-
)
155
-
.withExec(installDeployCtl)
156
-
.withExec(command);
157
-
158
-
const result = await ctr.stdout();
159
-
160
-
console.log(result);
161
-
};
162
-
163
-
export type JobExec = (
164
-
client: Client,
165
-
src?: string
166
-
) =>
167
-
| Promise<void>
168
-
| ((
169
-
client: Client,
170
-
src?: string,
171
-
options?: {
172
-
ignore: string[];
173
-
}
174
-
) => Promise<void>);
175
-
176
-
export const runnableJobs: Record<Job, JobExec> = {
177
-
[Job.fmt]: fmt,
178
-
[Job.lint]: lint,
179
-
[Job.test]: test,
180
-
[Job.deploy]: deploy,
181
-
};
182
-
183
-
export const jobDescriptions: Record<Job, string> = {
184
-
[Job.fmt]: "Format your code",
185
-
[Job.lint]: "Lint your code",
186
-
[Job.test]: "Run your tests",
187
-
[Job.deploy]: "Deploy your code to Deno Deploy",
188
-
};
-21
.fluentci/.fluentci/example/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/.fluentci/example/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/.fluentci/example/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/.fluentci/example/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/.fluentci/example/.fluentci/src/dagger/runner.ts
-3
.fluentci/.fluentci/example/.fluentci/src/dagger/runner.ts
-4
.fluentci/.fluentci/example/.fluentci/src/gitlab/index.ts
-4
.fluentci/.fluentci/example/.fluentci/src/gitlab/index.ts
-9
.fluentci/.fluentci/example/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/.fluentci/example/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-16
.fluentci/.fluentci/example/README.md
-16
.fluentci/.fluentci/example/README.md
···
1
-
# Deno Pipeline Example
2
-
3
-
This is an example using the [Deno Pipeline](https://github.com/fluent-ci-templates/deno-pipeline).
4
-
5
-
## ๐ Usage
6
-
7
-
You need to set the following environment variables:
8
-
9
-
- `DENO_DEPLOY_TOKEN`: Your Deno Deploy token.
10
-
- `DENO_PROJECT`: Your project name.
11
-
12
-
Then, run the following command:
13
-
14
-
```bash
15
-
dagger run fluentci . fmt lint deploy
16
-
```
-20
.fluentci/.fluentci/example/main.tsx
-20
.fluentci/.fluentci/example/main.tsx
···
1
-
/** @jsx h */
2
-
import { serve } from "https://deno.land/std@0.190.0/http/server.ts";
3
-
import html, { h } from "https://deno.land/x/htm@0.2.1/mod.ts";
4
-
5
-
const handler = (req: Request) =>
6
-
html({
7
-
title: "Hello World!",
8
-
styles: [
9
-
"html, body { margin: 0; height: 100%; }",
10
-
"body { background: #86efac; display: flex; flex-direction: column; align-items: center; justify-content: center; }",
11
-
],
12
-
body: (
13
-
<body>
14
-
<img width="64" src="https://dash.deno.com/assets/logo.svg" />
15
-
<h1>Hello Patricia!</h1>
16
-
</body>
17
-
),
18
-
});
19
-
20
-
serve(handler);
-19
.fluentci/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/.fluentci/flake.lock
-61
.fluentci/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/.fluentci/flake.nix
-26
.fluentci/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-28
.fluentci/.fluentci/import_map.json
-28
.fluentci/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.1.2/mod.ts",
6
-
"url": "node:url",
7
-
"readline": "node:readline",
8
-
"process": "node:process",
9
-
"path": "node:path",
10
-
"os": "node:os",
11
-
"fs": "node:fs",
12
-
"crypto": "node:crypto"
13
-
},
14
-
"scopes": {
15
-
"https://esm.sh/v128/": {
16
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
17
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
18
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
19
-
"execa": "https://esm.sh/v128/execa@7.1.1",
20
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
21
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
22
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
23
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
24
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
25
-
"tar": "https://esm.sh/v128/tar@6.1.15"
26
-
}
27
-
}
28
-
}
-4
.fluentci/.fluentci/mod.ts
-4
.fluentci/.fluentci/mod.ts
-4
.fluentci/.fluentci/src/dagger/index.ts
-4
.fluentci/.fluentci/src/dagger/index.ts
-197
.fluentci/.fluentci/src/dagger/jobs.ts
-197
.fluentci/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { upload } from "https://deno.land/x/codecov_pipeline@v0.1.1/src/dagger/jobs.ts";
3
-
import { withDevbox } from "https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts";
4
-
import { existsSync } from "fs";
5
-
6
-
export enum Job {
7
-
fmt = "fmt",
8
-
lint = "lint",
9
-
test = "test",
10
-
deploy = "deploy",
11
-
codecov = "codecov",
12
-
}
13
-
14
-
const baseCtr = (client: Client, pipeline: string) => {
15
-
if (existsSync("devbox.json")) {
16
-
return withDevbox(
17
-
client
18
-
.pipeline(pipeline)
19
-
.container()
20
-
.from("alpine:latest")
21
-
.withExec(["apk", "update"])
22
-
.withExec(["apk", "add", "bash", "curl"])
23
-
.withMountedCache("/nix", client.cacheVolume("nix"))
24
-
.withMountedCache("/etc/nix", client.cacheVolume("nix-etc"))
25
-
);
26
-
}
27
-
return client.pipeline(pipeline).container().from("denoland/deno:alpine");
28
-
};
29
-
30
-
export const lint = async (client: Client, src = ".") => {
31
-
const context = client.host().directory(src);
32
-
let command = ["deno", "lint"];
33
-
34
-
if (existsSync("devbox.json")) {
35
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
36
-
}
37
-
38
-
const ctr = baseCtr(client, Job.lint)
39
-
.withDirectory("/app", context, {
40
-
exclude: [".git", ".devbox", ".fluentci"],
41
-
})
42
-
.withWorkdir("/app")
43
-
.withExec(command);
44
-
45
-
const result = await ctr.stdout();
46
-
47
-
console.log(result);
48
-
};
49
-
50
-
export const fmt = async (client: Client, src = ".") => {
51
-
const context = client.host().directory(src);
52
-
let command = ["deno", "fmt"];
53
-
54
-
if (existsSync("devbox.json")) {
55
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
56
-
}
57
-
58
-
const ctr = baseCtr(client, Job.fmt)
59
-
.withDirectory("/app", context, {
60
-
exclude: [".git", ".devbox", ".fluentci"],
61
-
})
62
-
.withWorkdir("/app")
63
-
.withExec(command);
64
-
65
-
const result = await ctr.stdout();
66
-
67
-
console.log(result);
68
-
};
69
-
70
-
export const test = async (
71
-
client: Client,
72
-
src = ".",
73
-
options: { ignore: string[] } = { ignore: [] }
74
-
) => {
75
-
const context = client.host().directory(src);
76
-
let command = ["deno", "test", "-A", "--coverage=coverage", "--lock-write"];
77
-
78
-
if (options.ignore.length > 0) {
79
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
80
-
}
81
-
82
-
if (existsSync("devbox.json")) {
83
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
84
-
}
85
-
86
-
const ctr = baseCtr(client, Job.test)
87
-
.from("denoland/deno:alpine")
88
-
.withDirectory("/app", context, {
89
-
exclude: [".git", ".devbox", ".fluentci"],
90
-
})
91
-
.withWorkdir("/app")
92
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
93
-
.withExec(command)
94
-
.withExec(["sh", "-c", "deno coverage ./coverage --lcov > coverage.lcov"]);
95
-
96
-
const result = await ctr.stdout();
97
-
98
-
await ctr.file("/app/coverage.lcov").export("./coverage.lcov");
99
-
100
-
console.log(result);
101
-
};
102
-
103
-
export const deploy = async (client: Client, src = ".") => {
104
-
const context = client.host().directory(src);
105
-
let installDeployCtl = [
106
-
"deno",
107
-
"install",
108
-
"--allow-all",
109
-
"--no-check",
110
-
"-r",
111
-
"-f",
112
-
"https://deno.land/x/deploy/deployctl.ts",
113
-
];
114
-
const project = Deno.env.get("DENO_PROJECT");
115
-
const noStatic = Deno.env.get("NO_STATIC");
116
-
const exclude = Deno.env.get("EXCLUDE");
117
-
118
-
let command = ["deployctl", "deploy"];
119
-
120
-
if (noStatic) {
121
-
command = command.concat(["--no-static"]);
122
-
}
123
-
124
-
if (exclude) {
125
-
command = command.concat([`--exclude=${exclude}`]);
126
-
}
127
-
128
-
if (!Deno.env.get("DENO_DEPLOY_TOKEN")) {
129
-
throw new Error("DENO_DEPLOY_TOKEN environment variable is not set");
130
-
}
131
-
132
-
if (!project) {
133
-
throw new Error("DENO_PROJECT environment variable is not set");
134
-
}
135
-
136
-
const script = Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx";
137
-
command = command.concat([`--project=${project}`, script]);
138
-
139
-
if (existsSync("devbox.json")) {
140
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
141
-
installDeployCtl = [
142
-
"sh",
143
-
"-c",
144
-
`devbox run -- ${installDeployCtl.join(" ")}`,
145
-
];
146
-
}
147
-
148
-
const ctr = baseCtr(client, Job.deploy)
149
-
.from("denoland/deno:alpine")
150
-
.withDirectory("/app", context, {
151
-
exclude: [".git", ".devbox", ".fluentci"],
152
-
})
153
-
.withWorkdir("/app")
154
-
.withEnvVariable("PATH", "/root/.deno/bin:$PATH", { expand: true })
155
-
.withEnvVariable("DENO_DEPLOY_TOKEN", Deno.env.get("DENO_DEPLOY_TOKEN")!)
156
-
.withEnvVariable(
157
-
"DENO_MAIN_SCRIPT",
158
-
Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx"
159
-
)
160
-
.withExec(installDeployCtl)
161
-
.withExec(command);
162
-
163
-
const result = await ctr.stdout();
164
-
165
-
console.log(result);
166
-
};
167
-
168
-
export type JobExec = (
169
-
client: Client,
170
-
src?: string
171
-
) =>
172
-
| Promise<void>
173
-
| ((
174
-
client: Client,
175
-
src?: string,
176
-
options?: {
177
-
ignore: string[];
178
-
}
179
-
) => Promise<void>);
180
-
181
-
export const codecov = upload;
182
-
183
-
export const runnableJobs: Record<Job, JobExec> = {
184
-
[Job.fmt]: fmt,
185
-
[Job.lint]: lint,
186
-
[Job.test]: test,
187
-
[Job.deploy]: deploy,
188
-
[Job.codecov]: upload,
189
-
};
190
-
191
-
export const jobDescriptions: Record<Job, string> = {
192
-
[Job.fmt]: "Format your code",
193
-
[Job.lint]: "Lint your code",
194
-
[Job.test]: "Run your tests",
195
-
[Job.deploy]: "Deploy your code to Deno Deploy",
196
-
[Job.codecov]: "Upload your code coverage to Codecov",
197
-
};
-21
.fluentci/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/.fluentci/src/dagger/runner.ts
-3
.fluentci/.fluentci/src/dagger/runner.ts
-52
.fluentci/.fluentci/src/github/config.ts
-52
.fluentci/.fluentci/src/github/config.ts
···
1
-
import { JobSpec, Workflow } from "fluent_github_actions";
2
-
3
-
export function generateYaml() {
4
-
const workflow = new Workflow("Codecov");
5
-
6
-
const push = {
7
-
branches: ["main"],
8
-
};
9
-
10
-
const setupDagger = `\
11
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
12
-
sudo mv bin/dagger /usr/local/bin
13
-
dagger version`;
14
-
15
-
const tests: JobSpec = {
16
-
"runs-on": "ubuntu-latest",
17
-
steps: [
18
-
{
19
-
uses: "actions/checkout@v2",
20
-
},
21
-
{
22
-
uses: "denoland/setup-deno@v1",
23
-
with: {
24
-
"deno-version": "v1.37",
25
-
},
26
-
},
27
-
{
28
-
name: "Setup Fluent CI CLI",
29
-
run: "deno install -A -r https://cli.fluentci.io -n fluentci",
30
-
},
31
-
{
32
-
name: "Setup Dagger",
33
-
run: setupDagger,
34
-
},
35
-
{
36
-
name: "Run Dagger Pipelines",
37
-
run: "dagger run fluentci . fmt lint test",
38
-
},
39
-
{
40
-
name: "Upload to Codecov",
41
-
run: "dagger run fluentci codecov_pipeline",
42
-
env: {
43
-
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}",
44
-
},
45
-
},
46
-
],
47
-
};
48
-
49
-
workflow.on({ push }).jobs({ tests });
50
-
51
-
workflow.save(".github/workflows/ci.yml");
52
-
}
-3
.fluentci/.fluentci/src/github/init.ts
-3
.fluentci/.fluentci/src/github/init.ts
-4
.fluentci/.fluentci/src/gitlab/index.ts
-4
.fluentci/.fluentci/src/gitlab/index.ts
-9
.fluentci/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-28
.fluentci/.github/workflows/ci.yml
-28
.fluentci/.github/workflows/ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent Github Actions
2
-
3
-
name: Codecov
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
tests:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.8 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Dagger Pipelines
24
-
run: dagger run fluentci . fmt lint test
25
-
- name: Upload to Codecov
26
-
run: dagger run fluentci codecov_pipeline
27
-
env:
28
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-25
.fluentci/.github/workflows/example.yml
-25
.fluentci/.github/workflows/example.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions
2
-
3
-
name: Example
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
tests:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.8 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Dagger Pipelines
24
-
run: dagger run deno run -A ../src/dagger/runner.ts
25
-
working-directory: example
-23
.fluentci/.github/workflows/zenith.yml
-23
.fluentci/.github/workflows/zenith.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions
2
-
3
-
name: Zenith Example
4
-
on:
5
-
push:
6
-
branches:
7
-
- zenith
8
-
9
-
jobs:
10
-
tests:
11
-
runs-on: ubuntu-latest
12
-
steps:
13
-
- uses: actions/checkout@v2
14
-
- name: Setup Dagger Zenith
15
-
run: |
16
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.8 sh
17
-
sudo mv bin/dagger /usr/local/bin
18
-
dagger version
19
-
- name: Run Dagger Pipelines
20
-
run: |
21
-
dagger query --doc test.gql
22
-
dagger query --doc build.gql
23
-
working-directory: example
-25
.fluentci/example/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/example/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-25
.fluentci/example/.fluentci/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/example/.fluentci/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-25
.fluentci/example/.fluentci/.fluentci/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/example/.fluentci/.fluentci/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-28
.fluentci/example/.fluentci/.fluentci/.fluentci/.github/workflows/ci.yml
-28
.fluentci/example/.fluentci/.fluentci/.fluentci/.github/workflows/ci.yml
···
1
-
name: Codecov
2
-
3
-
# Controls when the action will run. Triggers the workflow on push or pull request
4
-
# events but only for the master branch
5
-
on:
6
-
push:
7
-
branches: [main]
8
-
pull_request:
9
-
branches: [main]
10
-
11
-
jobs:
12
-
test:
13
-
runs-on: ubuntu-latest
14
-
steps:
15
-
- uses: actions/checkout@v2
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.34
19
-
- name: Create coverage files
20
-
run: deno test --allow-read --coverage=coverage --lock-write # create coverage files
21
-
- name: Create coverage report
22
-
run: deno coverage ./coverage --lcov > coverage.lcov # create coverage report
23
-
- name: Collect coverage
24
-
uses: codecov/codecov-action@v3 # upload the report on Codecov
25
-
env:
26
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
27
-
with:
28
-
file: ./coverage.lcov
-3
.fluentci/example/.fluentci/.fluentci/.fluentci/.vscode/settings.json
-3
.fluentci/example/.fluentci/.fluentci/.fluentci/.vscode/settings.json
-132
.fluentci/example/.fluentci/.fluentci/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/example/.fluentci/.fluentci/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/example/.fluentci/.fluentci/.fluentci/CONTRIBUTING.md
-70
.fluentci/example/.fluentci/.fluentci/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/example/.fluentci/.fluentci/.fluentci/LICENSE
-19
.fluentci/example/.fluentci/.fluentci/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-88
.fluentci/example/.fluentci/.fluentci/.fluentci/README.md
-88
.fluentci/example/.fluentci/.fluentci/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use GitLab CI Pipeline and Jobs for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Quick start:
12
-
13
-
```ts
14
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
15
-
16
-
const { pipeline } = GitLab;
17
-
18
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
19
-
```
20
-
21
-
Or, if you want to use the predefined jobs:
22
-
23
-
```ts
24
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci/mod.ts";
25
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
26
-
27
-
const { fmt, lint, test } = GitLab;
28
-
29
-
const const pipeline = new GitlabCI()
30
-
.image("denoland/deno:alpine")
31
-
.addJob("fmt", fmt)
32
-
.addJob("lint", lint)
33
-
.addJob("test", test);
34
-
35
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
36
-
```
37
-
38
-
It will generate the following `.gitlab-ci.yml` file:
39
-
40
-
```yaml
41
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
42
-
43
-
image: denoland/deno:alpine
44
-
45
-
fmt:
46
-
image: denoland/deno:alpine
47
-
script:
48
-
- deno fmt --check
49
-
50
-
lint:
51
-
image: denoland/deno:alpine
52
-
script:
53
-
- deno lint
54
-
55
-
test:
56
-
image: denoland/deno:alpine
57
-
script:
58
-
- deno test
59
-
```
60
-
61
-
## ๐งช Advanced Usage
62
-
63
-
This package also provides a ready-to-use pipeline for
64
-
[Dagger](https://dagger.io/), just run the following command on your Deno
65
-
project:
66
-
67
-
```sh
68
-
dagger run deno run -A https://deno.land/x/deno_pipeline/ci.ts
69
-
```
70
-
71
-
Or, if you want to use the predefined jobs:
72
-
73
-
```ts
74
-
import Client, { connect } from "@dagger.io/dagger";
75
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
76
-
77
-
const { fmt, lint, test } = Dagger;
78
-
79
-
function pipeline(src = ".") {
80
-
connect(async (client: Client) => {
81
-
await fmt(client, src);
82
-
await lint(client, src);
83
-
await test(client, src);
84
-
});
85
-
}
86
-
87
-
pipeline();
88
-
```
-12
.fluentci/example/.fluentci/.fluentci/.fluentci/ci.ts
-12
.fluentci/example/.fluentci/.fluentci/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/example/.fluentci/.fluentci/.fluentci/deno.json
-9
.fluentci/example/.fluentci/.fluentci/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-68
.fluentci/example/.fluentci/.fluentci/.fluentci/deno.lock
-68
.fluentci/example/.fluentci/.fluentci/.fluentci/deno.lock
···
1
-
{
2
-
"version": "2",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/codecov_pipeline@v0.1.0/src/dagger/jobs.ts": "e980479e0bcd759773286145f3345ce7e1662c7d6734bfc4bbf8e6bfc93b974e",
9
-
"https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts": "a34aea3753c7079de5877f592ce31f30d05d552155729ff3e695d77326405133",
10
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
11
-
"https://esm.sh/stringify-tree@1.1.1": "8d994a105481fa944515323d89bd2596c1de79f3d9bd1386266463934716eca0",
12
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
13
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
14
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
15
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
16
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
17
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
18
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
19
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
20
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
21
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
22
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
23
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
25
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
26
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
27
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
28
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
29
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
30
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
31
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
32
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
33
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
34
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
35
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
36
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
37
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
38
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
39
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
40
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
41
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
42
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
43
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
44
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
45
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
46
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
47
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
48
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
49
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
50
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
51
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
52
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
53
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
54
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
55
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
56
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
57
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
58
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
59
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
60
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
61
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
62
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
63
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
64
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
65
-
"https://esm.sh/v130/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
66
-
"https://esm.sh/v130/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "40a9d40e0282b5432302a3da68b88aa11685bc0b8a0b70246168deed5c5773fe"
67
-
}
68
-
}
-19
.fluentci/example/.fluentci/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/example/.fluentci/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/example/.fluentci/.fluentci/.fluentci/flake.lock
-61
.fluentci/example/.fluentci/.fluentci/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/example/.fluentci/.fluentci/.fluentci/flake.nix
-26
.fluentci/example/.fluentci/.fluentci/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-28
.fluentci/example/.fluentci/.fluentci/.fluentci/import_map.json
-28
.fluentci/example/.fluentci/.fluentci/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.1.2/mod.ts",
6
-
"url": "node:url",
7
-
"readline": "node:readline",
8
-
"process": "node:process",
9
-
"path": "node:path",
10
-
"os": "node:os",
11
-
"fs": "node:fs",
12
-
"crypto": "node:crypto"
13
-
},
14
-
"scopes": {
15
-
"https://esm.sh/v128/": {
16
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
17
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
18
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
19
-
"execa": "https://esm.sh/v128/execa@7.1.1",
20
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
21
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
22
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
23
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
24
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
25
-
"tar": "https://esm.sh/v128/tar@6.1.15"
26
-
}
27
-
}
28
-
}
-4
.fluentci/example/.fluentci/.fluentci/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/index.ts
-4
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/index.ts
-197
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/jobs.ts
-197
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { upload } from "https://deno.land/x/codecov_pipeline@v0.1.0/src/dagger/jobs.ts";
3
-
import { withDevbox } from "https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts";
4
-
import { existsSync } from "fs";
5
-
6
-
export enum Job {
7
-
fmt = "fmt",
8
-
lint = "lint",
9
-
test = "test",
10
-
deploy = "deploy",
11
-
codecov = "codecov",
12
-
}
13
-
14
-
const baseCtr = (client: Client, pipeline: string) => {
15
-
if (existsSync("devbox.json")) {
16
-
return withDevbox(
17
-
client
18
-
.pipeline(pipeline)
19
-
.container()
20
-
.from("alpine:latest")
21
-
.withExec(["apk", "update"])
22
-
.withExec(["apk", "add", "bash", "curl"])
23
-
.withMountedCache("/nix", client.cacheVolume("nix"))
24
-
.withMountedCache("/etc/nix", client.cacheVolume("nix-etc"))
25
-
);
26
-
}
27
-
return client.pipeline(pipeline).container().from("denoland/deno:alpine");
28
-
};
29
-
30
-
export const lint = async (client: Client, src = ".") => {
31
-
const context = client.host().directory(src);
32
-
let command = ["deno", "lint"];
33
-
34
-
if (existsSync("devbox.json")) {
35
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
36
-
}
37
-
38
-
const ctr = baseCtr(client, Job.lint)
39
-
.withDirectory("/app", context, {
40
-
exclude: [".git", ".devbox", ".fluentci"],
41
-
})
42
-
.withWorkdir("/app")
43
-
.withExec(command);
44
-
45
-
const result = await ctr.stdout();
46
-
47
-
console.log(result);
48
-
};
49
-
50
-
export const fmt = async (client: Client, src = ".") => {
51
-
const context = client.host().directory(src);
52
-
let command = ["deno", "fmt"];
53
-
54
-
if (existsSync("devbox.json")) {
55
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
56
-
}
57
-
58
-
const ctr = baseCtr(client, Job.fmt)
59
-
.withDirectory("/app", context, {
60
-
exclude: [".git", ".devbox", ".fluentci"],
61
-
})
62
-
.withWorkdir("/app")
63
-
.withExec(command);
64
-
65
-
const result = await ctr.stdout();
66
-
67
-
console.log(result);
68
-
};
69
-
70
-
export const test = async (
71
-
client: Client,
72
-
src = ".",
73
-
options: { ignore: string[] } = { ignore: [] }
74
-
) => {
75
-
const context = client.host().directory(src);
76
-
let command = ["deno", "test", "-A", "--coverage=coverage", "--lock-write"];
77
-
78
-
if (options.ignore.length > 0) {
79
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
80
-
}
81
-
82
-
if (existsSync("devbox.json")) {
83
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
84
-
}
85
-
86
-
const ctr = baseCtr(client, Job.test)
87
-
.from("denoland/deno:alpine")
88
-
.withDirectory("/app", context, {
89
-
exclude: [".git", ".devbox", ".fluentci"],
90
-
})
91
-
.withWorkdir("/app")
92
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
93
-
.withExec(command)
94
-
.withExec(["sh", "-c", "deno coverage ./coverage --lcov > coverage.lcov"]);
95
-
96
-
await ctr.file("/app/coverage.lcov").export("./coverage.lcov");
97
-
98
-
const result = await ctr.stdout();
99
-
100
-
console.log(result);
101
-
};
102
-
103
-
export const deploy = async (client: Client, src = ".") => {
104
-
const context = client.host().directory(src);
105
-
let installDeployCtl = [
106
-
"deno",
107
-
"install",
108
-
"--allow-all",
109
-
"--no-check",
110
-
"-r",
111
-
"-f",
112
-
"https://deno.land/x/deploy/deployctl.ts",
113
-
];
114
-
const project = Deno.env.get("DENO_PROJECT");
115
-
const noStatic = Deno.env.get("NO_STATIC");
116
-
const exclude = Deno.env.get("EXCLUDE");
117
-
118
-
let command = ["deployctl", "deploy"];
119
-
120
-
if (noStatic) {
121
-
command = command.concat(["--no-static"]);
122
-
}
123
-
124
-
if (exclude) {
125
-
command = command.concat([`--exclude=${exclude}`]);
126
-
}
127
-
128
-
if (!Deno.env.get("DENO_DEPLOY_TOKEN")) {
129
-
throw new Error("DENO_DEPLOY_TOKEN environment variable is not set");
130
-
}
131
-
132
-
if (!project) {
133
-
throw new Error("DENO_PROJECT environment variable is not set");
134
-
}
135
-
136
-
const script = Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx";
137
-
command = command.concat([`--project=${project}`, script]);
138
-
139
-
if (existsSync("devbox.json")) {
140
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
141
-
installDeployCtl = [
142
-
"sh",
143
-
"-c",
144
-
`devbox run -- ${installDeployCtl.join(" ")}`,
145
-
];
146
-
}
147
-
148
-
const ctr = baseCtr(client, Job.deploy)
149
-
.from("denoland/deno:alpine")
150
-
.withDirectory("/app", context, {
151
-
exclude: [".git", ".devbox", ".fluentci"],
152
-
})
153
-
.withWorkdir("/app")
154
-
.withEnvVariable("PATH", "/root/.deno/bin:$PATH", { expand: true })
155
-
.withEnvVariable("DENO_DEPLOY_TOKEN", Deno.env.get("DENO_DEPLOY_TOKEN")!)
156
-
.withEnvVariable(
157
-
"DENO_MAIN_SCRIPT",
158
-
Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx"
159
-
)
160
-
.withExec(installDeployCtl)
161
-
.withExec(command);
162
-
163
-
const result = await ctr.stdout();
164
-
165
-
console.log(result);
166
-
};
167
-
168
-
export type JobExec = (
169
-
client: Client,
170
-
src?: string
171
-
) =>
172
-
| Promise<void>
173
-
| ((
174
-
client: Client,
175
-
src?: string,
176
-
options?: {
177
-
ignore: string[];
178
-
}
179
-
) => Promise<void>);
180
-
181
-
export const codecov = upload;
182
-
183
-
export const runnableJobs: Record<Job, JobExec> = {
184
-
[Job.fmt]: fmt,
185
-
[Job.lint]: lint,
186
-
[Job.test]: test,
187
-
[Job.deploy]: deploy,
188
-
[Job.codecov]: upload,
189
-
};
190
-
191
-
export const jobDescriptions: Record<Job, string> = {
192
-
[Job.fmt]: "Format your code",
193
-
[Job.lint]: "Lint your code",
194
-
[Job.test]: "Run your tests",
195
-
[Job.deploy]: "Deploy your code to Deno Deploy",
196
-
[Job.codecov]: "Upload your code coverage to Codecov",
197
-
};
-21
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/runner.ts
-3
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/runner.ts
-52
.fluentci/example/.fluentci/.fluentci/.fluentci/src/github/config.ts
-52
.fluentci/example/.fluentci/.fluentci/.fluentci/src/github/config.ts
···
1
-
import { JobSpec, Workflow } from "fluent_github_actions";
2
-
3
-
export function generateYaml() {
4
-
const workflow = new Workflow("Codecov");
5
-
6
-
const push = {
7
-
branches: ["main"],
8
-
};
9
-
10
-
const setupDagger = `\
11
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
12
-
sudo mv bin/dagger /usr/local/bin
13
-
dagger version`;
14
-
15
-
const tests: JobSpec = {
16
-
"runs-on": "ubuntu-latest",
17
-
steps: [
18
-
{
19
-
uses: "actions/checkout@v2",
20
-
},
21
-
{
22
-
uses: "denoland/setup-deno@v1",
23
-
with: {
24
-
"deno-version": "v1.37",
25
-
},
26
-
},
27
-
{
28
-
name: "Setup Fluent CI CLI",
29
-
run: "deno install -A -r https://cli.fluentci.io -n fluentci",
30
-
},
31
-
{
32
-
name: "Setup Dagger",
33
-
run: setupDagger,
34
-
},
35
-
{
36
-
name: "List Jobs",
37
-
run: "fluentci ls .",
38
-
},
39
-
{
40
-
name: "Run Dagger Pipelines",
41
-
run: "dagger run fluentci . fmt lint test codecov",
42
-
env: {
43
-
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}",
44
-
},
45
-
},
46
-
],
47
-
};
48
-
49
-
workflow.on({ push }).jobs({ tests });
50
-
51
-
workflow.save(".github/workflows/ci.yml");
52
-
}
-3
.fluentci/example/.fluentci/.fluentci/.fluentci/src/github/init.ts
-3
.fluentci/example/.fluentci/.fluentci/.fluentci/src/github/init.ts
-4
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/index.ts
-4
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/index.ts
-9
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-28
.fluentci/example/.fluentci/.fluentci/.github/workflows/ci.yml
-28
.fluentci/example/.fluentci/.fluentci/.github/workflows/ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent Github Actions
2
-
3
-
name: Codecov
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
tests:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: List Jobs
24
-
run: fluentci ls .
25
-
- name: Run Dagger Pipelines
26
-
run: dagger run fluentci . fmt lint test codecov
27
-
env:
28
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-3
.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
-3
.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
-132
.fluentci/example/.fluentci/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/example/.fluentci/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/example/.fluentci/.fluentci/CONTRIBUTING.md
-70
.fluentci/example/.fluentci/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/example/.fluentci/.fluentci/LICENSE
-19
.fluentci/example/.fluentci/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-69
.fluentci/example/.fluentci/.fluentci/README.md
-69
.fluentci/example/.fluentci/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use CI/CD Pipeline for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Run the following command:
12
-
13
-
```bash
14
-
dagger run fluentci deno_pipeline
15
-
```
16
-
17
-
Or, if you want to use it as a template:
18
-
19
-
```bash
20
-
fluentci init -t deno
21
-
```
22
-
23
-
This will create a `.fluentci` folder in your project.
24
-
25
-
Now you can run the pipeline with:
26
-
27
-
```bash
28
-
dagger run fluentci .
29
-
```
30
-
31
-
## Environment variables (Deno Deploy)
32
-
33
-
| Variable | Description | Default |
34
-
| ----------------- | ------------------------- | ---------- |
35
-
| DENO_PROJECT | Your project name | |
36
-
| NO_STATIC | Disable static assets | `false` |
37
-
| EXCLUDE | Exclude files from deploy | |
38
-
| DENO_DEPLOY_TOKEN | Your Deno Deploy token | |
39
-
| DENO_MAIN_SCRIPT | Your main script | `main.tsx` |
40
-
41
-
## Jobs
42
-
43
-
| Job | Description | Options |
44
-
| ------ | ------------------------------ | ---------------------- |
45
-
| fmt | Format your code | |
46
-
| lint | Lint your code | |
47
-
| test | Run your tests | `{ ignore: string[] }` |
48
-
| deploy | Deploy your app to Deno Deploy | |
49
-
50
-
## Programmatic usage
51
-
52
-
You can also use this pipeline programmatically:
53
-
54
-
```ts
55
-
import { Client, connect } from "https://esm.sh/@dagger.io/dagger@0.8.1";
56
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
57
-
58
-
const { fmt, lint, test } = Dagger;
59
-
60
-
function pipeline(src = ".") {
61
-
connect(async (client: Client) => {
62
-
await fmt(client, src);
63
-
await lint(client, src);
64
-
await test(client, src);
65
-
});
66
-
}
67
-
68
-
pipeline();
69
-
```
-12
.fluentci/example/.fluentci/.fluentci/ci.ts
-12
.fluentci/example/.fluentci/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/example/.fluentci/.fluentci/deno.json
-9
.fluentci/example/.fluentci/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-68
.fluentci/example/.fluentci/.fluentci/deno.lock
-68
.fluentci/example/.fluentci/.fluentci/deno.lock
···
1
-
{
2
-
"version": "3",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/codecov_pipeline@v0.1.1/src/dagger/jobs.ts": "ea5ea4fb985f879fdd1c0aed77ac635ba090606c1ecce9d5f5c107493d287984",
9
-
"https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts": "a34aea3753c7079de5877f592ce31f30d05d552155729ff3e695d77326405133",
10
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
11
-
"https://esm.sh/stringify-tree@1.1.1": "a0515b0f4fe97a6972047a588b7982592d9079e7aeac3323b0d26448a757cf84",
12
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
13
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
14
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
15
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
16
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
17
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
18
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
19
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
20
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
21
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
22
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
23
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
25
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
26
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
27
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
28
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
29
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
30
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
31
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
32
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
33
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
34
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
35
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
36
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
37
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
38
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
39
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
40
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
41
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
42
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
43
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
44
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
45
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
46
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
47
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
48
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
49
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
50
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
51
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
52
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
53
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
54
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
55
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
56
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
57
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
58
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
59
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
60
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
61
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
62
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
63
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
64
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
65
-
"https://esm.sh/v132/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
66
-
"https://esm.sh/v132/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "eaa9333a5219638ad170d12e12603ae00ae80fc8bf02cc112cfec7294e6bcb43"
67
-
}
68
-
}
-25
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-25
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/.devcontainer/devcontainer.json
-25
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/.devcontainer/devcontainer.json
···
1
-
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
-
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
3
-
{
4
-
"name": "Debian",
5
-
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
-
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7
-
"features": {
8
-
"ghcr.io/devcontainers/features/github-cli:1": {},
9
-
"ghcr.io/devcontainers/features/nix:1": {}
10
-
},
11
-
12
-
// Features to add to the dev container. More info: https://containers.dev/features.
13
-
// "features": {},
14
-
15
-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
16
-
// "forwardPorts": [],
17
-
18
-
// Use 'postCreateCommand' to run commands after the container is created.
19
-
"postCreateCommand": "nix develop --experimental-features \"nix-command flakes\""
20
-
// Configure tool-specific properties.
21
-
// "customizations": {},
22
-
23
-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24
-
// "remoteUser": "root"
25
-
}
-28
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/.github/workflows/ci.yml
-28
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/.github/workflows/ci.yml
···
1
-
name: Codecov
2
-
3
-
# Controls when the action will run. Triggers the workflow on push or pull request
4
-
# events but only for the master branch
5
-
on:
6
-
push:
7
-
branches: [main]
8
-
pull_request:
9
-
branches: [main]
10
-
11
-
jobs:
12
-
test:
13
-
runs-on: ubuntu-latest
14
-
steps:
15
-
- uses: actions/checkout@v2
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.34
19
-
- name: Create coverage files
20
-
run: deno test --allow-read --coverage=coverage --lock-write # create coverage files
21
-
- name: Create coverage report
22
-
run: deno coverage ./coverage --lcov > coverage.lcov # create coverage report
23
-
- name: Collect coverage
24
-
uses: codecov/codecov-action@v3 # upload the report on Codecov
25
-
env:
26
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
27
-
with:
28
-
file: ./coverage.lcov
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
-132
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/CONTRIBUTING.md
-70
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/LICENSE
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-88
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/README.md
-88
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use GitLab CI Pipeline and Jobs for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Quick start:
12
-
13
-
```ts
14
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
15
-
16
-
const { pipeline } = GitLab;
17
-
18
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
19
-
```
20
-
21
-
Or, if you want to use the predefined jobs:
22
-
23
-
```ts
24
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci/mod.ts";
25
-
import { GitLab } from "https://deno.land/x/deno_pipeline/mod.ts";
26
-
27
-
const { fmt, lint, test } = GitLab;
28
-
29
-
const const pipeline = new GitlabCI()
30
-
.image("denoland/deno:alpine")
31
-
.addJob("fmt", fmt)
32
-
.addJob("lint", lint)
33
-
.addJob("test", test);
34
-
35
-
pipeline.write(); // Write the pipeline to the file .gitlab-ci.yml
36
-
```
37
-
38
-
It will generate the following `.gitlab-ci.yml` file:
39
-
40
-
```yaml
41
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
42
-
43
-
image: denoland/deno:alpine
44
-
45
-
fmt:
46
-
image: denoland/deno:alpine
47
-
script:
48
-
- deno fmt --check
49
-
50
-
lint:
51
-
image: denoland/deno:alpine
52
-
script:
53
-
- deno lint
54
-
55
-
test:
56
-
image: denoland/deno:alpine
57
-
script:
58
-
- deno test
59
-
```
60
-
61
-
## ๐งช Advanced Usage
62
-
63
-
This package also provides a ready-to-use pipeline for
64
-
[Dagger](https://dagger.io/), just run the following command on your Deno
65
-
project:
66
-
67
-
```sh
68
-
dagger run deno run -A https://deno.land/x/deno_pipeline/ci.ts
69
-
```
70
-
71
-
Or, if you want to use the predefined jobs:
72
-
73
-
```ts
74
-
import Client, { connect } from "@dagger.io/dagger";
75
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
76
-
77
-
const { fmt, lint, test } = Dagger;
78
-
79
-
function pipeline(src = ".") {
80
-
connect(async (client: Client) => {
81
-
await fmt(client, src);
82
-
await lint(client, src);
83
-
await test(client, src);
84
-
});
85
-
}
86
-
87
-
pipeline();
88
-
```
-12
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/ci.ts
-12
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/deno.json
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-66
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/deno.lock
-66
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/deno.lock
···
1
-
{
2
-
"version": "2",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
9
-
"https://esm.sh/stringify-tree@1.1.1": "8d994a105481fa944515323d89bd2596c1de79f3d9bd1386266463934716eca0",
10
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
11
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
12
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
13
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
14
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
15
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
16
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
17
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
18
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
19
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
20
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
21
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
22
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
23
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
25
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
26
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
27
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
28
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
29
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
30
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
31
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
32
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
33
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
34
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
35
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
36
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
37
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
38
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
39
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
40
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
41
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
42
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
43
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
44
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
45
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
46
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
47
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
48
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
49
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
50
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
51
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
52
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
53
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
54
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
55
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
56
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
57
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
58
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
59
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
60
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
61
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
62
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
63
-
"https://esm.sh/v130/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
64
-
"https://esm.sh/v130/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "40a9d40e0282b5432302a3da68b88aa11685bc0b8a0b70246168deed5c5773fe"
65
-
}
66
-
}
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/flake.lock
-61
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/flake.nix
-26
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/import_map.json
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"url": "node:url",
6
-
"readline": "node:readline",
7
-
"process": "node:process",
8
-
"path": "node:path",
9
-
"os": "node:os",
10
-
"fs": "node:fs",
11
-
"crypto": "node:crypto"
12
-
},
13
-
"scopes": {
14
-
"https://esm.sh/v128/": {
15
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
16
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
17
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
18
-
"execa": "https://esm.sh/v128/execa@7.1.1",
19
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
20
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
21
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
22
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
23
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
24
-
"tar": "https://esm.sh/v128/tar@6.1.15"
25
-
}
26
-
}
27
-
}
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
-111
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/jobs.ts
-111
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { existsSync } from "fs";
3
-
4
-
export enum Job {
5
-
fmt = "fmt",
6
-
lint = "lint",
7
-
test = "test",
8
-
}
9
-
10
-
export const lint = async (client: Client, src = ".") => {
11
-
const context = client.host().directory(src);
12
-
let command = ["deno", "lint"];
13
-
14
-
if (existsSync("devbox.json")) {
15
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
16
-
}
17
-
18
-
const ctr = client
19
-
.pipeline(Job.lint)
20
-
.container()
21
-
.from("denoland/deno:alpine")
22
-
.withDirectory("/app", context, {
23
-
exclude: [".git", ".devbox", ".fluentci"],
24
-
})
25
-
.withWorkdir("/app")
26
-
.withExec(command);
27
-
28
-
const result = await ctr.stdout();
29
-
30
-
console.log(result);
31
-
};
32
-
33
-
export const fmt = async (client: Client, src = ".") => {
34
-
const context = client.host().directory(src);
35
-
let command = ["deno", "fmt"];
36
-
37
-
if (existsSync("devbox.json")) {
38
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
39
-
}
40
-
41
-
const ctr = client
42
-
.pipeline(Job.fmt)
43
-
.container()
44
-
.from("denoland/deno:alpine")
45
-
.withDirectory("/app", context, {
46
-
exclude: [".git", ".devbox", ".fluentci"],
47
-
})
48
-
.withWorkdir("/app")
49
-
.withExec(command);
50
-
51
-
const result = await ctr.stdout();
52
-
53
-
console.log(result);
54
-
};
55
-
56
-
export const test = async (
57
-
client: Client,
58
-
src = ".",
59
-
options: { ignore: string[] } = { ignore: [] }
60
-
) => {
61
-
const context = client.host().directory(src);
62
-
let command = ["deno", "test", "-A", "--lock-write"];
63
-
64
-
if (options.ignore.length > 0) {
65
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
66
-
}
67
-
68
-
if (existsSync("devbox.json")) {
69
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
70
-
}
71
-
72
-
const ctr = client
73
-
.pipeline(Job.test)
74
-
.container()
75
-
.from("denoland/deno:alpine")
76
-
.withDirectory("/app", context, {
77
-
exclude: [".git", ".devbox", ".fluentci"],
78
-
})
79
-
.withWorkdir("/app")
80
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
81
-
.withExec(command);
82
-
83
-
const result = await ctr.stdout();
84
-
85
-
console.log(result);
86
-
};
87
-
88
-
export type JobExec = (
89
-
client: Client,
90
-
src?: string
91
-
) =>
92
-
| Promise<void>
93
-
| ((
94
-
client: Client,
95
-
src?: string,
96
-
options?: {
97
-
ignore: string[];
98
-
}
99
-
) => Promise<void>);
100
-
101
-
export const runnableJobs: Record<Job, JobExec> = {
102
-
[Job.fmt]: fmt,
103
-
[Job.lint]: lint,
104
-
[Job.test]: test,
105
-
};
106
-
107
-
export const jobDescriptions: Record<Job, string> = {
108
-
[Job.fmt]: "Format your code",
109
-
[Job.lint]: "Lint your code",
110
-
[Job.test]: "Run your tests",
111
-
};
-21
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/runner.ts
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/runner.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-28
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.github/workflows/ci.yml
-28
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.github/workflows/ci.yml
···
1
-
name: Codecov
2
-
3
-
# Controls when the action will run. Triggers the workflow on push or pull request
4
-
# events but only for the master branch
5
-
on:
6
-
push:
7
-
branches: [main]
8
-
pull_request:
9
-
branches: [main]
10
-
11
-
jobs:
12
-
test:
13
-
runs-on: ubuntu-latest
14
-
steps:
15
-
- uses: actions/checkout@v2
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.34
19
-
- name: Create coverage files
20
-
run: deno test --allow-read --coverage=coverage --lock-write # create coverage files
21
-
- name: Create coverage report
22
-
run: deno coverage ./coverage --lcov > coverage.lcov # create coverage report
23
-
- name: Collect coverage
24
-
uses: codecov/codecov-action@v3 # upload the report on Codecov
25
-
env:
26
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
27
-
with:
28
-
file: ./coverage.lcov
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.vscode/settings.json
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.vscode/settings.json
-132
.fluentci/example/.fluentci/.fluentci/example/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/example/.fluentci/.fluentci/example/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/deno-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/example/.fluentci/.fluentci/example/.fluentci/CONTRIBUTING.md
-70
.fluentci/example/.fluentci/.fluentci/example/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/LICENSE
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-58
.fluentci/example/.fluentci/.fluentci/example/.fluentci/README.md
-58
.fluentci/example/.fluentci/.fluentci/example/.fluentci/README.md
···
1
-
# Deno Pipeline
2
-
3
-
[](https://deno.land/x/deno_pipeline)
4
-

5
-
[](https://codecov.io/gh/fluent-ci-templates/deno-pipeline)
6
-
7
-
A ready-to-use CI/CD Pipeline for your Deno projects.
8
-
9
-
## ๐ Usage
10
-
11
-
Run the following command:
12
-
13
-
```bash
14
-
dagger run fluentci deno_pipeline
15
-
```
16
-
17
-
Or, if you want to use it as a template:
18
-
19
-
```bash
20
-
fluentci init -t deno
21
-
```
22
-
23
-
This will create a `.fluentci` folder in your project.
24
-
25
-
Now you can run the pipeline with:
26
-
27
-
```bash
28
-
dagger run fluentci .
29
-
```
30
-
31
-
## Jobs
32
-
33
-
| Job | Description | Options |
34
-
| ----- | ---------------- | ---------------------- |
35
-
| fmt | Format your code | |
36
-
| lint | Lint your code | |
37
-
| test | Run your tests | `{ ignore: string[] }` |
38
-
39
-
## Programmatic usage
40
-
41
-
You can also use this pipeline programmatically:
42
-
43
-
```ts
44
-
import Client, { connect } from "@dagger.io/dagger";
45
-
import { Dagger } from "https://deno.land/x/deno_pipeline/mod.ts";
46
-
47
-
const { fmt, lint, test } = Dagger;
48
-
49
-
function pipeline(src = ".") {
50
-
connect(async (client: Client) => {
51
-
await fmt(client, src);
52
-
await lint(client, src);
53
-
await test(client, src);
54
-
});
55
-
}
56
-
57
-
pipeline();
58
-
```
-12
.fluentci/example/.fluentci/.fluentci/example/.fluentci/ci.ts
-12
.fluentci/example/.fluentci/.fluentci/example/.fluentci/ci.ts
···
1
-
const command = new Deno.Command(Deno.execPath(), {
2
-
args: [
3
-
"run",
4
-
"-A",
5
-
"--import-map=https://deno.land/x/deno_pipeline/import_map.json",
6
-
"https://deno.land/x/deno_pipeline/src/dagger/runner.ts",
7
-
],
8
-
});
9
-
10
-
const { stdout } = await command.output();
11
-
12
-
console.log(new TextDecoder().decode(stdout));
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/deno.json
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"ci:dagger": "dagger run deno run -A src/dagger/runner.ts"
8
-
}
9
-
}
-67
.fluentci/example/.fluentci/.fluentci/example/.fluentci/deno.lock
-67
.fluentci/example/.fluentci/.fluentci/example/.fluentci/deno.lock
···
1
-
{
2
-
"version": "2",
3
-
"remote": {
4
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
5
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
6
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
7
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
8
-
"https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts": "a34aea3753c7079de5877f592ce31f30d05d552155729ff3e695d77326405133",
9
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
10
-
"https://esm.sh/stringify-tree@1.1.1": "8d994a105481fa944515323d89bd2596c1de79f3d9bd1386266463934716eca0",
11
-
"https://esm.sh/v128/*@dagger.io/dagger@0.6.3": "cb691a77c0cdaee22f2b8393731b5143c83ce22dbbea204cdbfd203768d15b64",
12
-
"https://esm.sh/v128/@dagger.io/dagger@0.6.3/X-ZS8q/denonext/dagger.mjs": "fd0901784d75b99615b5409c3654b5c7edfc5ba377c9e1a5a67ffff4f7d3ac32",
13
-
"https://esm.sh/v128/adm-zip@0.5.10": "d9c54d6d2dd788462781a57d923295bd79304e6fd74b242fd4b30e35b39c5dcf",
14
-
"https://esm.sh/v128/adm-zip@0.5.10/denonext/adm-zip.mjs": "07a9731547905e0ca55ae917e1969d7f6d04fb3773f906ce3306891337eb4849",
15
-
"https://esm.sh/v128/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
16
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
17
-
"https://esm.sh/v128/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0569a26e7ad4b3376516cbc9b1942e10961a58030eadcea8c848e6b956eb355c",
18
-
"https://esm.sh/v128/data-uri-to-buffer@4.0.1/denonext/data-uri-to-buffer.mjs": "70ef987b1da58391495ecfad9888d996469224faf3cd996d81dc2e059feb9f31",
19
-
"https://esm.sh/v128/env-paths@3.0.0": "8400fb23319be9b30d7b40d1c865541c5b3c7726cdf9b74000bc0f1678d52ecf",
20
-
"https://esm.sh/v128/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
21
-
"https://esm.sh/v128/execa@7.1.1": "a40c7030df81ab0847a5d844f4c5c6420af973dff05fef88e53cbb9b8667fdc2",
22
-
"https://esm.sh/v128/execa@7.1.1/denonext/execa.mjs": "9d5943544c0df3761b52f2c095f89a03ca6c028d818a8f0475ff883b0408f154",
23
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/fetch-blob.mjs": "0531568b36c0f6db3e9825fbb2d08dee51100eb675c2bf1d98d6971a92010721",
24
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/file.js": "fd82828163a4e7bdc15190d8c3dbfd92f93274d05bd7f7f5ab81093e3ad7e9c2",
25
-
"https://esm.sh/v128/fetch-blob@3.2.0/denonext/from.js": "7d3258c7960755497f90879806f0b815d5e564c2ac1523238af5cb9552ff5c45",
26
-
"https://esm.sh/v128/formdata-polyfill@4.0.10/denonext/esm.min.js": "b6d65a204e81eca699d9eb6f867e9efffa42db39a8f161690915a89e5eb1766f",
27
-
"https://esm.sh/v128/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "74b00283d556b281bdfd6a669576d852f2c43702043c411985f8f8188d208c5d",
28
-
"https://esm.sh/v128/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
29
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
30
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
31
-
"https://esm.sh/v128/graphql-tag@2.12.6": "5bfa27da9c9918fb52a01b8579891e804e0365d91118df1f2e0957a72dacdc39",
32
-
"https://esm.sh/v128/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "331d09949efc4ac60c84a69b52a7da8b333210493900e54953ae4604c9874527",
33
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
34
-
"https://esm.sh/v128/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
35
-
"https://esm.sh/v128/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
36
-
"https://esm.sh/v128/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
37
-
"https://esm.sh/v128/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
38
-
"https://esm.sh/v128/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
39
-
"https://esm.sh/v128/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
40
-
"https://esm.sh/v128/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
41
-
"https://esm.sh/v128/minizlib@2.1.2/denonext/minizlib.mjs": "0d919b6a0c60d5a31e14d748ff9d62aeae2923b604bcc6a22f90fa4bbd400d68",
42
-
"https://esm.sh/v128/mkdirp@1.0.4/denonext/mkdirp.mjs": "ee129b32e55dd8bede6b1bbd1978f7775fa5e2720d5a7ae07bf1e8c99abd77c7",
43
-
"https://esm.sh/v128/node-color-log@10.0.2": "05a277987c64153af1252167135076155fdc6b39ca260b2bdc39750da12d2a2d",
44
-
"https://esm.sh/v128/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
45
-
"https://esm.sh/v128/node-domexception@1.0.0/denonext/node-domexception.mjs": "bb35ba54c1a2b35870618876c0c96310a28ae58aecff33c8eed58a582e270ff4",
46
-
"https://esm.sh/v128/node-fetch@3.3.1": "916dcee177a69fb0e46970c528cb66fcd4973488f861844c0a235bfc645b0506",
47
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/node-fetch.mjs": "dc3a8f1f2fc9eb26d0d33e49f3750acc265d51a1a54bbd670c5d9f640b633a93",
48
-
"https://esm.sh/v128/node-fetch@3.3.1/denonext/src/utils/multipart-parser.js": "713b1b8cbafc4bfb7358debeb35d507e0d2328f0a28b8a2a7d79a3e5e4f5e5b8",
49
-
"https://esm.sh/v128/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "3540b8c2dd1430f10d580f323f3a51aa30094da27a9220cce03ce69884b163bb",
50
-
"https://esm.sh/v128/onetime@6.0.0/denonext/onetime.mjs": "6e362222575d815f37fb813168d7069dd6a0f6bb6f972ed54d1bccb0f9fb3e1b",
51
-
"https://esm.sh/v128/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
52
-
"https://esm.sh/v128/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
53
-
"https://esm.sh/v128/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
54
-
"https://esm.sh/v128/shebang-command@2.0.0/denonext/shebang-command.mjs": "404e0fb09a782ca9495d53c721bb84b673b7b2e1054e021852143a6b91ca0e4f",
55
-
"https://esm.sh/v128/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
56
-
"https://esm.sh/v128/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
57
-
"https://esm.sh/v128/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
58
-
"https://esm.sh/v128/tar@6.1.15": "0460339f8aba5f287e8bebe258fe3fe13cb12f85820693f25724f0d98ef1258e",
59
-
"https://esm.sh/v128/tar@6.1.15/denonext/tar.mjs": "6194d892de8457b3b1f11d5cbacda1d540b453b45e8cb9f5f610abfb3e490b65",
60
-
"https://esm.sh/v128/tslib@2.6.0/denonext/tslib.mjs": "2215292e6fcf28a7a081eee911f127bb3c44cdd61ff0651e3e384d7a49b4e42b",
61
-
"https://esm.sh/v128/web-streams-polyfill@3.2.1/denonext/dist/ponyfill.es2018.js": "a2edb52a93494cda06386b3d6a168016b366e78f02c5eff1f94a0240be12ac96",
62
-
"https://esm.sh/v128/which@2.0.2/denonext/which.mjs": "86bf76e4937edb7fa3464d7bb9a426ef273684d1cefbec5ba5f1bdcb5cafff91",
63
-
"https://esm.sh/v128/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
64
-
"https://esm.sh/v130/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
65
-
"https://esm.sh/v130/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "40a9d40e0282b5432302a3da68b88aa11685bc0b8a0b70246168deed5c5773fe"
66
-
}
67
-
}
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/example/.fluentci/.fluentci/example/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/example/.fluentci/.fluentci/example/.fluentci/flake.lock
-61
.fluentci/example/.fluentci/.fluentci/example/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/example/.fluentci/.fluentci/example/.fluentci/flake.nix
-26
.fluentci/example/.fluentci/.fluentci/example/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/import_map.json
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"url": "node:url",
6
-
"readline": "node:readline",
7
-
"process": "node:process",
8
-
"path": "node:path",
9
-
"os": "node:os",
10
-
"fs": "node:fs",
11
-
"crypto": "node:crypto"
12
-
},
13
-
"scopes": {
14
-
"https://esm.sh/v128/": {
15
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
16
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
17
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
18
-
"execa": "https://esm.sh/v128/execa@7.1.1",
19
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
20
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
21
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
22
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
23
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
24
-
"tar": "https://esm.sh/v128/tar@6.1.15"
25
-
}
26
-
}
27
-
}
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/index.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/index.ts
-188
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/jobs.ts
-188
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { withDevbox } from "https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts";
3
-
import { existsSync } from "fs";
4
-
5
-
export enum Job {
6
-
fmt = "fmt",
7
-
lint = "lint",
8
-
test = "test",
9
-
deploy = "deploy",
10
-
}
11
-
12
-
const baseCtr = (client: Client, pipeline: string) => {
13
-
if (existsSync("devbox.json")) {
14
-
return withDevbox(
15
-
client
16
-
.pipeline(pipeline)
17
-
.container()
18
-
.from("alpine:latest")
19
-
.withExec(["apk", "update"])
20
-
.withExec(["apk", "add", "bash", "curl"])
21
-
.withMountedCache("/nix", client.cacheVolume("nix"))
22
-
.withMountedCache("/etc/nix", client.cacheVolume("nix-etc"))
23
-
);
24
-
}
25
-
return client.pipeline(pipeline).container().from("denoland/deno:alpine");
26
-
};
27
-
28
-
export const lint = async (client: Client, src = ".") => {
29
-
const context = client.host().directory(src);
30
-
let command = ["deno", "lint"];
31
-
32
-
if (existsSync("devbox.json")) {
33
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
34
-
}
35
-
36
-
const ctr = baseCtr(client, Job.lint)
37
-
.withDirectory("/app", context, {
38
-
exclude: [".git", ".devbox", ".fluentci"],
39
-
})
40
-
.withWorkdir("/app")
41
-
.withExec(command);
42
-
43
-
const result = await ctr.stdout();
44
-
45
-
console.log(result);
46
-
};
47
-
48
-
export const fmt = async (client: Client, src = ".") => {
49
-
const context = client.host().directory(src);
50
-
let command = ["deno", "fmt"];
51
-
52
-
if (existsSync("devbox.json")) {
53
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
54
-
}
55
-
56
-
const ctr = baseCtr(client, Job.fmt)
57
-
.withDirectory("/app", context, {
58
-
exclude: [".git", ".devbox", ".fluentci"],
59
-
})
60
-
.withWorkdir("/app")
61
-
.withExec(command);
62
-
63
-
const result = await ctr.stdout();
64
-
65
-
console.log(result);
66
-
};
67
-
68
-
export const test = async (
69
-
client: Client,
70
-
src = ".",
71
-
options: { ignore: string[] } = { ignore: [] }
72
-
) => {
73
-
const context = client.host().directory(src);
74
-
let command = ["deno", "test", "-A", "--lock-write"];
75
-
76
-
if (options.ignore.length > 0) {
77
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
78
-
}
79
-
80
-
if (existsSync("devbox.json")) {
81
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
82
-
}
83
-
84
-
const ctr = baseCtr(client, Job.test)
85
-
.from("denoland/deno:alpine")
86
-
.withDirectory("/app", context, {
87
-
exclude: [".git", ".devbox", ".fluentci"],
88
-
})
89
-
.withWorkdir("/app")
90
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
91
-
.withExec(command);
92
-
93
-
const result = await ctr.stdout();
94
-
95
-
console.log(result);
96
-
};
97
-
98
-
export const deploy = async (client: Client, src = ".") => {
99
-
const context = client.host().directory(src);
100
-
let installDeployCtl = [
101
-
"deno",
102
-
"install",
103
-
"--allow-all",
104
-
"--no-check",
105
-
"-r",
106
-
"-f",
107
-
"https://deno.land/x/deploy/deployctl.ts",
108
-
];
109
-
const project = Deno.env.get("DENO_PROJECT");
110
-
const noStatic = Deno.env.get("NO_STATIC");
111
-
const exclude = Deno.env.get("EXCLUDE");
112
-
113
-
let command = ["deployctl", "deploy"];
114
-
115
-
if (noStatic) {
116
-
command = command.concat(["--no-static"]);
117
-
}
118
-
119
-
if (exclude) {
120
-
command = command.concat([`--exclude=${exclude}`]);
121
-
}
122
-
123
-
if (!Deno.env.get("DENO_DEPLOY_TOKEN")) {
124
-
throw new Error("DENO_DEPLOY_TOKEN environment variable is not set");
125
-
}
126
-
127
-
if (!project) {
128
-
throw new Error("DENO_PROJECT environment variable is not set");
129
-
}
130
-
131
-
const script = Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx";
132
-
command = command.concat([`--project=${project}`, script]);
133
-
134
-
if (existsSync("devbox.json")) {
135
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
136
-
installDeployCtl = [
137
-
"sh",
138
-
"-c",
139
-
`devbox run -- ${installDeployCtl.join(" ")}`,
140
-
];
141
-
}
142
-
143
-
const ctr = baseCtr(client, Job.deploy)
144
-
.from("denoland/deno:alpine")
145
-
.withDirectory("/app", context, {
146
-
exclude: [".git", ".devbox", ".fluentci"],
147
-
})
148
-
.withWorkdir("/app")
149
-
.withEnvVariable("PATH", "/root/.deno/bin:$PATH", { expand: true })
150
-
.withEnvVariable("DENO_DEPLOY_TOKEN", Deno.env.get("DENO_DEPLOY_TOKEN")!)
151
-
.withEnvVariable(
152
-
"DENO_MAIN_SCRIPT",
153
-
Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx"
154
-
)
155
-
.withExec(installDeployCtl)
156
-
.withExec(command);
157
-
158
-
const result = await ctr.stdout();
159
-
160
-
console.log(result);
161
-
};
162
-
163
-
export type JobExec = (
164
-
client: Client,
165
-
src?: string
166
-
) =>
167
-
| Promise<void>
168
-
| ((
169
-
client: Client,
170
-
src?: string,
171
-
options?: {
172
-
ignore: string[];
173
-
}
174
-
) => Promise<void>);
175
-
176
-
export const runnableJobs: Record<Job, JobExec> = {
177
-
[Job.fmt]: fmt,
178
-
[Job.lint]: lint,
179
-
[Job.test]: test,
180
-
[Job.deploy]: deploy,
181
-
};
182
-
183
-
export const jobDescriptions: Record<Job, string> = {
184
-
[Job.fmt]: "Format your code",
185
-
[Job.lint]: "Lint your code",
186
-
[Job.test]: "Run your tests",
187
-
[Job.deploy]: "Deploy your code to Deno Deploy",
188
-
};
-21
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/runner.ts
-3
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/runner.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/index.ts
-4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/index.ts
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-3
.fluentci/example/.fluentci/.fluentci/example/.vscode/settings.json
-3
.fluentci/example/.fluentci/.fluentci/example/.vscode/settings.json
-16
.fluentci/example/.fluentci/.fluentci/example/README.md
-16
.fluentci/example/.fluentci/.fluentci/example/README.md
···
1
-
# Deno Pipeline Example
2
-
3
-
This is an example using the [Deno Pipeline](https://github.com/fluent-ci-templates/deno-pipeline).
4
-
5
-
## ๐ Usage
6
-
7
-
You need to set the following environment variables:
8
-
9
-
- `DENO_DEPLOY_TOKEN`: Your Deno Deploy token.
10
-
- `DENO_PROJECT`: Your project name.
11
-
12
-
Then, run the following command:
13
-
14
-
```bash
15
-
dagger run fluentci . fmt lint deploy
16
-
```
-20
.fluentci/example/.fluentci/.fluentci/example/main.tsx
-20
.fluentci/example/.fluentci/.fluentci/example/main.tsx
···
1
-
/** @jsx h */
2
-
import { serve } from "https://deno.land/std@0.190.0/http/server.ts";
3
-
import html, { h } from "https://deno.land/x/htm@0.2.1/mod.ts";
4
-
5
-
const handler = (req: Request) =>
6
-
html({
7
-
title: "Hello World!",
8
-
styles: [
9
-
"html, body { margin: 0; height: 100%; }",
10
-
"body { background: #86efac; display: flex; flex-direction: column; align-items: center; justify-content: center; }",
11
-
],
12
-
body: (
13
-
<body>
14
-
<img width="64" src="https://dash.deno.com/assets/logo.svg" />
15
-
<h1>Hello Patricia!</h1>
16
-
</body>
17
-
),
18
-
});
19
-
20
-
serve(handler);
-19
.fluentci/example/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
-19
.fluentci/example/.fluentci/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent GitLab CI
2
-
3
-
image: denoland/deno:alpine
4
-
5
-
fmt:
6
-
image: denoland/deno:alpine
7
-
script:
8
-
- deno fmt --check
9
-
10
-
lint:
11
-
image: denoland/deno:alpine
12
-
script:
13
-
- deno lint
14
-
15
-
test:
16
-
image: denoland/deno:alpine
17
-
script:
18
-
- deno test
19
-
-61
.fluentci/example/.fluentci/.fluentci/flake.lock
-61
.fluentci/example/.fluentci/.fluentci/flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"flake-utils": {
4
-
"inputs": {
5
-
"systems": "systems"
6
-
},
7
-
"locked": {
8
-
"lastModified": 1687709756,
9
-
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
10
-
"owner": "numtide",
11
-
"repo": "flake-utils",
12
-
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
13
-
"type": "github"
14
-
},
15
-
"original": {
16
-
"owner": "numtide",
17
-
"repo": "flake-utils",
18
-
"type": "github"
19
-
}
20
-
},
21
-
"nixpkgs": {
22
-
"locked": {
23
-
"lastModified": 1688910226,
24
-
"narHash": "sha256-kLTsFu9CAU2Gb288JhIBN/WlX4UUUDz4WiC/U59nvwk=",
25
-
"owner": "nixos",
26
-
"repo": "nixpkgs",
27
-
"rev": "2540432a940aee979be6ccfefba9ea0652c273a0",
28
-
"type": "github"
29
-
},
30
-
"original": {
31
-
"owner": "nixos",
32
-
"ref": "release-23.05",
33
-
"repo": "nixpkgs",
34
-
"type": "github"
35
-
}
36
-
},
37
-
"root": {
38
-
"inputs": {
39
-
"flake-utils": "flake-utils",
40
-
"nixpkgs": "nixpkgs"
41
-
}
42
-
},
43
-
"systems": {
44
-
"locked": {
45
-
"lastModified": 1681028828,
46
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
47
-
"owner": "nix-systems",
48
-
"repo": "default",
49
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
50
-
"type": "github"
51
-
},
52
-
"original": {
53
-
"owner": "nix-systems",
54
-
"repo": "default",
55
-
"type": "github"
56
-
}
57
-
}
58
-
},
59
-
"root": "root",
60
-
"version": 7
61
-
}
-26
.fluentci/example/.fluentci/.fluentci/flake.nix
-26
.fluentci/example/.fluentci/.fluentci/flake.nix
···
1
-
{
2
-
description = "A Nix-flake-based Deno development environment";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/release-23.05";
6
-
flake-utils.url = "github:numtide/flake-utils";
7
-
};
8
-
9
-
outputs = {
10
-
self,
11
-
nixpkgs,
12
-
flake-utils,
13
-
}:
14
-
flake-utils.lib.eachDefaultSystem
15
-
(system: let
16
-
pkgs = import nixpkgs {
17
-
inherit system;
18
-
};
19
-
in {
20
-
devShells.default = pkgs.mkShell {
21
-
buildInputs = [
22
-
pkgs.deno
23
-
];
24
-
};
25
-
});
26
-
}
-28
.fluentci/example/.fluentci/.fluentci/import_map.json
-28
.fluentci/example/.fluentci/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.6.3",
4
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts",
5
-
"fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.1.2/mod.ts",
6
-
"url": "node:url",
7
-
"readline": "node:readline",
8
-
"process": "node:process",
9
-
"path": "node:path",
10
-
"os": "node:os",
11
-
"fs": "node:fs",
12
-
"crypto": "node:crypto"
13
-
},
14
-
"scopes": {
15
-
"https://esm.sh/v128/": {
16
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
17
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
18
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
19
-
"execa": "https://esm.sh/v128/execa@7.1.1",
20
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
21
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
22
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
23
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
24
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
25
-
"tar": "https://esm.sh/v128/tar@6.1.15"
26
-
}
27
-
}
28
-
}
-4
.fluentci/example/.fluentci/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/mod.ts
-4
.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
-4
.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
-197
.fluentci/example/.fluentci/.fluentci/src/dagger/jobs.ts
-197
.fluentci/example/.fluentci/.fluentci/src/dagger/jobs.ts
···
1
-
import Client from "@dagger.io/dagger";
2
-
import { upload } from "https://deno.land/x/codecov_pipeline@v0.1.1/src/dagger/jobs.ts";
3
-
import { withDevbox } from "https://deno.land/x/nix_installer_pipeline@v0.3.6/src/dagger/steps.ts";
4
-
import { existsSync } from "fs";
5
-
6
-
export enum Job {
7
-
fmt = "fmt",
8
-
lint = "lint",
9
-
test = "test",
10
-
deploy = "deploy",
11
-
codecov = "codecov",
12
-
}
13
-
14
-
const baseCtr = (client: Client, pipeline: string) => {
15
-
if (existsSync("devbox.json")) {
16
-
return withDevbox(
17
-
client
18
-
.pipeline(pipeline)
19
-
.container()
20
-
.from("alpine:latest")
21
-
.withExec(["apk", "update"])
22
-
.withExec(["apk", "add", "bash", "curl"])
23
-
.withMountedCache("/nix", client.cacheVolume("nix"))
24
-
.withMountedCache("/etc/nix", client.cacheVolume("nix-etc"))
25
-
);
26
-
}
27
-
return client.pipeline(pipeline).container().from("denoland/deno:alpine");
28
-
};
29
-
30
-
export const lint = async (client: Client, src = ".") => {
31
-
const context = client.host().directory(src);
32
-
let command = ["deno", "lint"];
33
-
34
-
if (existsSync("devbox.json")) {
35
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
36
-
}
37
-
38
-
const ctr = baseCtr(client, Job.lint)
39
-
.withDirectory("/app", context, {
40
-
exclude: [".git", ".devbox", ".fluentci"],
41
-
})
42
-
.withWorkdir("/app")
43
-
.withExec(command);
44
-
45
-
const result = await ctr.stdout();
46
-
47
-
console.log(result);
48
-
};
49
-
50
-
export const fmt = async (client: Client, src = ".") => {
51
-
const context = client.host().directory(src);
52
-
let command = ["deno", "fmt"];
53
-
54
-
if (existsSync("devbox.json")) {
55
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
56
-
}
57
-
58
-
const ctr = baseCtr(client, Job.fmt)
59
-
.withDirectory("/app", context, {
60
-
exclude: [".git", ".devbox", ".fluentci"],
61
-
})
62
-
.withWorkdir("/app")
63
-
.withExec(command);
64
-
65
-
const result = await ctr.stdout();
66
-
67
-
console.log(result);
68
-
};
69
-
70
-
export const test = async (
71
-
client: Client,
72
-
src = ".",
73
-
options: { ignore: string[] } = { ignore: [] }
74
-
) => {
75
-
const context = client.host().directory(src);
76
-
let command = ["deno", "test", "-A", "--coverage=coverage", "--lock-write"];
77
-
78
-
if (options.ignore.length > 0) {
79
-
command = command.concat([`--ignore=${options.ignore.join(",")}`]);
80
-
}
81
-
82
-
if (existsSync("devbox.json")) {
83
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
84
-
}
85
-
86
-
const ctr = baseCtr(client, Job.test)
87
-
.from("denoland/deno:alpine")
88
-
.withDirectory("/app", context, {
89
-
exclude: [".git", ".devbox", ".fluentci"],
90
-
})
91
-
.withWorkdir("/app")
92
-
.withMountedCache("/root/.cache/deno", client.cacheVolume("deno-cache"))
93
-
.withExec(command)
94
-
.withExec(["sh", "-c", "deno coverage ./coverage --lcov > coverage.lcov"]);
95
-
96
-
const result = await ctr.stdout();
97
-
98
-
await ctr.file("/app/coverage.lcov").export("./coverage.lcov");
99
-
100
-
console.log(result);
101
-
};
102
-
103
-
export const deploy = async (client: Client, src = ".") => {
104
-
const context = client.host().directory(src);
105
-
let installDeployCtl = [
106
-
"deno",
107
-
"install",
108
-
"--allow-all",
109
-
"--no-check",
110
-
"-r",
111
-
"-f",
112
-
"https://deno.land/x/deploy/deployctl.ts",
113
-
];
114
-
const project = Deno.env.get("DENO_PROJECT");
115
-
const noStatic = Deno.env.get("NO_STATIC");
116
-
const exclude = Deno.env.get("EXCLUDE");
117
-
118
-
let command = ["deployctl", "deploy"];
119
-
120
-
if (noStatic) {
121
-
command = command.concat(["--no-static"]);
122
-
}
123
-
124
-
if (exclude) {
125
-
command = command.concat([`--exclude=${exclude}`]);
126
-
}
127
-
128
-
if (!Deno.env.get("DENO_DEPLOY_TOKEN")) {
129
-
throw new Error("DENO_DEPLOY_TOKEN environment variable is not set");
130
-
}
131
-
132
-
if (!project) {
133
-
throw new Error("DENO_PROJECT environment variable is not set");
134
-
}
135
-
136
-
const script = Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx";
137
-
command = command.concat([`--project=${project}`, script]);
138
-
139
-
if (existsSync("devbox.json")) {
140
-
command = ["sh", "-c", `devbox run -- ${command.join(" ")}`];
141
-
installDeployCtl = [
142
-
"sh",
143
-
"-c",
144
-
`devbox run -- ${installDeployCtl.join(" ")}`,
145
-
];
146
-
}
147
-
148
-
const ctr = baseCtr(client, Job.deploy)
149
-
.from("denoland/deno:alpine")
150
-
.withDirectory("/app", context, {
151
-
exclude: [".git", ".devbox", ".fluentci"],
152
-
})
153
-
.withWorkdir("/app")
154
-
.withEnvVariable("PATH", "/root/.deno/bin:$PATH", { expand: true })
155
-
.withEnvVariable("DENO_DEPLOY_TOKEN", Deno.env.get("DENO_DEPLOY_TOKEN")!)
156
-
.withEnvVariable(
157
-
"DENO_MAIN_SCRIPT",
158
-
Deno.env.get("DENO_MAIN_SCRIPT") || "main.tsx"
159
-
)
160
-
.withExec(installDeployCtl)
161
-
.withExec(command);
162
-
163
-
const result = await ctr.stdout();
164
-
165
-
console.log(result);
166
-
};
167
-
168
-
export type JobExec = (
169
-
client: Client,
170
-
src?: string
171
-
) =>
172
-
| Promise<void>
173
-
| ((
174
-
client: Client,
175
-
src?: string,
176
-
options?: {
177
-
ignore: string[];
178
-
}
179
-
) => Promise<void>);
180
-
181
-
export const codecov = upload;
182
-
183
-
export const runnableJobs: Record<Job, JobExec> = {
184
-
[Job.fmt]: fmt,
185
-
[Job.lint]: lint,
186
-
[Job.test]: test,
187
-
[Job.deploy]: deploy,
188
-
[Job.codecov]: upload,
189
-
};
190
-
191
-
export const jobDescriptions: Record<Job, string> = {
192
-
[Job.fmt]: "Format your code",
193
-
[Job.lint]: "Lint your code",
194
-
[Job.test]: "Run your tests",
195
-
[Job.deploy]: "Deploy your code to Deno Deploy",
196
-
[Job.codecov]: "Upload your code coverage to Codecov",
197
-
};
-21
.fluentci/example/.fluentci/.fluentci/src/dagger/list_jobs.ts
-21
.fluentci/example/.fluentci/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
import { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
4
-
5
-
const tree = {
6
-
name: brightGreen("deno_pipeline"),
7
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
8
-
name: jobDescriptions[job]
9
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
10
-
: brightGreen(job),
11
-
children: [],
12
-
})),
13
-
};
14
-
15
-
console.log(
16
-
stringifyTree(
17
-
tree,
18
-
(t) => t.name,
19
-
(t) => t.children
20
-
)
21
-
);
-27
.fluentci/example/.fluentci/.fluentci/src/dagger/pipeline.ts
-27
.fluentci/example/.fluentci/.fluentci/src/dagger/pipeline.ts
···
1
-
import Client, { connect } from "@dagger.io/dagger";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { fmt, lint, test, runnableJobs } = jobs;
5
-
6
-
export default function pipeline(src = ".", args: string[] = []) {
7
-
connect(async (client: Client) => {
8
-
if (args.length > 0) {
9
-
await runSpecificJobs(client, args as jobs.Job[]);
10
-
return;
11
-
}
12
-
13
-
await fmt(client, src);
14
-
await lint(client, src);
15
-
await test(client, src);
16
-
});
17
-
}
18
-
19
-
async function runSpecificJobs(client: Client, args: jobs.Job[]) {
20
-
for (const name of args) {
21
-
const job = runnableJobs[name];
22
-
if (!job) {
23
-
throw new Error(`Job ${name} not found`);
24
-
}
25
-
await job(client);
26
-
}
27
-
}
-3
.fluentci/example/.fluentci/.fluentci/src/dagger/runner.ts
-3
.fluentci/example/.fluentci/.fluentci/src/dagger/runner.ts
-52
.fluentci/example/.fluentci/.fluentci/src/github/config.ts
-52
.fluentci/example/.fluentci/.fluentci/src/github/config.ts
···
1
-
import { JobSpec, Workflow } from "fluent_github_actions";
2
-
3
-
export function generateYaml() {
4
-
const workflow = new Workflow("Codecov");
5
-
6
-
const push = {
7
-
branches: ["main"],
8
-
};
9
-
10
-
const setupDagger = `\
11
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
12
-
sudo mv bin/dagger /usr/local/bin
13
-
dagger version`;
14
-
15
-
const tests: JobSpec = {
16
-
"runs-on": "ubuntu-latest",
17
-
steps: [
18
-
{
19
-
uses: "actions/checkout@v2",
20
-
},
21
-
{
22
-
uses: "denoland/setup-deno@v1",
23
-
with: {
24
-
"deno-version": "v1.37",
25
-
},
26
-
},
27
-
{
28
-
name: "Setup Fluent CI CLI",
29
-
run: "deno install -A -r https://cli.fluentci.io -n fluentci",
30
-
},
31
-
{
32
-
name: "Setup Dagger",
33
-
run: setupDagger,
34
-
},
35
-
{
36
-
name: "Run Dagger Pipelines",
37
-
run: "dagger run fluentci . fmt lint test",
38
-
},
39
-
{
40
-
name: "Upload to Codecov",
41
-
run: "dagger run fluentci codecov_pipeline",
42
-
env: {
43
-
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}",
44
-
},
45
-
},
46
-
],
47
-
};
48
-
49
-
workflow.on({ push }).jobs({ tests });
50
-
51
-
workflow.save(".github/workflows/ci.yml");
52
-
}
-3
.fluentci/example/.fluentci/.fluentci/src/github/init.ts
-3
.fluentci/example/.fluentci/.fluentci/src/github/init.ts
-4
.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
-4
.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
-9
.fluentci/example/.fluentci/.fluentci/src/gitlab/jobs.ts
-9
.fluentci/example/.fluentci/.fluentci/src/gitlab/jobs.ts
···
1
-
import { Job } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
3
-
export const fmt = new Job()
4
-
.image("denoland/deno:alpine")
5
-
.script("deno fmt --check");
6
-
7
-
export const lint = new Job().image("denoland/deno:alpine").script("deno lint");
8
-
9
-
export const test = new Job().image("denoland/deno:alpine").script("deno test");
-10
.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline.ts
-10
.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline.ts
···
1
-
import { GitlabCI } from "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts";
2
-
import { fmt, lint, test } from "./jobs.ts";
3
-
4
-
const pipeline = new GitlabCI()
5
-
.image("denoland/deno:alpine")
6
-
.addJob("fmt", fmt)
7
-
.addJob("lint", lint)
8
-
.addJob("test", test);
9
-
10
-
export default pipeline;
-8
.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
-8
.fluentci/example/.fluentci/.fluentci/src/gitlab/pipeline_test.ts
···
1
-
import pipeline from "./pipeline.ts";
2
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
3
-
4
-
Deno.test(function pipelineTest() {
5
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
6
-
const actual = pipeline.toString();
7
-
assertEquals(actual, expected);
8
-
});
-28
.fluentci/example/.fluentci/.github/workflows/ci.yml
-28
.fluentci/example/.fluentci/.github/workflows/ci.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent Github Actions
2
-
3
-
name: Codecov
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
tests:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Dagger Pipelines
24
-
run: dagger run fluentci . fmt lint test
25
-
- name: Upload to Codecov
26
-
run: dagger run fluentci codecov_pipeline
27
-
env:
28
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-25
.fluentci/example/.fluentci/.github/workflows/example.yml
-25
.fluentci/example/.fluentci/.github/workflows/example.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions
2
-
3
-
name: Example
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
tests:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Dagger Pipelines
24
-
run: dagger run deno run -A ../src/dagger/runner.ts
25
-
working-directory: example
-23
.fluentci/example/.fluentci/.github/workflows/zenith.yml
-23
.fluentci/example/.fluentci/.github/workflows/zenith.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions
2
-
3
-
name: Zenith Example
4
-
on:
5
-
push:
6
-
branches:
7
-
- zenith
8
-
9
-
jobs:
10
-
tests:
11
-
runs-on: ubuntu-latest
12
-
steps:
13
-
- uses: actions/checkout@v2
14
-
- name: Setup Dagger Zenith
15
-
run: |
16
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.8 sh
17
-
sudo mv bin/dagger /usr/local/bin
18
-
dagger version
19
-
- name: Run Dagger Pipelines
20
-
run: |
21
-
dagger query --doc build.gql
22
-
dagger query --doc test.gql
23
-
working-directory: example
-132
.fluentci/example/.fluentci/CODE_OF_CONDUCT.md
-132
.fluentci/example/.fluentci/CODE_OF_CONDUCT.md
···
1
-
# Contributor Covenant Code of Conduct
2
-
3
-
## Our Pledge
4
-
5
-
We as members, contributors, and leaders pledge to make participation in our
6
-
community a harassment-free experience for everyone, regardless of age, body
7
-
size, visible or invisible disability, ethnicity, sex characteristics, gender
8
-
identity and expression, level of experience, education, socio-economic status,
9
-
nationality, personal appearance, race, caste, color, religion, or sexual
10
-
identity and orientation.
11
-
12
-
We pledge to act and interact in ways that contribute to an open, welcoming,
13
-
diverse, inclusive, and healthy community.
14
-
15
-
## Our Standards
16
-
17
-
Examples of behavior that contributes to a positive environment for our
18
-
community include:
19
-
20
-
- Demonstrating empathy and kindness toward other people
21
-
- Being respectful of differing opinions, viewpoints, and experiences
22
-
- Giving and gracefully accepting constructive feedback
23
-
- Accepting responsibility and apologizing to those affected by our mistakes,
24
-
and learning from the experience
25
-
- Focusing on what is best not just for us as individuals, but for the overall
26
-
community
27
-
28
-
Examples of unacceptable behavior include:
29
-
30
-
- The use of sexualized language or imagery, and sexual attention or advances of
31
-
any kind
32
-
- Trolling, insulting or derogatory comments, and personal or political attacks
33
-
- Public or private harassment
34
-
- Publishing others' private information, such as a physical or email address,
35
-
without their explicit permission
36
-
- Other conduct which could reasonably be considered inappropriate in a
37
-
professional setting
38
-
39
-
## Enforcement Responsibilities
40
-
41
-
Community leaders are responsible for clarifying and enforcing our standards of
42
-
acceptable behavior and will take appropriate and fair corrective action in
43
-
response to any behavior that they deem inappropriate, threatening, offensive,
44
-
or harmful.
45
-
46
-
Community leaders have the right and responsibility to remove, edit, or reject
47
-
comments, commits, code, wiki edits, issues, and other contributions that are
48
-
not aligned to this Code of Conduct, and will communicate reasons for moderation
49
-
decisions when appropriate.
50
-
51
-
## Scope
52
-
53
-
This Code of Conduct applies within all community spaces, and also applies when
54
-
an individual is officially representing the community in public spaces.
55
-
Examples of representing our community include using an official e-mail address,
56
-
posting via an official social media account, or acting as an appointed
57
-
representative at an online or offline event.
58
-
59
-
## Enforcement
60
-
61
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
-
reported to the community leaders responsible for enforcement at
63
-
[GitHub Issues](https://github.com/fluent-ci-templates/rust-pipeline/issues).
64
-
All complaints will be reviewed and investigated promptly and fairly.
65
-
66
-
All community leaders are obligated to respect the privacy and security of the
67
-
reporter of any incident.
68
-
69
-
## Enforcement Guidelines
70
-
71
-
Community leaders will follow these Community Impact Guidelines in determining
72
-
the consequences for any action they deem in violation of this Code of Conduct:
73
-
74
-
### 1. Correction
75
-
76
-
**Community Impact**: Use of inappropriate language or other behavior deemed
77
-
unprofessional or unwelcome in the community.
78
-
79
-
**Consequence**: A private, written warning from community leaders, providing
80
-
clarity around the nature of the violation and an explanation of why the
81
-
behavior was inappropriate. A public apology may be requested.
82
-
83
-
### 2. Warning
84
-
85
-
**Community Impact**: A violation through a single incident or series of
86
-
actions.
87
-
88
-
**Consequence**: A warning with consequences for continued behavior. No
89
-
interaction with the people involved, including unsolicited interaction with
90
-
those enforcing the Code of Conduct, for a specified period of time. This
91
-
includes avoiding interactions in community spaces as well as external channels
92
-
like social media. Violating these terms may lead to a temporary or permanent
93
-
ban.
94
-
95
-
### 3. Temporary Ban
96
-
97
-
**Community Impact**: A serious violation of community standards, including
98
-
sustained inappropriate behavior.
99
-
100
-
**Consequence**: A temporary ban from any sort of interaction or public
101
-
communication with the community for a specified period of time. No public or
102
-
private interaction with the people involved, including unsolicited interaction
103
-
with those enforcing the Code of Conduct, is allowed during this period.
104
-
Violating these terms may lead to a permanent ban.
105
-
106
-
### 4. Permanent Ban
107
-
108
-
**Community Impact**: Demonstrating a pattern of violation of community
109
-
standards, including sustained inappropriate behavior, harassment of an
110
-
individual, or aggression toward or disparagement of classes of individuals.
111
-
112
-
**Consequence**: A permanent ban from any sort of public interaction within the
113
-
community.
114
-
115
-
## Attribution
116
-
117
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
-
version 2.1, available at
119
-
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
-
121
-
Community Impact Guidelines were inspired by
122
-
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
-
124
-
For answers to common questions about this code of conduct, see the FAQ at
125
-
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
-
[https://www.contributor-covenant.org/translations][translations].
127
-
128
-
[homepage]: https://www.contributor-covenant.org
129
-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
-
[Mozilla CoC]: https://github.com/mozilla/diversity
131
-
[FAQ]: https://www.contributor-covenant.org/faq
132
-
[translations]: https://www.contributor-covenant.org/translations
-70
.fluentci/example/.fluentci/CONTRIBUTING.md
-70
.fluentci/example/.fluentci/CONTRIBUTING.md
···
1
-
# Contributing Guidelines
2
-
3
-
Thank you for your interest in contributing to our project. Whether it's a bug
4
-
report, new feature, correction, or additional documentation, we greatly value
5
-
feedback and contributions from our community.
6
-
7
-
Please read through this document before submitting any issues or pull requests
8
-
to ensure we have all the necessary information to effectively respond to your
9
-
bug report or contribution.
10
-
11
-
## Reporting Bugs/Feature Requests
12
-
13
-
We welcome you to use the GitHub issue tracker to report bugs or suggest
14
-
features.
15
-
16
-
When filing an issue, please check existing open, or recently closed, issues to
17
-
make sure somebody else hasn't already reported the issue. Please try to include
18
-
as much information as you can. Details like these are incredibly useful:
19
-
20
-
- A reproducible test case or series of steps
21
-
- The version of our code being used
22
-
- Any modifications you've made relevant to the bug
23
-
- Anything unusual about your environment or deployment
24
-
25
-
## Contributing via Pull Requests
26
-
27
-
Contributions via pull requests are much appreciated. Before sending us a pull
28
-
request, please ensure that:
29
-
30
-
1. You are working against the latest source on the _master_ branch.
31
-
2. You check existing open, and recently merged, pull requests to make sure
32
-
someone else hasn't addressed the problem already.
33
-
3. You open an issue to discuss any significant work - we would hate for your
34
-
time to be wasted.
35
-
36
-
To send us a pull request, please:
37
-
38
-
1. Fork the repository.
39
-
2. Modify the source; please focus on the specific change you are contributing.
40
-
If you also reformat all the code, it will be hard for us to focus on your
41
-
change.
42
-
3. Ensure local tests pass.
43
-
4. Commit to your fork using clear commit messages.
44
-
5. Send us a pull request, answering any default questions in the pull request
45
-
interface.
46
-
6. Pay attention to any automated CI failures reported in the pull request, and
47
-
stay involved in the conversation.
48
-
49
-
GitHub provides additional document on
50
-
[forking a repository](https://help.github.com/articles/fork-a-repo/) and
51
-
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
52
-
53
-
## Finding contributions to work on
54
-
55
-
Looking at the existing issues is a great way to find something to contribute
56
-
on. As our projects, by default, use the default GitHub issue labels
57
-
(enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any
58
-
'help wanted' issues is a great place to start.
59
-
60
-
## Code of Conduct
61
-
62
-
This project has adopted the
63
-
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
64
-
available at
65
-
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
66
-
67
-
## Licensing
68
-
69
-
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to
70
-
confirm the licensing of your contribution.
-19
.fluentci/example/.fluentci/LICENSE
-19
.fluentci/example/.fluentci/LICENSE
···
1
-
Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com>
2
-
3
-
Permission is hereby granted, free of charge, to any person obtaining a copy
4
-
of this software and associated documentation files (the "Software"), to deal
5
-
in the Software without restriction, including without limitation the rights
6
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
-
copies of the Software, and to permit persons to whom the Software is
8
-
furnished to do so, subject to the following conditions:
9
-
10
-
The above copyright notice and this permission notice shall be included in all
11
-
copies or substantial portions of the Software.
12
-
13
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
-
SOFTWARE.
-61
.fluentci/example/.fluentci/README.md
-61
.fluentci/example/.fluentci/README.md
···
1
-
# Rust Pipeline
2
-
3
-
[](https://pkg.fluentci.io/rust_pipeline)
4
-
[](https://deno.land/x/rust_pipeline)
5
-

6
-
[](https://codecov.io/gh/fluent-ci-templates/rust-pipeline)
7
-
8
-
A ready-to-use CI/CD Pipeline for your Rust projects.
9
-
## ๐ Usage
10
-
11
-
Run the following command in your Rust Project:
12
-
13
-
```bash
14
-
fluentci run rust_pipeline
15
-
```
16
-
17
-
Or if you want to run specific jobs:
18
-
19
-
```bash
20
-
fluentci run rust_pipeline test build
21
-
```
22
-
23
-
24
-
if you want to use it as a template:
25
-
26
-
```bash
27
-
fluentci init -t rust
28
-
```
29
-
30
-
This will create a `.fluentci` folder in your project.
31
-
32
-
Now you can run the pipeline with:
33
-
34
-
```bash
35
-
fluentci run .
36
-
```
37
-
38
-
## Jobs
39
-
40
-
| Job | Description |
41
-
| ----- | ------------------ |
42
-
| build | build your project |
43
-
| test | Run your tests |
44
-
45
-
## Programmatic usage
46
-
47
-
You can also use this pipeline programmatically:
48
-
49
-
```ts
50
-
import Client, { connect } from "https://sdk.fluentci.io/v0.1.9/mod.ts";
51
-
import { build, test } from "https://pkg.fluentci.io/rust_pipeline@v0.5.2/mod.ts";
52
-
53
-
function pipeline(src = ".") {
54
-
connect(async (client: Client) => {
55
-
await test(client, src);
56
-
await build(client, src);
57
-
});
58
-
}
59
-
60
-
pipeline();
61
-
```
-14
.fluentci/example/.fluentci/ci.ts
-14
.fluentci/example/.fluentci/ci.ts
···
1
-
import Client, { connect } from "https://sdk.fluentci.io/v0.1.9/mod.ts";
2
-
import {
3
-
build,
4
-
test,
5
-
} from "https://pkg.fluentci.io/rust_pipeline@v0.5.2/mod.ts";
6
-
7
-
function pipeline(src = ".") {
8
-
connect(async (client: Client) => {
9
-
await test(client, src);
10
-
await build(client, src);
11
-
});
12
-
}
13
-
14
-
pipeline();
-5
.fluentci/example/.fluentci/dagger.json
-5
.fluentci/example/.fluentci/dagger.json
-31
.fluentci/example/.fluentci/deno.json
-31
.fluentci/example/.fluentci/deno.json
···
1
-
{
2
-
"importMap": "import_map.json",
3
-
"tasks": {
4
-
"esm:add": "deno run -A https://esm.sh/v128 add",
5
-
"esm:update": "deno run -A https://esm.sh/v128 update",
6
-
"esm:remove": "deno run -A https://esm.sh/v128 remove",
7
-
"schema": "deno run -A src/dagger/schema.ts",
8
-
"clean": "rm -rf gen schema.graphql"
9
-
},
10
-
"fmt": {
11
-
"exclude": [
12
-
"example/",
13
-
".fluentci/",
14
-
"gen/"
15
-
]
16
-
},
17
-
"lint": {
18
-
"exclude": [
19
-
"example/",
20
-
".fluentci/",
21
-
"gen/"
22
-
]
23
-
},
24
-
"test": {
25
-
"exclude": [
26
-
"example/",
27
-
".fluentci/",
28
-
"gen/"
29
-
]
30
-
}
31
-
}
-264
.fluentci/example/.fluentci/deno.lock
-264
.fluentci/example/.fluentci/deno.lock
···
1
-
{
2
-
"version": "3",
3
-
"packages": {
4
-
"specifiers": {
5
-
"npm:nexus": "npm:nexus@1.3.0_graphql@16.8.1"
6
-
},
7
-
"npm": {
8
-
"graphql@16.8.1": {
9
-
"integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==",
10
-
"dependencies": {}
11
-
},
12
-
"iterall@1.3.0": {
13
-
"integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==",
14
-
"dependencies": {}
15
-
},
16
-
"nexus@1.3.0_graphql@16.8.1": {
17
-
"integrity": "sha512-w/s19OiNOs0LrtP7pBmD9/FqJHvZLmCipVRt6v1PM8cRUYIbhEswyNKGHVoC4eHZGPSnD+bOf5A3+gnbt0A5/A==",
18
-
"dependencies": {
19
-
"graphql": "graphql@16.8.1",
20
-
"iterall": "iterall@1.3.0",
21
-
"tslib": "tslib@2.6.2"
22
-
}
23
-
},
24
-
"tslib@2.6.2": {
25
-
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
26
-
"dependencies": {}
27
-
}
28
-
}
29
-
},
30
-
"remote": {
31
-
"https://cdn.jsdelivr.net/gh/tsirysndr/tar@v0.1.1/deps.ts": "096395daebc7ed8a18f0484e4ffcc3a7f70e50946735f7df9611a7fcfd8272cc",
32
-
"https://cdn.jsdelivr.net/gh/tsirysndr/tar@v0.1.1/mod.ts": "e269d71c72ae68e82c1960e5db2a0c7419c97c9683ef717de0ab75d90f364713",
33
-
"https://cdn.jsdelivr.net/gh/tsirysndr/tar@v0.1.1/src/tar.ts": "9b02eaaa784b225ad7a23d2769cd492adf113ea7c11c02e3646849e98f4ae43b",
34
-
"https://deno.land/std@0.129.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74",
35
-
"https://deno.land/std@0.129.0/_util/os.ts": "49b92edea1e82ba295ec946de8ffd956ed123e2948d9bd1d3e901b04e4307617",
36
-
"https://deno.land/std@0.129.0/archive/tar.ts": "35ea1baddec7988cc4034765a2cee7613bc8074bd40940d3f5e98f63070a716a",
37
-
"https://deno.land/std@0.129.0/async/abortable.ts": "a896ac6b0d4237bd2d2d248217cfa1f0d85ccda93cb25ebda55e33850e526be6",
38
-
"https://deno.land/std@0.129.0/async/deadline.ts": "48ac998d7564969f3e6ec6b6f9bf0217ebd00239b1b2292feba61272d5dd58d0",
39
-
"https://deno.land/std@0.129.0/async/debounce.ts": "564273ef242bcfcda19a439132f940db8694173abffc159ea34f07d18fc42620",
40
-
"https://deno.land/std@0.129.0/async/deferred.ts": "bc18e28108252c9f67dfca2bbc4587c3cbf3aeb6e155f8c864ca8ecff992b98a",
41
-
"https://deno.land/std@0.129.0/async/delay.ts": "cbbdf1c87d1aed8edc7bae13592fb3e27e3106e0748f089c263390d4f49e5f6c",
42
-
"https://deno.land/std@0.129.0/async/mod.ts": "2240c6841157738414331f47dee09bb8c0482c5b1980b6e3234dd03515c8132f",
43
-
"https://deno.land/std@0.129.0/async/mux_async_iterator.ts": "f4d1d259b0c694d381770ddaaa4b799a94843eba80c17f4a2ec2949168e52d1e",
44
-
"https://deno.land/std@0.129.0/async/pool.ts": "97b0dd27c69544e374df857a40902e74e39532f226005543eabacb551e277082",
45
-
"https://deno.land/std@0.129.0/async/tee.ts": "1341feb1f5b1a96f8628d0f8fc07d8c43d3813423f18a63bf1b4785568d21b1f",
46
-
"https://deno.land/std@0.129.0/bytes/bytes_list.ts": "67eb118e0b7891d2f389dad4add35856f4ad5faab46318ff99653456c23b025d",
47
-
"https://deno.land/std@0.129.0/bytes/equals.ts": "fc16dff2090cced02497f16483de123dfa91e591029f985029193dfaa9d894c9",
48
-
"https://deno.land/std@0.129.0/bytes/mod.ts": "d3b455c0dbd4804644159d1e25946ade5ee385d2359894de49e2c6101b18b7a9",
49
-
"https://deno.land/std@0.129.0/encoding/base64.ts": "c8c16b4adaa60d7a8eee047c73ece26844435e8f7f1328d74593dbb2dd58ea4f",
50
-
"https://deno.land/std@0.129.0/encoding/base64url.ts": "55f9d13df02efac10c6f96169daa3e702606a64e8aa27c0295f645f198c27130",
51
-
"https://deno.land/std@0.129.0/fmt/colors.ts": "30455035d6d728394781c10755351742dd731e3db6771b1843f9b9e490104d37",
52
-
"https://deno.land/std@0.129.0/fmt/printf.ts": "e2c0f72146aed1efecf0c39ab928b26ae493a2278f670a871a0fbdcf36ff3379",
53
-
"https://deno.land/std@0.129.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f",
54
-
"https://deno.land/std@0.129.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d",
55
-
"https://deno.land/std@0.129.0/fs/ensure_file.ts": "7d353e64fee3d4d1e7c6b6726a2a5e987ba402c15fb49566309042887349c545",
56
-
"https://deno.land/std@0.129.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b",
57
-
"https://deno.land/std@0.129.0/io/files.ts": "d199ef64e918a256320ba8d8d44ae91de87c9077df8f8d6cca013f1b9fbbe285",
58
-
"https://deno.land/std@0.129.0/io/readers.ts": "679471f3b9929b54393c9cd75b6bd178b4bc6d9aab5c0f1f9538f862cf4746fe",
59
-
"https://deno.land/std@0.129.0/io/util.ts": "078da53bba767bec0d45f7da44411f6dbf269e51ef7fcfea5e3714e04681c674",
60
-
"https://deno.land/std@0.129.0/node/_buffer.mjs": "f4a7df481d4eed06dc0151b833177d8ef74fc3a96dd4d2b073e690b6ced9474d",
61
-
"https://deno.land/std@0.129.0/node/_core.ts": "568d277be2e086af996cbdd599fec569f5280e9a494335ca23ad392b130d7bb9",
62
-
"https://deno.land/std@0.129.0/node/_events.mjs": "c0e3e0e290a8b81fee9d2973a529c8dcd5ebb4406782d1f91085274e2cb8490f",
63
-
"https://deno.land/std@0.129.0/node/_fixed_queue.ts": "455b3c484de48e810b13bdf95cd1658ecb1ba6bcb8b9315ffe994efcde3ba5f5",
64
-
"https://deno.land/std@0.129.0/node/_next_tick.ts": "64c361f6bca21df2a72dd77b84bd49d80d97a694dd3080703bc78f52146351d1",
65
-
"https://deno.land/std@0.129.0/node/_process/exiting.ts": "bc9694769139ffc596f962087155a8bfef10101d03423b9dcbc51ce6e1f88fce",
66
-
"https://deno.land/std@0.129.0/node/_util/_util_callbackify.ts": "79928ad80df3e469f7dcdb198118a7436d18a9f6c08bd7a4382332ad25a718cf",
67
-
"https://deno.land/std@0.129.0/node/_utils.ts": "c2c352e83c4c96f5ff994b1c8246bff2abcb21bfc3f1c06162cb3af1d201e615",
68
-
"https://deno.land/std@0.129.0/node/buffer.ts": "fbecbf3f237fa49bec96e97ecf56a7b92d48037b3d11219288e68943cc921600",
69
-
"https://deno.land/std@0.129.0/node/events.ts": "a1d40fc0dbccc944379ef968b80ea08f9fce579e88b5057fdb64e4f0812476dd",
70
-
"https://deno.land/std@0.129.0/node/internal/buffer.mjs": "6662fe7fe517329453545be34cea27a24f8ccd6d09afd4f609f11ade2b6dfca7",
71
-
"https://deno.land/std@0.129.0/node/internal/crypto/keys.ts": "16ce7b15a9fc5e4e3dee8fde75dae12f3d722558d5a1a6e65a9b4f86d64a21e9",
72
-
"https://deno.land/std@0.129.0/node/internal/crypto/util.mjs": "1de55a47fdbed6721b467a77ba48fdd1550c10b5eee77bbdb602eaffee365a5e",
73
-
"https://deno.land/std@0.129.0/node/internal/error_codes.ts": "ac03c4eae33de3a69d6c98e8678003207eecf75a6900eb847e3fea3c8c9e6d8f",
74
-
"https://deno.land/std@0.129.0/node/internal/errors.ts": "0d3a1eb03b654beb29b8354759a6902f45a840d4f957e9a3c632a24ce4c32632",
75
-
"https://deno.land/std@0.129.0/node/internal/hide_stack_frames.ts": "a91962ec84610bc7ec86022c4593cdf688156a5910c07b5bcd71994225c13a03",
76
-
"https://deno.land/std@0.129.0/node/internal/normalize_encoding.mjs": "3779ec8a7adf5d963b0224f9b85d1bc974a2ec2db0e858396b5d3c2c92138a0a",
77
-
"https://deno.land/std@0.129.0/node/internal/util.mjs": "684653b962fae84fd2bc08997291b1a50bed09b95dcfa7d35e3c4143163e879a",
78
-
"https://deno.land/std@0.129.0/node/internal/util/comparisons.ts": "680b55fe8bdf1613633bc469fa0440f43162c76dbe36af9aa2966310e1bb9f6e",
79
-
"https://deno.land/std@0.129.0/node/internal/util/debuglog.ts": "99e91bdf26f6c67861031f684817e1705a5bc300e81346585b396f413387edfb",
80
-
"https://deno.land/std@0.129.0/node/internal/util/inspect.mjs": "d1c2569c66a3dab45eec03208f22ad4351482527859c0011a28a6c797288a0aa",
81
-
"https://deno.land/std@0.129.0/node/internal/util/types.ts": "b2dacb8f1f5d28a51c4da5c5b75172b7fcf694073ce95ca141323657e18b0c60",
82
-
"https://deno.land/std@0.129.0/node/internal/validators.mjs": "a7e82eafb7deb85c332d5f8d9ffef052f46a42d4a121eada4a54232451acc49a",
83
-
"https://deno.land/std@0.129.0/node/internal_binding/_libuv_winerror.ts": "801e05c2742ae6cd42a5f0fd555a255a7308a65732551e962e5345f55eedc519",
84
-
"https://deno.land/std@0.129.0/node/internal_binding/_node.ts": "e4075ba8a37aef4eb5b592c8e3807c39cb49ca8653faf8e01a43421938076c1b",
85
-
"https://deno.land/std@0.129.0/node/internal_binding/_utils.ts": "1c50883b5751a9ea1b38951e62ed63bacfdc9d69ea665292edfa28e1b1c5bd94",
86
-
"https://deno.land/std@0.129.0/node/internal_binding/_winerror.ts": "8811d4be66f918c165370b619259c1f35e8c3e458b8539db64c704fbde0a7cd2",
87
-
"https://deno.land/std@0.129.0/node/internal_binding/buffer.ts": "722c62b85f966e0777b2d98c021b60e75d7f2c2dabc43413ef37d60dbd13a5d9",
88
-
"https://deno.land/std@0.129.0/node/internal_binding/constants.ts": "aff06aac49eda4234bd3a2b0b8e1fbfc67824e281c532ff9960831ab503014cc",
89
-
"https://deno.land/std@0.129.0/node/internal_binding/string_decoder.ts": "5cb1863763d1e9b458bc21d6f976f16d9c18b3b3f57eaf0ade120aee38fba227",
90
-
"https://deno.land/std@0.129.0/node/internal_binding/types.ts": "4c26fb74ba2e45de553c15014c916df6789529a93171e450d5afb016b4c765e7",
91
-
"https://deno.land/std@0.129.0/node/internal_binding/util.ts": "90364292e2bd598ab5d105b48ca49817b6708f2d1d9cbaf08b2b3ab5ca4c90a7",
92
-
"https://deno.land/std@0.129.0/node/internal_binding/uv.ts": "3821bc5e676d6955d68f581988c961d77dd28190aba5a9c59f16001a4deb34ba",
93
-
"https://deno.land/std@0.129.0/node/util.ts": "7fd6933b37af89a8e64d73dc6ee1732455a59e7e6d0965311fbd73cd634ea630",
94
-
"https://deno.land/std@0.129.0/node/util/types.mjs": "f9288198cacd374b41bae7e92a23179d3160f4c0eaf14e19be3a4e7057219a60",
95
-
"https://deno.land/std@0.129.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3",
96
-
"https://deno.land/std@0.129.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09",
97
-
"https://deno.land/std@0.129.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b",
98
-
"https://deno.land/std@0.129.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633",
99
-
"https://deno.land/std@0.129.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee",
100
-
"https://deno.land/std@0.129.0/path/mod.ts": "4275129bb766f0e475ecc5246aa35689eeade419d72a48355203f31802640be7",
101
-
"https://deno.land/std@0.129.0/path/posix.ts": "663e4a6fe30a145f56aa41a22d95114c4c5582d8b57d2d7c9ed27ad2c47636bb",
102
-
"https://deno.land/std@0.129.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9",
103
-
"https://deno.land/std@0.129.0/path/win32.ts": "e7bdf63e8d9982b4d8a01ef5689425c93310ece950e517476e22af10f41a136e",
104
-
"https://deno.land/std@0.129.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21",
105
-
"https://deno.land/std@0.129.0/testing/_diff.ts": "9d849cd6877694152e01775b2d93f9d6b7aef7e24bfe3bfafc4d7a1ac8e9f392",
106
-
"https://deno.land/std@0.129.0/testing/asserts.ts": "0a95d9e8076dd3e7f0eeb605a67c148078b4b11f4abcd5eef115b0361b0736a2",
107
-
"https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1",
108
-
"https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118",
109
-
"https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af",
110
-
"https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
111
-
"https://deno.land/std@0.191.0/testing/_diff.ts": "1a3c044aedf77647d6cac86b798c6417603361b66b54c53331b312caeb447aea",
112
-
"https://deno.land/std@0.191.0/testing/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7",
113
-
"https://deno.land/std@0.191.0/testing/asserts.ts": "e16d98b4d73ffc4ed498d717307a12500ae4f2cbe668f1a215632d19fcffc22f",
114
-
"https://deno.land/std@0.203.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee",
115
-
"https://deno.land/std@0.203.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56",
116
-
"https://deno.land/std@0.203.0/path/_basename.ts": "057d420c9049821f983f784fd87fa73ac471901fb628920b67972b0f44319343",
117
-
"https://deno.land/std@0.203.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0",
118
-
"https://deno.land/std@0.203.0/path/_dirname.ts": "355e297236b2218600aee7a5301b937204c62e12da9db4b0b044993d9e658395",
119
-
"https://deno.land/std@0.203.0/path/_extname.ts": "eaaa5aae1acf1f03254d681bd6a8ce42a9cb5b7ff2213a9d4740e8ab31283664",
120
-
"https://deno.land/std@0.203.0/path/_format.ts": "4a99270d6810f082e614309164fad75d6f1a483b68eed97c830a506cc589f8b4",
121
-
"https://deno.land/std@0.203.0/path/_from_file_url.ts": "6eadfae2e6f63ad9ee46b26db4a1b16583055c0392acedfb50ed2fc694b6f581",
122
-
"https://deno.land/std@0.203.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b",
123
-
"https://deno.land/std@0.203.0/path/_is_absolute.ts": "05dac10b5e93c63198b92e3687baa2be178df5321c527dc555266c0f4f51558c",
124
-
"https://deno.land/std@0.203.0/path/_join.ts": "815f5e85b042285175b1492dd5781240ce126c23bd97bad6b8211fe7129c538e",
125
-
"https://deno.land/std@0.203.0/path/_normalize.ts": "a19ec8706b2707f9dd974662a5cd89fad438e62ab1857e08b314a8eb49a34d81",
126
-
"https://deno.land/std@0.203.0/path/_os.ts": "30b0c2875f360c9296dbe6b7f2d528f0f9c741cecad2e97f803f5219e91b40a2",
127
-
"https://deno.land/std@0.203.0/path/_parse.ts": "0f9b0ff43682dd9964eb1c4398610c4e165d8db9d3ac9d594220217adf480cfa",
128
-
"https://deno.land/std@0.203.0/path/_relative.ts": "27bdeffb5311a47d85be26d37ad1969979359f7636c5cd9fcf05dcd0d5099dc5",
129
-
"https://deno.land/std@0.203.0/path/_resolve.ts": "7a3616f1093735ed327e758313b79c3c04ea921808ca5f19ddf240cb68d0adf6",
130
-
"https://deno.land/std@0.203.0/path/_to_file_url.ts": "a141e4a525303e1a3a0c0571fd024552b5f3553a2af7d75d1ff3a503dcbb66d8",
131
-
"https://deno.land/std@0.203.0/path/_to_namespaced_path.ts": "0d5f4caa2ed98ef7a8786286df6af804b50e38859ae897b5b5b4c8c5930a75c8",
132
-
"https://deno.land/std@0.203.0/path/_util.ts": "4e191b1bac6b3bf0c31aab42e5ca2e01a86ab5a0d2e08b75acf8585047a86221",
133
-
"https://deno.land/std@0.203.0/path/basename.ts": "bdfa5a624c6a45564dc6758ef2077f2822978a6dbe77b0a3514f7d1f81362930",
134
-
"https://deno.land/std@0.203.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000",
135
-
"https://deno.land/std@0.203.0/path/dirname.ts": "b6533f4ee4174a526dec50c279534df5345836dfdc15318400b08c62a62a39dd",
136
-
"https://deno.land/std@0.203.0/path/extname.ts": "62c4b376300795342fe1e4746c0de518b4dc9c4b0b4617bfee62a2973a9555cf",
137
-
"https://deno.land/std@0.203.0/path/format.ts": "110270b238514dd68455a4c54956215a1aff7e37e22e4427b7771cefe1920aa5",
138
-
"https://deno.land/std@0.203.0/path/from_file_url.ts": "9f5cb58d58be14c775ec2e57fc70029ac8b17ed3bd7fe93e475b07280adde0ac",
139
-
"https://deno.land/std@0.203.0/path/glob.ts": "593e2c3573883225c25c5a21aaa8e9382a696b8e175ea20a3b6a1471ad17aaed",
140
-
"https://deno.land/std@0.203.0/path/is_absolute.ts": "0b92eb35a0a8780e9f16f16bb23655b67dace6a8e0d92d42039e518ee38103c1",
141
-
"https://deno.land/std@0.203.0/path/join.ts": "31c5419f23d91655b08ec7aec403f4e4cd1a63d39e28f6e42642ea207c2734f8",
142
-
"https://deno.land/std@0.203.0/path/mod.ts": "6e1efb0b13121463aedb53ea51dabf5639a3172ab58c89900bbb72b486872532",
143
-
"https://deno.land/std@0.203.0/path/normalize.ts": "6ea523e0040979dd7ae2f1be5bf2083941881a252554c0f32566a18b03021955",
144
-
"https://deno.land/std@0.203.0/path/parse.ts": "be8de342bb9e1924d78dc4d93c45215c152db7bf738ec32475560424b119b394",
145
-
"https://deno.land/std@0.203.0/path/posix.ts": "0a1c1952d132323a88736d03e92bd236f3ed5f9f079e5823fae07c8d978ee61b",
146
-
"https://deno.land/std@0.203.0/path/relative.ts": "8bedac226afd360afc45d451a6c29fabceaf32978526bcb38e0c852661f66c61",
147
-
"https://deno.land/std@0.203.0/path/resolve.ts": "133161e4949fc97f9ca67988d51376b0f5eef8968a6372325ab84d39d30b80dc",
148
-
"https://deno.land/std@0.203.0/path/separator.ts": "40a3e9a4ad10bef23bc2cd6c610291b6c502a06237c2c4cd034a15ca78dedc1f",
149
-
"https://deno.land/std@0.203.0/path/to_file_url.ts": "00e6322373dd51ad109956b775e4e72e5f9fa68ce2c6b04e4af2a6eed3825d31",
150
-
"https://deno.land/std@0.203.0/path/to_namespaced_path.ts": "1b1db3055c343ab389901adfbda34e82b7386bcd1c744d54f9c1496ee0fd0c3d",
151
-
"https://deno.land/std@0.203.0/path/win32.ts": "8b3f80ef7a462511d5e8020ff490edcaa0a0d118f1b1e9da50e2916bdd73f9dd",
152
-
"https://deno.land/std@0.52.0/fmt/colors.ts": "ec9d653672a9a3c7b6eafe53c5bc797364a2db2dcf766ab649c1155fea7a80b2",
153
-
"https://deno.land/x/crc32@v0.2.0/mod.ts": "de7a3fa2d4ef24b96fc21e1cc4d2d65d1d2b1dcea92f63960e3e11bfa82df0fa",
154
-
"https://deno.land/x/fluent_aws_codepipeline@v0.2.3/mod.ts": "79cc758901d20a3573d7e3cc2db9f0a5fe56833f4d9befcedc072b94d542eec7",
155
-
"https://deno.land/x/fluent_aws_codepipeline@v0.2.3/src/buildspec.ts": "fb07cbbf9473586cea66c0c508412080c2d4ba4e7f4ea0985661afeed445710b",
156
-
"https://deno.land/x/fluent_aws_codepipeline@v0.2.3/src/spec.ts": "c0ce4c6e2685e23a3abdeb9fc18012253199dae355b06189d8248b052301a63e",
157
-
"https://deno.land/x/fluent_azure_pipelines@v0.2.0/mod.ts": "6f3c62419b96251dd1b5d8d6a172c0a8724a73b7feec786e540f51f0c8a0f0fd",
158
-
"https://deno.land/x/fluent_azure_pipelines@v0.2.0/src/config.ts": "619f4c64dad9b510c5788d4939a8afe013cb7dfc993dfd32f2ff4d0a2140075e",
159
-
"https://deno.land/x/fluent_azure_pipelines@v0.2.0/src/spec.ts": "cab6e4a6afb0f16e6c406cfab87264a963734720c468532c4f778228d1f1758d",
160
-
"https://deno.land/x/fluent_circleci@v0.2.5/mod.ts": "6a885bf35dbe08a7e971aa105763d724dd2a09c237b6292c9cd5de540237af37",
161
-
"https://deno.land/x/fluent_circleci@v0.2.5/src/config.ts": "d7e9902b4c2fddfa61ff6a509f3a09adee161fae9f93029dcbc8ec7a7bbd990b",
162
-
"https://deno.land/x/fluent_circleci@v0.2.5/src/job.ts": "b6ffb66ef10cf0e26460a88e1614ef864b606571e8d72376eeb09254f66a9926",
163
-
"https://deno.land/x/fluent_circleci@v0.2.5/src/spec.ts": "eda462e9ff535dbc7d3eb7e47253948d40ebaaf34d964e0931a6a25cdd823736",
164
-
"https://deno.land/x/fluent_github_actions@v0.2.1/mod.ts": "dc62b622791da77bc27f68e33cba618983a0770a9a12dcc9e0f9a61161bb90e5",
165
-
"https://deno.land/x/fluent_github_actions@v0.2.1/src/event.ts": "d44d42356a04aea7ba64ff9e9a12090f477605c27a940bbf80aba612e4e96d1e",
166
-
"https://deno.land/x/fluent_github_actions@v0.2.1/src/job_spec.ts": "93aa5b8b79cd8baaf875901322c4c38c27d4458439a831cb0ad86401b207a3dc",
167
-
"https://deno.land/x/fluent_github_actions@v0.2.1/src/step_spec.ts": "b399949d1fd9c45873cdda70d82c92e3d9d96ba9a1d5749f3010a1f242b20e35",
168
-
"https://deno.land/x/fluent_github_actions@v0.2.1/src/workflow.ts": "c9e3b7b3a59f7edff958eae8f27a8542f2a24889ea27c8aa016d0c0b0ca416c6",
169
-
"https://deno.land/x/fluent_github_actions@v0.2.1/src/workflow_spec.ts": "b5c696dc70ee3f777a565197c6a3a379d87d026e12d59942fef5b9dc72124c3a",
170
-
"https://deno.land/x/fluent_gitlab_ci@v0.4.2/mod.ts": "3becefe569f5c9814dffa1b534794a42b948481753a5903fa1b48d5337206ced",
171
-
"https://deno.land/x/fluent_gitlab_ci@v0.4.2/src/environment.ts": "f12ee4fb50e5100fccec29dc1d35aa430bfe8373e84286a8ab9f7b8e178f14e3",
172
-
"https://deno.land/x/fluent_gitlab_ci@v0.4.2/src/gitlabci.ts": "ef36465c41412ae94b919cfcb80b99ec1c04536dbf42ad09cd73abf3ea4d52a6",
173
-
"https://deno.land/x/fluent_gitlab_ci@v0.4.2/src/gitlabci_spec.ts": "37f4ecef3ea414f57c54a360bc0178f5fad21b4a9db59d29d1961cd368febaed",
174
-
"https://deno.land/x/fluent_gitlab_ci@v0.4.2/src/index.ts": "b5e374a24e3bca1d6fead0861f2c1b1e09e087a17e59297263f681ee71c972fe",
175
-
"https://deno.land/x/fluent_gitlab_ci@v0.4.2/src/job.ts": "65a5be7f5816846919907aab00530044b571570a54a8a0bc967f4269a2ce99b7",
176
-
"https://deno.land/x/spinners@v1.1.2/mod.ts": "ed5b3562d4ea6c6887bc7e9844612b08a3bc3a3678ca77cc7dfdf461c362751e",
177
-
"https://deno.land/x/spinners@v1.1.2/spinner-types.ts": "c67e6962a0c738aa57b4d3ad9fe06c8c0131f93360acbf95456f2ba200fd8826",
178
-
"https://deno.land/x/spinners@v1.1.2/terminal-spinner.ts": "1cf0c38a423781734e2e538323c1992027830d741e90f0b81f532e5bc993d035",
179
-
"https://deno.land/x/spinners@v1.1.2/util.ts": "7083203bedbda2e6144a14a7dd093747a7a01e73d95637c888bae8ac22a1c58b",
180
-
"https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20",
181
-
"https://deno.land/x/zod@v3.22.1/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea",
182
-
"https://deno.land/x/zod@v3.22.1/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef",
183
-
"https://deno.land/x/zod@v3.22.1/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe",
184
-
"https://deno.land/x/zod@v3.22.1/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c",
185
-
"https://deno.land/x/zod@v3.22.1/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7",
186
-
"https://deno.land/x/zod@v3.22.1/helpers/parseUtil.ts": "f791e6e65a0340d85ad37d26cd7a3ba67126cd9957eac2b7163162155283abb1",
187
-
"https://deno.land/x/zod@v3.22.1/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7",
188
-
"https://deno.land/x/zod@v3.22.1/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e",
189
-
"https://deno.land/x/zod@v3.22.1/helpers/util.ts": "8baf19b19b2fca8424380367b90364b32503b6b71780269a6e3e67700bb02774",
190
-
"https://deno.land/x/zod@v3.22.1/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268",
191
-
"https://deno.land/x/zod@v3.22.1/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c",
192
-
"https://deno.land/x/zod@v3.22.1/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4",
193
-
"https://deno.land/x/zod@v3.22.1/types.ts": "4edc1823385f446532c8c9f676d84550c6dc54b17135e34508576647d9612d0e",
194
-
"https://esm.sh/@dagger.io/dagger@0.8.4": "424bddc1457c1fc4975c978425730be068b5414e92dca7a64f2d80e2123c4719",
195
-
"https://esm.sh/graphql-tag@2.12.6": "2d8f017bc251d9e7346bafc3f3aef4b65f7fdc302c6e0d085e3359f44c893068",
196
-
"https://esm.sh/nanoid@4.0.2": "df5af492771eb7ed903cec5e5d8ff721bc75e6c09ddf9fc9263215c8497961f4",
197
-
"https://esm.sh/stringify-tree@1.1.1": "a0515b0f4fe97a6972047a588b7982592d9079e7aeac3323b0d26448a757cf84",
198
-
"https://esm.sh/v128/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
199
-
"https://esm.sh/v128/graphql-request@6.1.0": "17f00c323eb825811ce14e2b0e88a0c873acb666c382ac963d1edeb03e01f372",
200
-
"https://esm.sh/v128/graphql-request@6.1.0/denonext/graphql-request.mjs": "0b15f49d44489423ae6f06004725b6d050b6359da4969e6569bd6ad45065bd94",
201
-
"https://esm.sh/v128/graphql@16.7.1/denonext/graphql.mjs": "418ad7c07b0f2d687f33b6275d3b5f317f4afbef1f462f318229f458dff45416",
202
-
"https://esm.sh/v128/yaml@2.3.1": "8ef3aee065e93b03cebf8fd5a3418bc30131344b7f2b8c8ae27bf9f277416087",
203
-
"https://esm.sh/v128/yaml@2.3.1/denonext/yaml.mjs": "71f677b4bfc69271af9d98db5194e354f9a1863955e208e26d32a9ef78bd89f5",
204
-
"https://esm.sh/v131/yaml@2.3.1": "1fe2490feb3d9c6d2c71c64dbdbed90acd4164b00628b3c68a311b6731ca38b5",
205
-
"https://esm.sh/v131/yaml@2.3.1/denonext/yaml.mjs": "71f677b4bfc69271af9d98db5194e354f9a1863955e208e26d32a9ef78bd89f5",
206
-
"https://esm.sh/v132/@dagger.io/dagger@0.8.4/denonext/dagger.mjs": "a090c18168360a715fcc7ff731cc6cf940e8d08b8a5b18fa80983b47666118a9",
207
-
"https://esm.sh/v132/adm-zip@0.5.10/denonext/adm-zip.mjs": "bcdc3b866e0817ac4f1b2a3021dd0a9aafa2c65f1fd254511706b7924fa8b0b7",
208
-
"https://esm.sh/v132/chownr@2.0.0/denonext/chownr.mjs": "30b8f17084dfbe475a5052b615f706b06ddd17dca0535103340d485c6b94e952",
209
-
"https://esm.sh/v132/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6",
210
-
"https://esm.sh/v132/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "7c92cdafd952c699fe01eb7a0c29c7cc112c546068ff757cb8832fa110499f11",
211
-
"https://esm.sh/v132/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956",
212
-
"https://esm.sh/v132/execa@7.2.0/denonext/execa.mjs": "5aa1c5a07843e56fd4ff4e0728d11941122d9f3c4bc37600971aa8e75c86d3a6",
213
-
"https://esm.sh/v132/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "18bcb6852f74c79ad50261e900a8c5daf2e7c38ce6662859e4f6f61d18daa6ed",
214
-
"https://esm.sh/v132/get-stream@6.0.1/denonext/get-stream.mjs": "a947a16f8cb3052fd654a84f8b36b40ce96b6a5acfb3ad4ab69d814bcf3351fb",
215
-
"https://esm.sh/v132/graphql-request@6.1.0/denonext/graphql-request.mjs": "796e05cc81ad339ef182de57452ffc00e9fef874df14fbba41338ca893499733",
216
-
"https://esm.sh/v132/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "ca4302aabfeec9e4335103f1a3eeaf26277af50b828a3bcde7f262fcd4e98e1d",
217
-
"https://esm.sh/v132/graphql@16.8.0/denonext/graphql.mjs": "e10e0db78cbbef8215b2665e5ed46cbb28fc61ecdb560f9e8d304a610f51f5bc",
218
-
"https://esm.sh/v132/human-signals@4.3.1/denonext/human-signals.mjs": "3889110cedd907804443d018cffe0a1d892d5e7467661376caf967feff55cbe9",
219
-
"https://esm.sh/v132/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7",
220
-
"https://esm.sh/v132/isexe@2.0.0/denonext/isexe.mjs": "3cfefd270d1bfdfb864ee98dbb8f41d150cbf480925158f4a8f0ade8a9e17d6c",
221
-
"https://esm.sh/v132/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55",
222
-
"https://esm.sh/v132/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61",
223
-
"https://esm.sh/v132/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138",
224
-
"https://esm.sh/v132/minipass@3.3.6/denonext/minipass.mjs": "59bbe430514455e78cb30c389b21af66efb2bf010cda071820a17d8c76d0d1cf",
225
-
"https://esm.sh/v132/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401",
226
-
"https://esm.sh/v132/minizlib@2.1.2/denonext/minizlib.mjs": "2e35ea8aa6cb4caa6f9b6c5b3c8684460698c868363e134af26c28d0e76ded5f",
227
-
"https://esm.sh/v132/mkdirp@1.0.4/denonext/mkdirp.mjs": "091be31ee8a9c0f5f716b769bf81397ac70a587a5f2b0367e1e3bda26f5a8af7",
228
-
"https://esm.sh/v132/nanoid@4.0.2/denonext/nanoid.mjs": "4f26e89bc0867e6a838069435b3d75af305017d87ce5b51c9d6edc680954b52f",
229
-
"https://esm.sh/v132/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde",
230
-
"https://esm.sh/v132/node_fetch.js": "b11355358cf61343a3c30bd5942df60a3586d13e2c979b515164bfe851662798",
231
-
"https://esm.sh/v132/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "b97d372a504bcca269c98f5d13ba0671e47230aaaaa36c3554b4a705085044df",
232
-
"https://esm.sh/v132/onetime@6.0.0/denonext/onetime.mjs": "c0be3fa6d700bb157f9a710aaf23df049f70c6a7d7e66a7d76568c5177267c51",
233
-
"https://esm.sh/v132/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667",
234
-
"https://esm.sh/v132/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0",
235
-
"https://esm.sh/v132/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417",
236
-
"https://esm.sh/v132/shebang-command@2.0.0/denonext/shebang-command.mjs": "35a3eae8fe5ccaab6598ba16e81bfc06bc1b46128028cd4cf76d63786dcd54aa",
237
-
"https://esm.sh/v132/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9",
238
-
"https://esm.sh/v132/signal-exit@3.0.7/denonext/signal-exit.mjs": "2a176e5f9b351fa8057213c627a1503d63bf308b64447ef47f1ca6fbb2a91c81",
239
-
"https://esm.sh/v132/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "eaa9333a5219638ad170d12e12603ae00ae80fc8bf02cc112cfec7294e6bcb43",
240
-
"https://esm.sh/v132/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102",
241
-
"https://esm.sh/v132/tar@6.2.0/denonext/tar.mjs": "f55c2f94c0ba1123048c9e3fa0af3a2bebac3af5a9895610865f05ae4d0b7f58",
242
-
"https://esm.sh/v132/tslib@2.6.2/denonext/tslib.mjs": "29782bcd3139f77ec063dc5a9385c0fff4a8d0a23b6765c73d9edeb169a04bf1",
243
-
"https://esm.sh/v132/which@2.0.2/denonext/which.mjs": "7482079af785ec16137592b26d53cb2808b05979559f5d0d9d036a80c6b1636e",
244
-
"https://esm.sh/v132/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82",
245
-
"https://esm.sh/v132/yaml@2.3.1/denonext/yaml.mjs": "71f677b4bfc69271af9d98db5194e354f9a1863955e208e26d32a9ef78bd89f5",
246
-
"https://esm.sh/yaml@v2.3.1": "5471fa3592a8a9d1a4a3d8cacf54070b01aedaca82f14fdbbdd056a491db00ec",
247
-
"https://nix.fluentci.io/v0.5.1/deps.ts": "d2fee07fcb79b609f64f988990ad5d67c7bf17455f75dcbf1b3bbfa5de7c73b2",
248
-
"https://nix.fluentci.io/v0.5.1/src/dagger/steps.ts": "b766f4fa9624a032e7af884a5ca47bc666a529c4a472d38b74b55ca0d63cf81d",
249
-
"https://nix.fluentci.io/zenith/deps.ts": "a8fd3aa32faea5de2779cc6494471b4fd9588f039d199ff1a1ff1b00343aef26",
250
-
"https://nix.fluentci.io/zenith/src/dagger/steps.ts": "b766f4fa9624a032e7af884a5ca47bc666a529c4a472d38b74b55ca0d63cf81d",
251
-
"https://sdk.fluentci.io/v0.1.9/deps.ts": "1b036b7614a602b11e062a6911f26a6e2ac4e470cc74ac230125afd466cc77ea",
252
-
"https://sdk.fluentci.io/v0.1.9/mod.ts": "a3c03bdb97c5a3b998c7c9f616c7b00d4268013c3b16e8a90c1a36a85529d841",
253
-
"https://sdk.fluentci.io/v0.1.9/src/client.ts": "a8dd54861feccd11a53df39b2d45bfb3b2a8a3dff509f5700c41b517d4dff44d",
254
-
"https://sdk.fluentci.io/v0.1.9/src/connect.ts": "1bb42b4e0c5073bb2125b90f1d7d08a66fcad9ad8c453924b944be72d3a56c98",
255
-
"https://sdk.fluentci.io/v0.1.9/src/context.ts": "2939ff58d0a79d7377d5553e725c9a2110a0013035a5a57abe9a9a5da975c4ce",
256
-
"https://sdk.fluentci.io/v0.1.9/src/utils.ts": "394d131cfd465f0f3d8f876237f3bad1ab4dba73b9b7a396ee705d02aee40c16",
257
-
"https://sdk.fluentci.io/z1/deps.ts": "1b036b7614a602b11e062a6911f26a6e2ac4e470cc74ac230125afd466cc77ea",
258
-
"https://sdk.fluentci.io/z1/mod.ts": "261ba81a4728f5def4e327a5cd80664ea8449515a2f4eea5f3f416acae39a1fa",
259
-
"https://sdk.fluentci.io/z1/src/client.ts": "dde6d20c41df43e5bb7763782eb3702a8d830a827444d1fb388fc574b2e6a64c",
260
-
"https://sdk.fluentci.io/z1/src/connect.ts": "4aff111c403cf78672384a10214a9885e08319dde579ec458f98a7bb04874101",
261
-
"https://sdk.fluentci.io/z1/src/context.ts": "2939ff58d0a79d7377d5553e725c9a2110a0013035a5a57abe9a9a5da975c4ce",
262
-
"https://sdk.fluentci.io/z1/src/utils.ts": "5dcd6d83553930502069d067ff42bc44698e22c23426fdb78630c4b39769d308"
263
-
}
264
-
}
-34
.fluentci/example/.fluentci/deps.ts
-34
.fluentci/example/.fluentci/deps.ts
···
1
-
export { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
2
-
import Client from "https://sdk.fluentci.io/z1/mod.ts";
3
-
export default Client;
4
-
5
-
export {
6
-
connect,
7
-
uploadContext,
8
-
CacheSharingMode,
9
-
} from "https://sdk.fluentci.io/z1/mod.ts";
10
-
export { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts";
11
-
export { withDevbox } from "https://nix.fluentci.io/zenith/src/dagger/steps.ts";
12
-
export { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1";
13
-
import gql from "https://esm.sh/graphql-tag@2.12.6";
14
-
export { gql };
15
-
16
-
export {
17
-
arg,
18
-
queryType,
19
-
stringArg,
20
-
intArg,
21
-
nonNull,
22
-
makeSchema,
23
-
} from "npm:nexus";
24
-
export {
25
-
dirname,
26
-
join,
27
-
resolve,
28
-
} from "https://deno.land/std@0.203.0/path/mod.ts";
29
-
30
-
export * as FluentGitlabCI from "https://deno.land/x/fluent_gitlab_ci@v0.4.2/mod.ts";
31
-
export * as FluentGithubActions from "https://deno.land/x/fluent_github_actions@v0.2.1/mod.ts";
32
-
export * as FluentCircleCI from "https://deno.land/x/fluent_circleci@v0.2.5/mod.ts";
33
-
export * as FluentAzurePipelines from "https://deno.land/x/fluent_azure_pipelines@v0.2.0/mod.ts";
34
-
export * as FluentAWSCodePipeline from "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/mod.ts";
-24
.fluentci/example/.fluentci/example/.github/workflows/tests.yml
-24
.fluentci/example/.fluentci/example/.github/workflows/tests.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent Github Actions
2
-
3
-
name: Test
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
test:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Tests and Build
24
-
run: dagger run fluentci rust_pipeline test build
-1
.fluentci/example/.fluentci/example/.gitignore
-1
.fluentci/example/.fluentci/example/.gitignore
···
1
-
target/
-7
.fluentci/example/.fluentci/example/Cargo.lock
-7
.fluentci/example/.fluentci/example/Cargo.lock
-8
.fluentci/example/.fluentci/example/Cargo.toml
-8
.fluentci/example/.fluentci/example/Cargo.toml
-5
.fluentci/example/.fluentci/example/build.gql
-5
.fluentci/example/.fluentci/example/build.gql
-14
.fluentci/example/.fluentci/example/src/lib.rs
-14
.fluentci/example/.fluentci/example/src/lib.rs
-28
.fluentci/example/.fluentci/fixtures/.gitlab-ci.yml
-28
.fluentci/example/.fluentci/fixtures/.gitlab-ci.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_gitlab_ci
2
-
3
-
.docker:
4
-
image: denoland/deno:alpine
5
-
services:
6
-
- docker:${DOCKER_VERSION}-dind
7
-
variables:
8
-
DOCKER_HOST: tcp://docker:2376
9
-
DOCKER_TLS_VERIFY: "1"
10
-
DOCKER_TLS_CERTDIR: /certs
11
-
DOCKER_CERT_PATH: /certs/client
12
-
DOCKER_DRIVER: overlay2
13
-
DOCKER_VERSION: 20.10.16
14
-
15
-
.dagger:
16
-
extends: .docker
17
-
before_script:
18
-
- apk add docker-cli curl unzip
19
-
- deno install -A -r https://cli.fluentci.io -n fluentci
20
-
- curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
- mv bin/dagger /usr/local/bin
22
-
- dagger version
23
-
24
-
tests:
25
-
extends: .dagger
26
-
script:
27
-
- fluentci run rust_pipeline test build
28
-
-22
.fluentci/example/.fluentci/fixtures/azure-pipelines.yml
-22
.fluentci/example/.fluentci/fixtures/azure-pipelines.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_azure_pipelines
2
-
3
-
trigger:
4
-
- main
5
-
pool:
6
-
name: Default
7
-
vmImage: ubuntu-latest
8
-
steps:
9
-
- script: |
10
-
curl -fsSL https://deno.land/x/install/install.sh | sh
11
-
export DENO_INSTALL="$HOME/.deno"
12
-
export PATH="$DENO_INSTALL/bin:$PATH"
13
-
displayName: Install Deno
14
-
- script: deno install -A -r https://cli.fluentci.io -n fluentci
15
-
displayName: Setup Fluent CI CLI
16
-
- script: |
17
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
18
-
sudo mv bin/dagger /usr/local/bin
19
-
dagger version
20
-
displayName: Setup Dagger
21
-
- script: fluentci run rust_pipeline test build
22
-
displayName: Run Dagger Pipelines
-19
.fluentci/example/.fluentci/fixtures/buildspec.yml
-19
.fluentci/example/.fluentci/fixtures/buildspec.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_aws_codepipeline
2
-
3
-
version: 0.2
4
-
phases:
5
-
install:
6
-
commands:
7
-
- curl -fsSL https://deno.land/x/install/install.sh | sh
8
-
- export DENO_INSTALL="$HOME/.deno"
9
-
- export PATH="$DENO_INSTALL/bin:$PATH"
10
-
- deno install -A -r https://cli.fluentci.io -n fluentci
11
-
- curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
12
-
- mv bin/dagger /usr/local/bin
13
-
- dagger version
14
-
build:
15
-
commands:
16
-
- fluentci run rust_pipeline test build
17
-
post_build:
18
-
commands:
19
-
- echo Build completed on `date`
-26
.fluentci/example/.fluentci/fixtures/config.yml
-26
.fluentci/example/.fluentci/fixtures/config.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_circleci
2
-
3
-
version: 2.1
4
-
jobs:
5
-
tests:
6
-
steps:
7
-
- checkout
8
-
- run: sudo apt-get update && sudo apt-get install -y curl unzip
9
-
- run: |
10
-
curl -fsSL https://deno.land/x/install/install.sh | sh
11
-
export DENO_INSTALL="$HOME/.deno"
12
-
export PATH="$DENO_INSTALL/bin:$PATH"
13
-
- run: deno install -A -r https://cli.fluentci.io -n fluentci
14
-
- run: |
15
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
16
-
sudo mv bin/dagger /usr/local/bin
17
-
dagger version
18
-
- run:
19
-
name: Run Dagger Pipelines
20
-
command: fluentci run rust_pipeline test build
21
-
machine:
22
-
image: ubuntu-2004:2023.07.1
23
-
workflows:
24
-
dagger:
25
-
jobs:
26
-
- tests
-24
.fluentci/example/.fluentci/fixtures/workflow.yml
-24
.fluentci/example/.fluentci/fixtures/workflow.yml
···
1
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions
2
-
3
-
name: Test
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
test:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Tests and Build
24
-
run: fluentci run rust_pipeline test build
-139
.fluentci/example/.fluentci/gen/nexus.ts
-139
.fluentci/example/.fluentci/gen/nexus.ts
···
1
-
/**
2
-
* This file was generated by Nexus Schema
3
-
* Do not make changes to this file directly
4
-
*/
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
declare global {
13
-
interface NexusGen extends NexusGenTypes {}
14
-
}
15
-
16
-
export interface NexusGenInputs {
17
-
}
18
-
19
-
export interface NexusGenEnums {
20
-
}
21
-
22
-
export interface NexusGenScalars {
23
-
String: string
24
-
Int: number
25
-
Float: number
26
-
Boolean: boolean
27
-
ID: string
28
-
}
29
-
30
-
export interface NexusGenObjects {
31
-
Query: {};
32
-
}
33
-
34
-
export interface NexusGenInterfaces {
35
-
}
36
-
37
-
export interface NexusGenUnions {
38
-
}
39
-
40
-
export type NexusGenRootTypes = NexusGenObjects
41
-
42
-
export type NexusGenAllTypes = NexusGenRootTypes & NexusGenScalars
43
-
44
-
export interface NexusGenFieldTypes {
45
-
Query: { // field return type
46
-
build: string | null; // String
47
-
test: string | null; // String
48
-
}
49
-
}
50
-
51
-
export interface NexusGenFieldTypeNames {
52
-
Query: { // field return type name
53
-
build: 'String'
54
-
test: 'String'
55
-
}
56
-
}
57
-
58
-
export interface NexusGenArgTypes {
59
-
Query: {
60
-
build: { // args
61
-
src: string; // String!
62
-
}
63
-
test: { // args
64
-
src: string; // String!
65
-
}
66
-
}
67
-
}
68
-
69
-
export interface NexusGenAbstractTypeMembers {
70
-
}
71
-
72
-
export interface NexusGenTypeInterfaces {
73
-
}
74
-
75
-
export type NexusGenObjectNames = keyof NexusGenObjects;
76
-
77
-
export type NexusGenInputNames = never;
78
-
79
-
export type NexusGenEnumNames = never;
80
-
81
-
export type NexusGenInterfaceNames = never;
82
-
83
-
export type NexusGenScalarNames = keyof NexusGenScalars;
84
-
85
-
export type NexusGenUnionNames = never;
86
-
87
-
export type NexusGenObjectsUsingAbstractStrategyIsTypeOf = never;
88
-
89
-
export type NexusGenAbstractsUsingStrategyResolveType = never;
90
-
91
-
export type NexusGenFeaturesConfig = {
92
-
abstractTypeStrategies: {
93
-
isTypeOf: false
94
-
resolveType: true
95
-
__typename: false
96
-
}
97
-
}
98
-
99
-
export interface NexusGenTypes {
100
-
context: any;
101
-
inputTypes: NexusGenInputs;
102
-
rootTypes: NexusGenRootTypes;
103
-
inputTypeShapes: NexusGenInputs & NexusGenEnums & NexusGenScalars;
104
-
argTypes: NexusGenArgTypes;
105
-
fieldTypes: NexusGenFieldTypes;
106
-
fieldTypeNames: NexusGenFieldTypeNames;
107
-
allTypes: NexusGenAllTypes;
108
-
typeInterfaces: NexusGenTypeInterfaces;
109
-
objectNames: NexusGenObjectNames;
110
-
inputNames: NexusGenInputNames;
111
-
enumNames: NexusGenEnumNames;
112
-
interfaceNames: NexusGenInterfaceNames;
113
-
scalarNames: NexusGenScalarNames;
114
-
unionNames: NexusGenUnionNames;
115
-
allInputTypes: NexusGenTypes['inputNames'] | NexusGenTypes['enumNames'] | NexusGenTypes['scalarNames'];
116
-
allOutputTypes: NexusGenTypes['objectNames'] | NexusGenTypes['enumNames'] | NexusGenTypes['unionNames'] | NexusGenTypes['interfaceNames'] | NexusGenTypes['scalarNames'];
117
-
allNamedTypes: NexusGenTypes['allInputTypes'] | NexusGenTypes['allOutputTypes']
118
-
abstractTypes: NexusGenTypes['interfaceNames'] | NexusGenTypes['unionNames'];
119
-
abstractTypeMembers: NexusGenAbstractTypeMembers;
120
-
objectsUsingAbstractStrategyIsTypeOf: NexusGenObjectsUsingAbstractStrategyIsTypeOf;
121
-
abstractsUsingStrategyResolveType: NexusGenAbstractsUsingStrategyResolveType;
122
-
features: NexusGenFeaturesConfig;
123
-
}
124
-
125
-
126
-
declare global {
127
-
interface NexusGenPluginTypeConfig<TypeName extends string> {
128
-
}
129
-
interface NexusGenPluginInputTypeConfig<TypeName extends string> {
130
-
}
131
-
interface NexusGenPluginFieldConfig<TypeName extends string, FieldName extends string> {
132
-
}
133
-
interface NexusGenPluginInputFieldConfig<TypeName extends string, FieldName extends string> {
134
-
}
135
-
interface NexusGenPluginSchemaConfig {
136
-
}
137
-
interface NexusGenPluginArgConfig {
138
-
}
139
-
}
-34
.fluentci/example/.fluentci/import_map.json
-34
.fluentci/example/.fluentci/import_map.json
···
1
-
{
2
-
"imports": {
3
-
"@fluentci.io/dagger": "https://sdk.fluentci.io/v0.1.9/mod.ts",
4
-
"@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.8.4",
5
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
6
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
7
-
"fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.4.2/mod.ts",
8
-
"fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.2.1/mod.ts",
9
-
"fluent_circleci": "https://deno.land/x/fluent_circleci@v0.2.5/mod.ts",
10
-
"fluent_azure_pipelines": "https://deno.land/x/fluent_azure_pipelines@v0.2.0/mod.ts",
11
-
"fluent_aws_codepipeline": "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/mod.ts",
12
-
"crypto": "node:crypto",
13
-
"fs": "node:fs",
14
-
"os": "node:os",
15
-
"path": "node:path",
16
-
"process": "node:process",
17
-
"readline": "node:readline",
18
-
"url": "node:url"
19
-
},
20
-
"scopes": {
21
-
"https://esm.sh/v128/": {
22
-
"@lifeomic/axios-fetch": "https://esm.sh/v128/@lifeomic/axios-fetch@3.0.1",
23
-
"adm-zip": "https://esm.sh/v128/adm-zip@0.5.10",
24
-
"env-paths": "https://esm.sh/v128/env-paths@3.0.0",
25
-
"execa": "https://esm.sh/v128/execa@7.1.1",
26
-
"graphql-request": "https://esm.sh/v128/graphql-request@6.1.0",
27
-
"graphql-tag": "https://esm.sh/v128/graphql-tag@2.12.6",
28
-
"graphql": "https://esm.sh/v128/graphql@16.7.1",
29
-
"node-color-log": "https://esm.sh/v128/node-color-log@10.0.2",
30
-
"node-fetch": "https://esm.sh/v128/node-fetch@3.3.1",
31
-
"tar": "https://esm.sh/v128/tar@6.1.15"
32
-
}
33
-
}
34
-
}
-3
.fluentci/example/.fluentci/mod.ts
-3
.fluentci/example/.fluentci/mod.ts
-8
.fluentci/example/.fluentci/schema.graphql
-8
.fluentci/example/.fluentci/schema.graphql
-39
.fluentci/example/.fluentci/src/aws/README.md
-39
.fluentci/example/.fluentci/src/aws/README.md
···
1
-
# AWS CodePipeline
2
-
3
-
[](https://pkg.fluentci.io/rust_pipeline)
4
-
[](https://deno.land/x/rust_pipeline)
5
-

6
-
[](https://codecov.io/gh/fluent-ci-templates/rust-pipeline)
7
-
8
-
The following command will generate a `buildspec.yml` file in your project:
9
-
10
-
```bash
11
-
fluentci ac init -t rust_pipeline
12
-
```
13
-
14
-
Generated file:
15
-
16
-
```yaml
17
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_aws_codepipeline
18
-
19
-
version: 0.2
20
-
phases:
21
-
install:
22
-
commands:
23
-
- curl -fsSL https://deno.land/x/install/install.sh | sh
24
-
- export DENO_INSTALL="$HOME/.deno"
25
-
- export PATH="$DENO_INSTALL/bin:$PATH"
26
-
- deno install -A -r https://cli.fluentci.io -n fluentci
27
-
- curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
28
-
- mv bin/dagger /usr/local/bin
29
-
- dagger version
30
-
build:
31
-
commands:
32
-
- fluentci run rust_pipeline test build
33
-
post_build:
34
-
commands:
35
-
- echo Build completed on `date`
36
-
37
-
```
38
-
39
-
Feel free to edit the template generator at `.fluentci/src/aws/config.ts` to your needs.
-24
.fluentci/example/.fluentci/src/aws/config.ts
-24
.fluentci/example/.fluentci/src/aws/config.ts
···
1
-
import { BuildSpec } from "fluent_aws_codepipeline";
2
-
3
-
export function generateYaml(): BuildSpec {
4
-
const buildspec = new BuildSpec();
5
-
buildspec
6
-
.phase("install", {
7
-
commands: [
8
-
"curl -fsSL https://deno.land/x/install/install.sh | sh",
9
-
'export DENO_INSTALL="$HOME/.deno"',
10
-
'export PATH="$DENO_INSTALL/bin:$PATH"',
11
-
"deno install -A -r https://cli.fluentci.io -n fluentci",
12
-
"curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh",
13
-
"mv bin/dagger /usr/local/bin",
14
-
"dagger version",
15
-
],
16
-
})
17
-
.phase("build", {
18
-
commands: ["fluentci run rust_pipeline test build"],
19
-
})
20
-
.phase("post_build", {
21
-
commands: ["echo Build completed on `date`"],
22
-
});
23
-
return buildspec;
24
-
}
-9
.fluentci/example/.fluentci/src/aws/config_test.ts
-9
.fluentci/example/.fluentci/src/aws/config_test.ts
···
1
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
2
-
import { generateYaml } from "./config.ts";
3
-
4
-
Deno.test(function generateAWSCodePipelineTest() {
5
-
const buildspec = generateYaml();
6
-
const actual = buildspec.toString();
7
-
const expected = Deno.readTextFileSync("./fixtures/buildspec.yml");
8
-
assertEquals(actual, expected);
9
-
});
-3
.fluentci/example/.fluentci/src/aws/init.ts
-3
.fluentci/example/.fluentci/src/aws/init.ts
-42
.fluentci/example/.fluentci/src/azure/README.md
-42
.fluentci/example/.fluentci/src/azure/README.md
···
1
-
# Azure Pipelines
2
-
3
-
[](https://pkg.fluentci.io/rust_pipeline)
4
-
[](https://deno.land/x/rust_pipeline)
5
-

6
-
[](https://codecov.io/gh/fluent-ci-templates/rust-pipeline)
7
-
8
-
The following command will generate a `azure-pipelines.yml` file in your project:
9
-
10
-
```bash
11
-
fluentci ap init -t rust_pipeline
12
-
```
13
-
14
-
Generated file:
15
-
16
-
```yaml
17
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_azure_pipelines
18
-
19
-
trigger:
20
-
- main
21
-
pool:
22
-
name: Default
23
-
vmImage: ubuntu-latest
24
-
steps:
25
-
- script: |
26
-
curl -fsSL https://deno.land/x/install/install.sh | sh
27
-
export DENO_INSTALL="$HOME/.deno"
28
-
export PATH="$DENO_INSTALL/bin:$PATH"
29
-
displayName: Install Deno
30
-
- script: deno install -A -r https://cli.fluentci.io -n fluentci
31
-
displayName: Setup Fluent CI CLI
32
-
- script: |
33
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
34
-
sudo mv bin/dagger /usr/local/bin
35
-
dagger version
36
-
displayName: Setup Dagger
37
-
- script: fluentci run rust_pipeline test build
38
-
displayName: Run Dagger Pipelines
39
-
40
-
```
41
-
42
-
Feel free to edit the template generator at `.fluentci/src/azure/config.ts` to your needs.
-41
.fluentci/example/.fluentci/src/azure/config.ts
-41
.fluentci/example/.fluentci/src/azure/config.ts
···
1
-
import { AzurePipeline } from "fluent_azure_pipelines";
2
-
3
-
export function generateYaml(): AzurePipeline {
4
-
const azurePipeline = new AzurePipeline();
5
-
6
-
const installDeno = `\
7
-
curl -fsSL https://deno.land/x/install/install.sh | sh
8
-
export DENO_INSTALL="$HOME/.deno"
9
-
export PATH="$DENO_INSTALL/bin:$PATH"
10
-
`;
11
-
12
-
const setupDagger = `\
13
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
14
-
sudo mv bin/dagger /usr/local/bin
15
-
dagger version
16
-
`;
17
-
18
-
azurePipeline
19
-
.trigger(["main"])
20
-
.pool({
21
-
name: "Default",
22
-
vmImage: "ubuntu-latest",
23
-
})
24
-
.step({
25
-
script: installDeno,
26
-
displayName: "Install Deno",
27
-
})
28
-
.step({
29
-
script: "deno install -A -r https://cli.fluentci.io -n fluentci",
30
-
displayName: "Setup Fluent CI CLI",
31
-
})
32
-
.step({
33
-
script: setupDagger,
34
-
displayName: "Setup Dagger",
35
-
})
36
-
.step({
37
-
script: "fluentci run rust_pipeline test build",
38
-
displayName: "Run Dagger Pipelines",
39
-
});
40
-
return azurePipeline;
41
-
}
-9
.fluentci/example/.fluentci/src/azure/config_test.ts
-9
.fluentci/example/.fluentci/src/azure/config_test.ts
···
1
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
2
-
import { generateYaml } from "./config.ts";
3
-
4
-
Deno.test(function generateAzurePipelinesTest() {
5
-
const azurepipelines = generateYaml();
6
-
const actual = azurepipelines.toString();
7
-
const expected = Deno.readTextFileSync("./fixtures/azure-pipelines.yml");
8
-
assertEquals(actual, expected);
9
-
});
-3
.fluentci/example/.fluentci/src/azure/init.ts
-3
.fluentci/example/.fluentci/src/azure/init.ts
-47
.fluentci/example/.fluentci/src/circleci/README.md
-47
.fluentci/example/.fluentci/src/circleci/README.md
···
1
-
# Circle CI
2
-
3
-
[](https://pkg.fluentci.io/rust_pipeline)
4
-
[](https://deno.land/x/rust_pipeline)
5
-

6
-
[](https://codecov.io/gh/fluent-ci-templates/rust-pipeline)
7
-
8
-
9
-
The following command will generate a `.circleci/config.yml` file in your project:
10
-
11
-
```bash
12
-
fluentci cci init -t rust_pipeline
13
-
```
14
-
15
-
Generated file:
16
-
17
-
```yaml
18
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_circleci
19
-
20
-
version: 2.1
21
-
jobs:
22
-
tests:
23
-
steps:
24
-
- checkout
25
-
- run: sudo apt-get update && sudo apt-get install -y curl unzip
26
-
- run: |
27
-
curl -fsSL https://deno.land/x/install/install.sh | sh
28
-
export DENO_INSTALL="$HOME/.deno"
29
-
export PATH="$DENO_INSTALL/bin:$PATH"
30
-
- run: deno install -A -r https://cli.fluentci.io -n fluentci
31
-
- run: |
32
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
33
-
sudo mv bin/dagger /usr/local/bin
34
-
dagger version
35
-
- run:
36
-
name: Upload Coverage
37
-
command: fluentci run rust_pipeline test build
38
-
machine:
39
-
image: ubuntu-2004:2023.07.1
40
-
workflows:
41
-
dagger:
42
-
jobs:
43
-
- tests
44
-
45
-
```
46
-
47
-
Feel free to edit the template generator at `.fluentci/src/circleci/config.ts` to your needs.
-37
.fluentci/example/.fluentci/src/circleci/config.ts
-37
.fluentci/example/.fluentci/src/circleci/config.ts
···
1
-
import { CircleCI, Job } from "fluent_circleci";
2
-
3
-
export function generateYaml(): CircleCI {
4
-
const circleci = new CircleCI();
5
-
6
-
const tests = new Job().machine({ image: "ubuntu-2004:2023.07.1" }).steps([
7
-
"checkout",
8
-
{
9
-
run: "sudo apt-get update && sudo apt-get install -y curl unzip",
10
-
},
11
-
{
12
-
run: `\
13
-
curl -fsSL https://deno.land/x/install/install.sh | sh
14
-
export DENO_INSTALL="$HOME/.deno"
15
-
export PATH="$DENO_INSTALL/bin:$PATH"`,
16
-
},
17
-
{
18
-
run: "deno install -A -r https://cli.fluentci.io -n fluentci",
19
-
},
20
-
{
21
-
run: `\
22
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
23
-
sudo mv bin/dagger /usr/local/bin
24
-
dagger version`,
25
-
},
26
-
{
27
-
run: {
28
-
name: "Run Dagger Pipelines",
29
-
command: "fluentci run rust_pipeline test build",
30
-
},
31
-
},
32
-
]);
33
-
34
-
circleci.jobs({ tests }).workflow("dagger", ["tests"]);
35
-
36
-
return circleci;
37
-
}
-9
.fluentci/example/.fluentci/src/circleci/config_test.ts
-9
.fluentci/example/.fluentci/src/circleci/config_test.ts
···
1
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
2
-
import { generateYaml } from "./config.ts";
3
-
4
-
Deno.test(function generateCircleCITest() {
5
-
const circleci = generateYaml();
6
-
const actual = circleci.toString();
7
-
const expected = Deno.readTextFileSync("./fixtures/config.yml");
8
-
assertEquals(actual, expected);
9
-
});
-3
.fluentci/example/.fluentci/src/circleci/init.ts
-3
.fluentci/example/.fluentci/src/circleci/init.ts
-4
.fluentci/example/.fluentci/src/dagger/index.ts
-4
.fluentci/example/.fluentci/src/dagger/index.ts
-67
.fluentci/example/.fluentci/src/dagger/jobs.ts
-67
.fluentci/example/.fluentci/src/dagger/jobs.ts
···
1
-
import Client, { connect } from "../../deps.ts";
2
-
3
-
export enum Job {
4
-
test = "test",
5
-
build = "build",
6
-
}
7
-
8
-
export const exclude = ["target", ".git", ".devbox", ".fluentci"];
9
-
10
-
export const test = async (src = ".", options: string[] = []) => {
11
-
await connect(async (client: Client) => {
12
-
const context = client.host().directory(src);
13
-
const ctr = client
14
-
.pipeline(Job.test)
15
-
.container()
16
-
.from("rust:latest")
17
-
.withDirectory("/app", context, { exclude })
18
-
.withWorkdir("/app")
19
-
.withMountedCache("/app/target", client.cacheVolume("target"))
20
-
.withMountedCache("/root/cargo/registry", client.cacheVolume("registry"))
21
-
.withExec(["cargo", "test", ...options]);
22
-
23
-
const result = await ctr.stdout();
24
-
25
-
console.log(result);
26
-
});
27
-
return "done";
28
-
};
29
-
30
-
export const build = async (src = ".", options: string[] = []) => {
31
-
await connect(async (client: Client) => {
32
-
const context = client.host().directory(src);
33
-
const ctr = client
34
-
.pipeline(Job.build)
35
-
.container()
36
-
.from("rust:latest")
37
-
.withDirectory("/app", context, { exclude })
38
-
.withWorkdir("/app")
39
-
.withMountedCache("/app/target", client.cacheVolume("target"))
40
-
.withMountedCache("/root/cargo/registry", client.cacheVolume("registry"))
41
-
.withExec(["cargo", "build", "--release", ...options]);
42
-
43
-
const result = await ctr.stdout();
44
-
45
-
console.log(result);
46
-
});
47
-
return "done";
48
-
};
49
-
50
-
export type JobExec = (src?: string) =>
51
-
| Promise<string>
52
-
| ((
53
-
src?: string,
54
-
options?: {
55
-
ignore: string[];
56
-
}
57
-
) => Promise<string>);
58
-
59
-
export const runnableJobs: Record<Job, JobExec> = {
60
-
[Job.test]: test,
61
-
[Job.build]: build,
62
-
};
63
-
64
-
export const jobDescriptions: Record<Job, string> = {
65
-
[Job.test]: "Run tests",
66
-
[Job.build]: "Build the project",
67
-
};
-20
.fluentci/example/.fluentci/src/dagger/list_jobs.ts
-20
.fluentci/example/.fluentci/src/dagger/list_jobs.ts
···
1
-
import { brightGreen, stringifyTree } from "../../deps.ts";
2
-
import { runnableJobs, jobDescriptions, Job } from "./jobs.ts";
3
-
4
-
const tree = {
5
-
name: brightGreen("rust_pipeline"),
6
-
children: (Object.keys(runnableJobs) as Job[]).map((job) => ({
7
-
name: jobDescriptions[job]
8
-
? `${brightGreen(job)} - ${jobDescriptions[job]}`
9
-
: brightGreen(job),
10
-
children: [],
11
-
})),
12
-
};
13
-
14
-
console.log(
15
-
stringifyTree(
16
-
tree,
17
-
(t) => t.name,
18
-
(t) => t.children
19
-
)
20
-
);
-29
.fluentci/example/.fluentci/src/dagger/pipeline.ts
-29
.fluentci/example/.fluentci/src/dagger/pipeline.ts
···
1
-
import { uploadContext } from "../../deps.ts";
2
-
import * as jobs from "./jobs.ts";
3
-
4
-
const { build, test, exclude } = jobs;
5
-
6
-
export default async function pipeline(src = ".", args: string[] = []) {
7
-
if (Deno.env.has("FLUENTCI_SESSION_ID")) {
8
-
await uploadContext(src, exclude);
9
-
}
10
-
11
-
if (args.length > 0) {
12
-
await runSpecificJobs(args);
13
-
return;
14
-
}
15
-
16
-
await test(src);
17
-
await build(src);
18
-
}
19
-
20
-
async function runSpecificJobs(args: string[]) {
21
-
for (const name of args) {
22
-
// deno-lint-ignore no-explicit-any
23
-
const job = (jobs as any)[name];
24
-
if (!job) {
25
-
throw new Error(`Job ${name} not found`);
26
-
}
27
-
await job();
28
-
}
29
-
}
-13
.fluentci/example/.fluentci/src/dagger/queries.ts
-13
.fluentci/example/.fluentci/src/dagger/queries.ts
-3
.fluentci/example/.fluentci/src/dagger/runner.ts
-3
.fluentci/example/.fluentci/src/dagger/runner.ts
-36
.fluentci/example/.fluentci/src/dagger/schema.ts
-36
.fluentci/example/.fluentci/src/dagger/schema.ts
···
1
-
import {
2
-
queryType,
3
-
makeSchema,
4
-
dirname,
5
-
join,
6
-
resolve,
7
-
stringArg,
8
-
nonNull,
9
-
} from "../../deps.ts";
10
-
11
-
import { test, build } from "./jobs.ts";
12
-
13
-
const Query = queryType({
14
-
definition(t) {
15
-
t.string("test", {
16
-
args: {
17
-
src: nonNull(stringArg()),
18
-
},
19
-
resolve: async (_root, args, _ctx) => await test(args.src),
20
-
});
21
-
t.string("build", {
22
-
args: {
23
-
src: nonNull(stringArg()),
24
-
},
25
-
resolve: async (_root, args, _ctx) => await build(args.src),
26
-
});
27
-
},
28
-
});
29
-
30
-
export const schema = makeSchema({
31
-
types: [Query],
32
-
outputs: {
33
-
schema: resolve(join(dirname(".."), dirname(".."), "schema.graphql")),
34
-
typegen: resolve(join(dirname(".."), dirname(".."), "gen", "nexus.ts")),
35
-
},
36
-
});
-50
.fluentci/example/.fluentci/src/github/README.md
-50
.fluentci/example/.fluentci/src/github/README.md
···
1
-
# Github Actions
2
-
3
-
[](https://pkg.fluentci.io/rust_pipeline)
4
-
[](https://deno.land/x/rust_pipeline)
5
-

6
-
[](https://codecov.io/gh/fluent-ci-templates/rust-pipeline)
7
-
8
-
The following command will generate a `.github/workflows/tests.yml` file in your project:
9
-
10
-
```bash
11
-
fluentci gh init -t rust_pipeline
12
-
```
13
-
14
-
Or, if you already have a `.fluentci` folder (generated from `fluentci init -t rust`) in your project:
15
-
16
-
```bash
17
-
fluentci gh init
18
-
```
19
-
20
-
Generated file:
21
-
22
-
```yaml
23
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions
24
-
25
-
name: Test
26
-
on:
27
-
push:
28
-
branches:
29
-
- main
30
-
jobs:
31
-
test:
32
-
runs-on: ubuntu-latest
33
-
steps:
34
-
- uses: actions/checkout@v2
35
-
- uses: denoland/setup-deno@v1
36
-
with:
37
-
deno-version: v1.37
38
-
- name: Setup Fluent CI CLI
39
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
40
-
- name: Setup Dagger
41
-
run: |
42
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
43
-
sudo mv bin/dagger /usr/local/bin
44
-
dagger version
45
-
- name: Run Tests and Build
46
-
run: fluentci run rust_pipeline test build
47
-
48
-
```
49
-
50
-
Feel free to edit the template generator at `.fluentci/src/github/config.ts` to your needs.
-45
.fluentci/example/.fluentci/src/github/config.ts
-45
.fluentci/example/.fluentci/src/github/config.ts
···
1
-
import { JobSpec, Workflow } from "fluent_github_actions";
2
-
3
-
export function generateYaml(): Workflow {
4
-
const workflow = new Workflow("Test");
5
-
6
-
const push = {
7
-
branches: ["main"],
8
-
};
9
-
10
-
const setupDagger = `\
11
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
12
-
sudo mv bin/dagger /usr/local/bin
13
-
dagger version`;
14
-
15
-
const test: JobSpec = {
16
-
"runs-on": "ubuntu-latest",
17
-
steps: [
18
-
{
19
-
uses: "actions/checkout@v2",
20
-
},
21
-
{
22
-
uses: "denoland/setup-deno@v1",
23
-
with: {
24
-
"deno-version": "v1.37",
25
-
},
26
-
},
27
-
{
28
-
name: "Setup Fluent CI CLI",
29
-
run: "deno install -A -r https://cli.fluentci.io -n fluentci",
30
-
},
31
-
{
32
-
name: "Setup Dagger",
33
-
run: setupDagger,
34
-
},
35
-
{
36
-
name: "Run Tests and Build",
37
-
run: "fluentci run rust_pipeline test build",
38
-
},
39
-
],
40
-
};
41
-
42
-
workflow.on({ push }).jobs({ test });
43
-
44
-
return workflow;
45
-
}
-9
.fluentci/example/.fluentci/src/github/config_test.ts
-9
.fluentci/example/.fluentci/src/github/config_test.ts
···
1
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
2
-
import { generateYaml } from "./config.ts";
3
-
4
-
Deno.test(function generateGithubActionsWorkflowTest() {
5
-
const workflow = generateYaml();
6
-
const actual = workflow.toString();
7
-
const expected = Deno.readTextFileSync("./fixtures/workflow.yml");
8
-
assertEquals(actual, expected);
9
-
});
-3
.fluentci/example/.fluentci/src/github/init.ts
-3
.fluentci/example/.fluentci/src/github/init.ts
-48
.fluentci/example/.fluentci/src/gitlab/README.md
-48
.fluentci/example/.fluentci/src/gitlab/README.md
···
1
-
# Gitlab CI
2
-
3
-
[](https://pkg.fluentci.io/rust_pipeline)
4
-
[](https://deno.land/x/rust_pipeline)
5
-

6
-
[](https://codecov.io/gh/fluent-ci-templates/rust-pipeline)
7
-
8
-
The following command will generate a `.gitlab-ci.yml` file in your project:
9
-
10
-
```bash
11
-
fluentci gl init -t rust_pipeline
12
-
```
13
-
14
-
Generated file:
15
-
16
-
```yaml
17
-
18
-
# Do not edit this file directly. It is generated by https://deno.land/x/fluent_gitlab_ci
19
-
20
-
.docker:
21
-
image: denoland/deno:alpine
22
-
services:
23
-
- docker:${DOCKER_VERSION}-dind
24
-
variables:
25
-
DOCKER_HOST: tcp://docker:2376
26
-
DOCKER_TLS_VERIFY: "1"
27
-
DOCKER_TLS_CERTDIR: /certs
28
-
DOCKER_CERT_PATH: /certs/client
29
-
DOCKER_DRIVER: overlay2
30
-
DOCKER_VERSION: 20.10.16
31
-
32
-
.dagger:
33
-
extends: .docker
34
-
before_script:
35
-
- apk add docker-cli curl unzip
36
-
- deno install -A -r https://cli.fluentci.io -n fluentci
37
-
- curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
38
-
- mv bin/dagger /usr/local/bin
39
-
- dagger version
40
-
41
-
tests:
42
-
extends: .dagger
43
-
script:
44
-
- fluentci run rust_pipeline test build
45
-
46
-
```
47
-
48
-
Feel free to edit the template generator at `.fluentci/src/gitlab/config.ts` to your needs.
-34
.fluentci/example/.fluentci/src/gitlab/config.ts
-34
.fluentci/example/.fluentci/src/gitlab/config.ts
···
1
-
import { GitlabCI, Job } from "fluent_gitlab_ci";
2
-
3
-
export function generateYaml(): GitlabCI {
4
-
const docker = new Job()
5
-
.image("denoland/deno:alpine")
6
-
.services(["docker:${DOCKER_VERSION}-dind"])
7
-
.variables({
8
-
DOCKER_HOST: "tcp://docker:2376",
9
-
DOCKER_TLS_VERIFY: "1",
10
-
DOCKER_TLS_CERTDIR: "/certs",
11
-
DOCKER_CERT_PATH: "/certs/client",
12
-
DOCKER_DRIVER: "overlay2",
13
-
DOCKER_VERSION: "20.10.16",
14
-
});
15
-
16
-
const dagger = new Job().extends(".docker").beforeScript(
17
-
`
18
-
apk add docker-cli curl unzip
19
-
deno install -A -r https://cli.fluentci.io -n fluentci
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
`
24
-
);
25
-
26
-
const tests = new Job()
27
-
.extends(".dagger")
28
-
.script("fluentci run rust_pipeline test build");
29
-
30
-
return new GitlabCI()
31
-
.addJob(".docker", docker)
32
-
.addJob(".dagger", dagger)
33
-
.addJob("tests", tests);
34
-
}
-9
.fluentci/example/.fluentci/src/gitlab/config_test.ts
-9
.fluentci/example/.fluentci/src/gitlab/config_test.ts
···
1
-
import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts";
2
-
import { generateYaml } from "./config.ts";
3
-
4
-
Deno.test(function generateGitlabCITest() {
5
-
const gitlabci = generateYaml();
6
-
const actual = gitlabci.toString();
7
-
const expected = Deno.readTextFileSync("./fixtures/.gitlab-ci.yml");
8
-
assertEquals(actual, expected);
9
-
});
-3
.fluentci/example/.fluentci/src/gitlab/init.ts
-3
.fluentci/example/.fluentci/src/gitlab/init.ts
-24
.fluentci/example/.github/workflows/tests.yml
-24
.fluentci/example/.github/workflows/tests.yml
···
1
-
# Do not edit this file directly. It is generated by Fluent Github Actions
2
-
3
-
name: Test
4
-
on:
5
-
push:
6
-
branches:
7
-
- main
8
-
jobs:
9
-
test:
10
-
runs-on: ubuntu-latest
11
-
steps:
12
-
- uses: actions/checkout@v2
13
-
- uses: denoland/setup-deno@v1
14
-
with:
15
-
deno-version: v1.37
16
-
- name: Setup Fluent CI CLI
17
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
18
-
- name: Setup Dagger
19
-
run: |
20
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh
21
-
sudo mv bin/dagger /usr/local/bin
22
-
dagger version
23
-
- name: Run Tests and Build
24
-
run: dagger run fluentci rust_pipeline test build
-1
.fluentci/example/.gitignore
-1
.fluentci/example/.gitignore
···
1
-
target/
-7
.fluentci/example/Cargo.lock
-7
.fluentci/example/Cargo.lock
-8
.fluentci/example/Cargo.toml
-8
.fluentci/example/Cargo.toml
-5
.fluentci/example/dagger.json
-5
.fluentci/example/dagger.json
-14
.fluentci/example/src/lib.rs
-14
.fluentci/example/src/lib.rs
+1
-1
.fluentci/src/dagger/jobs.ts
+1
-1
.fluentci/src/dagger/jobs.ts
+1
-1
.github/FUNDING.yml
+1
-1
.github/FUNDING.yml
···
9
9
liberapay: # Replace with a single Liberapay username
10
10
issuehunt: # Replace with a single IssueHunt username
11
11
otechie: # Replace with a single Otechie username
12
-
custom: ["https://www.buymeacoffee.com/tsiry"] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
12
+
custom: [] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+30
.github/workflows/flakestry-publish.yml
+30
.github/workflows/flakestry-publish.yml
···
1
+
name: "Publish a flake to flakestry"
2
+
on:
3
+
push:
4
+
tags:
5
+
- "v?[0-9]+.[0-9]+.[0-9]+"
6
+
- "v?[0-9]+.[0-9]+"
7
+
workflow_dispatch:
8
+
inputs:
9
+
tag:
10
+
description: "The existing tag to publish"
11
+
type: "string"
12
+
required: true
13
+
jobs:
14
+
publish-flake:
15
+
runs-on: ubuntu-latest
16
+
permissions:
17
+
id-token: "write"
18
+
contents: "read"
19
+
steps:
20
+
- uses: actions/checkout@v3
21
+
- name: Setup Fluent CI
22
+
uses: fluentci-io/setup-fluentci@v4
23
+
- name: Publish flake
24
+
run: fluentci run flakestry_pipeline publish
25
+
env:
26
+
VERSION: ${{ inputs.tag || github.ref_name }}
27
+
GH_TOKEN: ${{ github.token }}
28
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ${{ env.ACTIONS_ID_TOKEN_REQUEST_TOKEN }}
29
+
ACTIONS_ID_TOKEN_REQUEST_URL: ${{ env.ACTIONS_ID_TOKEN_REQUEST_URL }}
30
+
REF: ${{ github.sha }}
+1
-9
.github/workflows/release-for-mac.yml
+1
-9
.github/workflows/release-for-mac.yml
···
16
16
extensions: tar.gz tar.gz.sha256
17
17
18
18
steps:
19
-
- uses: denoland/setup-deno@v1
20
-
with:
21
-
deno-version: v1.37
22
19
- name: Setup Fluent CI CLI
23
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
24
-
- name: Setup Dagger
25
-
run: |
26
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.8 sh
27
-
sudo mv bin/dagger /usr/local/bin
28
-
dagger version
20
+
uses: fluentci-io/setup-fluentci@v4
29
21
- name: Installing needed dependencies
30
22
run: brew install protobuf
31
23
- name: Installing Rust toolchain
+1
-10
.github/workflows/release.yml
+1
-10
.github/workflows/release.yml
···
13
13
extensions: tar.gz tar.gz.sha256
14
14
steps:
15
15
- uses: actions/checkout@v3
16
-
- uses: denoland/setup-deno@v1
17
-
with:
18
-
deno-version: v1.37
19
-
- name: Setup Fluent CI CLI
20
-
run: deno install -A -r https://cli.fluentci.io -n fluentci
21
-
- name: Setup Dagger
22
-
run: |
23
-
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.8 sh
24
-
sudo mv bin/dagger /usr/local/bin
25
-
dagger version
16
+
- uses: fluentci-io/setup-fluentci@v4
26
17
- name: Set env
27
18
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
28
19
- name: Build