Browse and listen to thousands of radio stations across the globe right from your terminal ๐ŸŒŽ ๐Ÿ“ป ๐ŸŽตโœจ
radio rust tokio web-radio command-line-tool tui

ci: setup fluent ci

+10535 -49
+25
.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/.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
··· 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
··· 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/.fluentci/.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/.fluentci/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml();
+4
.fluentci/.fluentci/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 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 }}
+2
.fluentci/.fluentci/.gitignore
··· 1 + coverage/ 2 + coverage.lcov
+3
.fluentci/.fluentci/.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+4
.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 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
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/.fluentci/example/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+4
.fluentci/.fluentci/example/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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/.fluentci/example/.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml();
+4
.fluentci/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 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
··· 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
··· 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
+3
.fluentci/.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }
+132
.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/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/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.
+54
.fluentci/README.md
··· 1 + # Rust Pipeline 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.37) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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 { build, test } from "https://pkg.fluentci.io/rust_pipeline@v0.6.1/mod.ts"; 51 + 52 + await test(); 53 + await build(); 54 + ```
+7
.fluentci/ci.ts
··· 1 + import { 2 + build, 3 + test, 4 + } from "https://pkg.fluentci.io/rust_pipeline@v0.6.1/mod.ts"; 5 + 6 + await test(); 7 + await build();
+5
.fluentci/dagger.json
··· 1 + { 2 + "root": "", 3 + "name": "rust", 4 + "sdkRuntime": "tsiry/dagger-sdk-deno" 5 + }
+31
.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 + }
+256
.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.8": "615a37f0edf04b25a6efefe7ea8c4cb0f801830b5dbe0a57164919e16a3ef6e6", 195 + "https://esm.sh/graphql-tag@2.12.6": "6e93f81d26bddf63270317b4fce53a03747ec5322a26e5b78fb0abd098a1f6ea", 196 + "https://esm.sh/nanoid@4.0.2": "51031602a4d76c7dd62da9439016cdfd6d1121101e489925e4423d88bf8fa0e1", 197 + "https://esm.sh/stringify-tree@1.1.1": "4d0252ece34f52f7f312a6d270ed2714e57e1610f7a7f71c2fdceceb948e87b2", 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/v133/@dagger.io/dagger@0.8.8/denonext/dagger.mjs": "c4bd80a72add877450ef029ab71091f862f02af8ebc7c4c7f5bb6aab1854095f", 207 + "https://esm.sh/v133/adm-zip@0.5.10/denonext/adm-zip.mjs": "9ccca01e6dea77f3c20386125c0eea2a811aa0f9b73243517b747264df8af046", 208 + "https://esm.sh/v133/chownr@2.0.0/denonext/chownr.mjs": "d7282b2612a9f13c62084c76fc72cdfb20503bccce959178b77b6def14d3ffd2", 209 + "https://esm.sh/v133/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6", 210 + "https://esm.sh/v133/cross-spawn@7.0.3/denonext/cross-spawn.mjs": "0a698bfa213c75e5d20176a3f2f65870d31cd26745451d5f56c58e08df138118", 211 + "https://esm.sh/v133/env-paths@3.0.0/denonext/env-paths.mjs": "77984a05eb16450087f25060a070ed500ec546719d471143e16d976ca73ca956", 212 + "https://esm.sh/v133/execa@8.0.1/denonext/execa.mjs": "775e244075c8f23a4caf786116722314a5f2839ee135dba7fde444fc67d5e643", 213 + "https://esm.sh/v133/fs-minipass@2.1.0/denonext/fs-minipass.mjs": "de8b7228c151f04326a852ce57655d36bf9171f8efcd212e34ac8bce3fbd84a0", 214 + "https://esm.sh/v133/get-stream@8.0.1/denonext/get-stream.mjs": "b8ab640bf2638c1ae704a217b79e0a56e7a1f97bb48bbe40d723d5ea87eb0ecb", 215 + "https://esm.sh/v133/graphql-request@6.1.0/denonext/graphql-request.mjs": "7206b27d14333f19f8d2aa3615a81f9e3035f4d33b7a9edff44f990e69fe1964", 216 + "https://esm.sh/v133/graphql-tag@2.12.6/denonext/graphql-tag.mjs": "af56d5f8b96e688f433ccca87d8a2bfcf171686e7f7a3b27cde61df816ad8472", 217 + "https://esm.sh/v133/graphql@16.8.1/denonext/graphql.mjs": "585b84022623b931e27a7a8134cd24ec50b33ea12fd18b43254527628a0fddac", 218 + "https://esm.sh/v133/human-signals@5.0.0/denonext/human-signals.mjs": "8d8663d92280b1ed15bb1b1a0a79601e17f6b165335e85f94c40e56129542077", 219 + "https://esm.sh/v133/is-stream@3.0.0/denonext/is-stream.mjs": "5c8b65f2fa051c4b18e88bbae11dac8bba9caf57752577d69bcea86d1f05c5b7", 220 + "https://esm.sh/v133/isexe@2.0.0/denonext/isexe.mjs": "4675d9d53a332f096efd344cb1418dbda8e6f2effc8a5c81edd43cdd56636be7", 221 + "https://esm.sh/v133/lodash.flatten@4.4.0/denonext/lodash.flatten.mjs": "8e86ab607deea15cc3c1acfb5eae278ecbc5b80f24167b4e8f4c56df3278cd55", 222 + "https://esm.sh/v133/merge-stream@2.0.0/denonext/merge-stream.mjs": "2c2af22401c294158d6bff659d157e3d2c028c218cc1bd2246534a45a4c03c61", 223 + "https://esm.sh/v133/mimic-fn@4.0.0/denonext/mimic-fn.mjs": "10bcf0f2f20cbbba0c289ef7bf4d2422639bbc1c36c247be876afd6fe2d67138", 224 + "https://esm.sh/v133/minipass@3.3.6/denonext/minipass.mjs": "195894c7a7f1fb71de48b4a41af182cd3ad0e357cadc0ad9d8b5340cda895cc0", 225 + "https://esm.sh/v133/minipass@5.0.0/denonext/minipass.mjs": "de0e049728f8c387b58c86439eb9d69a16b6a88756a6bc694e2fecbd7fd00401", 226 + "https://esm.sh/v133/minizlib@2.1.2/denonext/minizlib.mjs": "714b5458f010d3f70aebd738dd14f2099d3f33046bef05cef2db4714b828620a", 227 + "https://esm.sh/v133/mkdirp@1.0.4/denonext/mkdirp.mjs": "53abed4328bbe5c844cbc8363ee1b45b4db2bdcdaec770cd1d08e5917af18de3", 228 + "https://esm.sh/v133/nanoid@4.0.2/denonext/nanoid.mjs": "4f26e89bc0867e6a838069435b3d75af305017d87ce5b51c9d6edc680954b52f", 229 + "https://esm.sh/v133/node-color-log@10.0.2/denonext/node-color-log.mjs": "2504391bd0ce1dd4c2bf0ed0b839b8a3ad84c028d9dd17cc58dccd2e14dacfde", 230 + "https://esm.sh/v133/node_fetch.js": "b11355358cf61343a3c30bd5942df60a3586d13e2c979b515164bfe851662798", 231 + "https://esm.sh/v133/npm-run-path@5.1.0/denonext/npm-run-path.mjs": "0b4d70b3aa79c6f5d9b021d5eaceff7029ebc1b0784b00b572ce4869bcd24cb0", 232 + "https://esm.sh/v133/onetime@6.0.0/denonext/onetime.mjs": "88857d05735668f3e431f95626780c156c7698cfa6bc81175d48ddf4402dffe0", 233 + "https://esm.sh/v133/original-fs@1.2.0/denonext/original-fs.mjs": "2b1098818e54d2c6748ff5b0dd9ea5f6a61b4b6d0f63fb625f21773d11cfc667", 234 + "https://esm.sh/v133/path-key@3.1.1/denonext/path-key.mjs": "add83c631278b7df9b33ae84e41142db88bb291295bcc27eb4e77a1cbdfa71d0", 235 + "https://esm.sh/v133/path-key@4.0.0/denonext/path-key.mjs": "2c2e3922bd0e6e414fa2752ff800bdc6b9208035ce797fa22e49b859f8259417", 236 + "https://esm.sh/v133/shebang-command@2.0.0/denonext/shebang-command.mjs": "23d8e6099e8d3927b5ea0e396d3da92e082dfa32f27d36df9e892a8653b08437", 237 + "https://esm.sh/v133/shebang-regex@3.0.0/denonext/shebang-regex.mjs": "03983ba59dd2cba9402935e21b46d05f5249364cba9f5757aef23c6c2fea65b9", 238 + "https://esm.sh/v133/signal-exit@4.1.0/denonext/signal-exit.mjs": "c450b9024df3b59ded71e7b52aada1ac4b3856aad93e9d64bbc6ea3cdd181824", 239 + "https://esm.sh/v133/stringify-tree@1.1.1/denonext/stringify-tree.mjs": "7640f153ff571180467c1087934154aa2a96acba9e17d5782daeb6e1f6b45759", 240 + "https://esm.sh/v133/strip-final-newline@3.0.0/denonext/strip-final-newline.mjs": "03d9be4e8a249d63cbbddeb2fb675a1bbbcb335283e604d4ce56c88c90e6f102", 241 + "https://esm.sh/v133/tar@6.2.0/denonext/tar.mjs": "e13b28512d8a017442db9665e2c4bf7f134c1b74deb96ba5fd07e5ec6c905617", 242 + "https://esm.sh/v133/tslib@2.6.2/denonext/tslib.mjs": "29782bcd3139f77ec063dc5a9385c0fff4a8d0a23b6765c73d9edeb169a04bf1", 243 + "https://esm.sh/v133/which@2.0.2/denonext/which.mjs": "15c7fcc13cfe719c1854f470278518f158f85fa040aeb0f02ef40676c25f26c0", 244 + "https://esm.sh/v133/yallist@4.0.0/denonext/yallist.mjs": "61f180d807dda50bac17028eda05d5722a3fecef6e98a9064e2353ea6864fd82", 245 + "https://esm.sh/v133/yaml@2.3.1/denonext/yaml.mjs": "71f677b4bfc69271af9d98db5194e354f9a1863955e208e26d32a9ef78bd89f5", 246 + "https://esm.sh/yaml@v2.3.1": "1eebb55f799726dfa0698314b3ba178bc478cba64b31c8309284899c96f8ff8f", 247 + "https://nix.fluentci.io/v0.5.2/deps.ts": "6ccc8510c72998a52c24bc02c848b669413b5ef1d15dccd7e03a25dd0e408564", 248 + "https://nix.fluentci.io/v0.5.2/src/dagger/steps.ts": "b766f4fa9624a032e7af884a5ca47bc666a529c4a472d38b74b55ca0d63cf81d", 249 + "https://sdk.fluentci.io/v0.2.0/deps.ts": "20dd191afaf88662b82c2a42164afe6d06f2e79942f40ce07aa0972719fc858f", 250 + "https://sdk.fluentci.io/v0.2.0/mod.ts": "261ba81a4728f5def4e327a5cd80664ea8449515a2f4eea5f3f416acae39a1fa", 251 + "https://sdk.fluentci.io/v0.2.0/src/client.ts": "d350d4f59763e32a9b35f3f06f0b1058e5c8e5a3824e6d096cdaf3fc4332dcf6", 252 + "https://sdk.fluentci.io/v0.2.0/src/connect.ts": "4aff111c403cf78672384a10214a9885e08319dde579ec458f98a7bb04874101", 253 + "https://sdk.fluentci.io/v0.2.0/src/context.ts": "2939ff58d0a79d7377d5553e725c9a2110a0013035a5a57abe9a9a5da975c4ce", 254 + "https://sdk.fluentci.io/v0.2.0/src/utils.ts": "5dcd6d83553930502069d067ff42bc44698e22c23426fdb78630c4b39769d308" 255 + } 256 + }
+35
.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/v0.2.0/mod.ts"; 3 + export default Client; 4 + 5 + export { 6 + connect, 7 + uploadContext, 8 + CacheSharingMode, 9 + Container, 10 + } from "https://sdk.fluentci.io/v0.2.0/mod.ts"; 11 + export { brightGreen } from "https://deno.land/std@0.191.0/fmt/colors.ts"; 12 + export { withDevbox } from "https://nix.fluentci.io/v0.5.2/src/dagger/steps.ts"; 13 + export { stringifyTree } from "https://esm.sh/stringify-tree@1.1.1"; 14 + import gql from "https://esm.sh/graphql-tag@2.12.6"; 15 + export { gql }; 16 + 17 + export { 18 + arg, 19 + queryType, 20 + stringArg, 21 + intArg, 22 + nonNull, 23 + makeSchema, 24 + } from "npm:nexus"; 25 + export { 26 + dirname, 27 + join, 28 + resolve, 29 + } from "https://deno.land/std@0.203.0/path/mod.ts"; 30 + 31 + export * as FluentGitlabCI from "https://deno.land/x/fluent_gitlab_ci@v0.4.2/mod.ts"; 32 + export * as FluentGithubActions from "https://deno.land/x/fluent_github_actions@v0.2.1/mod.ts"; 33 + export * as FluentCircleCI from "https://deno.land/x/fluent_circleci@v0.2.5/mod.ts"; 34 + export * as FluentAzurePipelines from "https://deno.land/x/fluent_azure_pipelines@v0.2.0/mod.ts"; 35 + export * as FluentAWSCodePipeline from "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/mod.ts";
+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
··· 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
··· 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
··· 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
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/example/.fluentci/.fluentci/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml();
+4
.fluentci/example/.fluentci/.fluentci/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 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 }}
+2
.fluentci/example/.fluentci/.fluentci/.gitignore
··· 1 + coverage/ 2 + coverage.lcov
+3
.fluentci/example/.fluentci/.fluentci/.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 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
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Deno Pipeline 2 + 3 + [![deno module](https://shield.deno.dev/x/deno_pipeline)](https://deno.land/x/deno_pipeline) 4 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 5 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/deno-pipeline)](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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+4
.fluentci/example/.fluentci/.fluentci/example/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + import * as GitLab from "./src/gitlab/index.ts"; 2 + import * as Dagger from "./src/dagger/index.ts"; 3 + 4 + export { Dagger, GitLab };
+4
.fluentci/example/.fluentci/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + pipeline(".", Deno.args);
+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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml();
+4
.fluentci/example/.fluentci/.fluentci/src/gitlab/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { fmt, lint, test } from "./jobs.ts"; 3 + 4 + export { fmt, lint, pipeline, test };
+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
··· 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
··· 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
··· 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
··· 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
··· 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
+3
.fluentci/example/.fluentci/.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }
+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
··· 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
··· 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
··· 1 + # Rust Pipeline 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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
··· 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
··· 1 + { 2 + "root": "", 3 + "name": "rust", 4 + "sdkRuntime": "tsiry/dagger-sdk-deno" 5 + }
+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
··· 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
··· 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
··· 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 + target/
+7
.fluentci/example/.fluentci/example/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 3 4 + 5 + [[package]] 6 + name = "example" 7 + version = "0.1.0"
+8
.fluentci/example/.fluentci/example/Cargo.toml
··· 1 + [package] 2 + name = "example" 3 + version = "0.1.0" 4 + edition = "2021" 5 + 6 + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 + 8 + [dependencies]
+5
.fluentci/example/.fluentci/example/build.gql
··· 1 + { 2 + rust { 3 + build(src: ".") 4 + } 5 + }
+14
.fluentci/example/.fluentci/example/src/lib.rs
··· 1 + pub fn add(left: usize, right: usize) -> usize { 2 + left + right 3 + } 4 + 5 + #[cfg(test)] 6 + mod tests { 7 + use super::*; 8 + 9 + #[test] 10 + fn it_works() { 11 + let result = add(2, 2); 12 + assert_eq!(result, 4); 13 + } 14 + }
+5
.fluentci/example/.fluentci/example/test.gql
··· 1 + { 2 + rust { 3 + test(src: ".") 4 + } 5 + }
+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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + export * from "./src/dagger/index.ts"; 2 + export * as queries from "./src/dagger/queries.ts"; 3 + export { schema } from "./src/dagger/schema.ts";
+8
.fluentci/example/.fluentci/schema.graphql
··· 1 + ### This file was generated by Nexus Schema 2 + ### Do not make changes to this file directly 3 + 4 + 5 + type Query { 6 + build(src: String!): String 7 + test(src: String!): String 8 + }
+39
.fluentci/example/.fluentci/src/aws/README.md
··· 1 + # AWS CodePipeline 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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
··· 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
··· 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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save("buildspec.yml");
+42
.fluentci/example/.fluentci/src/azure/README.md
··· 1 + # Azure Pipelines 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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
··· 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
··· 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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save("azure-pipeline.yml");
+47
.fluentci/example/.fluentci/src/circleci/README.md
··· 1 + # Circle CI 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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
··· 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
··· 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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save(".circleci/config.yml");
+4
.fluentci/example/.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { build, test } from "./jobs.ts"; 3 + 4 + export { pipeline, build, test };
+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
··· 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
··· 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
··· 1 + import { gql } from "../../deps.ts"; 2 + 3 + export const test = gql` 4 + query test($src: String!) { 5 + test(src: $src) 6 + } 7 + `; 8 + 9 + export const build = gql` 10 + query build($src: String!) { 11 + build(src: $src) 12 + } 13 + `;
+3
.fluentci/example/.fluentci/src/dagger/runner.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + await pipeline(".", Deno.args);
+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
··· 1 + # Github Actions 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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
··· 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
··· 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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save(".github/workflows/tests.yml");
+48
.fluentci/example/.fluentci/src/gitlab/README.md
··· 1 + # Gitlab CI 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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
··· 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
··· 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
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().write();
+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 + target/
+7
.fluentci/example/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 3 4 + 5 + [[package]] 6 + name = "example" 7 + version = "0.1.0"
+8
.fluentci/example/Cargo.toml
··· 1 + [package] 2 + name = "example" 3 + version = "0.1.0" 4 + edition = "2021" 5 + 6 + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 + 8 + [dependencies]
+5
.fluentci/example/build.gql
··· 1 + { 2 + rust { 3 + build(src: ".") 4 + } 5 + }
+5
.fluentci/example/dagger.json
··· 1 + { 2 + "root": "", 3 + "name": "rust", 4 + "sdkRuntime": "tsiry/dagger-sdk-deno" 5 + }
+14
.fluentci/example/src/lib.rs
··· 1 + pub fn add(left: usize, right: usize) -> usize { 2 + left + right 3 + } 4 + 5 + #[cfg(test)] 6 + mod tests { 7 + use super::*; 8 + 9 + #[test] 10 + fn it_works() { 11 + let result = add(2, 2); 12 + assert_eq!(result, 4); 13 + } 14 + }
+5
.fluentci/example/test.gql
··· 1 + { 2 + rust { 3 + test(src: ".") 4 + } 5 + }
+28
.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/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/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/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/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/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/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/mod.ts
··· 1 + export * from "./src/dagger/index.ts"; 2 + export * as queries from "./src/dagger/queries.ts"; 3 + export { schema } from "./src/dagger/schema.ts";
+8
.fluentci/schema.graphql
··· 1 + ### This file was generated by Nexus Schema 2 + ### Do not make changes to this file directly 3 + 4 + 5 + type Query { 6 + build(src: String!): String 7 + test(src: String!): String 8 + }
+39
.fluentci/src/aws/README.md
··· 1 + # AWS CodePipeline 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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/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/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/src/aws/init.ts
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save("buildspec.yml");
+42
.fluentci/src/azure/README.md
··· 1 + # Azure Pipelines 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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/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/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/src/azure/init.ts
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save("azure-pipeline.yml");
+47
.fluentci/src/circleci/README.md
··· 1 + # Circle CI 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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/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/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/src/circleci/init.ts
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save(".circleci/config.yml");
+4
.fluentci/src/dagger/index.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + import { build, test } from "./jobs.ts"; 3 + 4 + export { pipeline, build, test };
+90
.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 = ".") => { 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:1.73-bullseye") 37 + .withExec(["apt-get", "update"]) 38 + .withExec([ 39 + "apt-get", 40 + "install", 41 + "-y", 42 + "build-essential", 43 + "libasound2-dev", 44 + "protobuf-compiler", 45 + ]) 46 + .withDirectory("/app", context, { exclude }) 47 + .withWorkdir("/app") 48 + .withMountedCache("/app/target", client.cacheVolume("target")) 49 + .withMountedCache("/root/cargo/registry", client.cacheVolume("registry")) 50 + .withMountedCache("/assets", client.cacheVolume("gh-release-assets")) 51 + .withEnvVariable("TAG", Deno.env.get("TAG") || "latest") 52 + .withEnvVariable( 53 + "TARGET", 54 + Deno.env.get("TARGET") || "x86_64-unknown-linux-gnu" 55 + ) 56 + .withExec(["sh", "-c", "cargo build --release --target $TARGET"]) 57 + .withExec([ 58 + "sh", 59 + "-c", 60 + "tar czvf /assets/tunein_${TAG}_${TARGET}.tar.gz target/$TARGET/release/tunein", 61 + ]) 62 + .withExec([ 63 + "sh", 64 + "-c", 65 + "shasum -a 256 /assets/tunein_${TAG}_${TARGET}.tar.gz > /assets/tunein_${TAG}_${TARGET}.tar.gz.sha256", 66 + ]); 67 + 68 + await ctr.stdout(); 69 + }); 70 + return "Done"; 71 + }; 72 + 73 + export type JobExec = (src?: string) => 74 + | Promise<string> 75 + | (( 76 + src?: string, 77 + options?: { 78 + ignore: string[]; 79 + } 80 + ) => Promise<string>); 81 + 82 + export const runnableJobs: Record<Job, JobExec> = { 83 + [Job.test]: test, 84 + [Job.build]: build, 85 + }; 86 + 87 + export const jobDescriptions: Record<Job, string> = { 88 + [Job.test]: "Run tests", 89 + [Job.build]: "Build the project", 90 + };
+20
.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/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/src/dagger/queries.ts
··· 1 + import { gql } from "../../deps.ts"; 2 + 3 + export const test = gql` 4 + query test($src: String!) { 5 + test(src: $src) 6 + } 7 + `; 8 + 9 + export const build = gql` 10 + query build($src: String!) { 11 + build(src: $src) 12 + } 13 + `;
+3
.fluentci/src/dagger/runner.ts
··· 1 + import pipeline from "./pipeline.ts"; 2 + 3 + await pipeline(".", Deno.args);
+36
.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/src/github/README.md
··· 1 + # Github Actions 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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/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/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/src/github/init.ts
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().save(".github/workflows/tests.yml");
+48
.fluentci/src/gitlab/README.md
··· 1 + # Gitlab CI 2 + 3 + [![fluentci pipeline](https://img.shields.io/badge/dynamic/json?label=pkg.fluentci.io&labelColor=%23000&color=%23460cf1&url=https%3A%2F%2Fapi.fluentci.io%2Fv1%2Fpipeline%2Frust_pipeline&query=%24.version)](https://pkg.fluentci.io/rust_pipeline) 4 + [![deno module](https://shield.deno.dev/x/rust_pipeline)](https://deno.land/x/rust_pipeline) 5 + ![deno compatibility](https://shield.deno.dev/deno/^1.34) 6 + [![](https://img.shields.io/codecov/c/gh/fluent-ci-templates/rust-pipeline)](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/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/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/src/gitlab/init.ts
··· 1 + import { generateYaml } from "./config.ts"; 2 + 3 + generateYaml().write();
+17 -9
.github/workflows/release-for-mac.yml
··· 11 11 matrix: 12 12 include: 13 13 - target: x86_64-apple-darwin 14 - archive: tar.gz tar.xz 14 + extensions: tar.gz tar.gz.sha256 15 15 - target: aarch64-apple-darwin 16 - archive: tar.gz tar.xz 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 + - 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 19 29 - name: Installing needed dependencies 20 30 run: brew install protobuf 21 31 - name: Installing Rust toolchain ··· 43 53 cd target/${{ matrix.target }}/release 44 54 tar czvf tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz tunein 45 55 shasum -a 256 tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz > tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz.sha256 46 - - name: Releasing assets 47 - uses: softprops/action-gh-release@v1 48 - with: 49 - files: | 50 - target/${{ matrix.target }}/release/tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz 51 - target/${{ matrix.target }}/release/tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.tar.gz.sha256 56 + - name: Upload release assets 57 + run: fluentci run github_pipeline release_upload 52 58 env: 53 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 59 + TAG: ${{ env.RELEASE_VERSION }} 60 + FILE: target/${{ matrix.target }}/release/tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.${{ matrix.extensions }} 61 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+24 -40
.github/workflows/release.yml
··· 1 + name: release 1 2 on: 2 3 release: 3 4 types: [created] 4 5 5 6 jobs: 6 - release: 7 - name: release ${{ matrix.target }} 8 - runs-on: ubuntu-20.04 7 + build: 8 + runs-on: ubuntu-latest 9 9 strategy: 10 - fail-fast: false 11 10 matrix: 12 11 include: 13 - - target: x86_64-pc-windows-gnu 14 - archive: zip 15 12 - target: x86_64-unknown-linux-gnu 16 - archive: tar.gz tar.xz 13 + extensions: tar.gz tar.gz.sha256 17 14 steps: 18 - - uses: actions/checkout@master 19 - - uses: actions/cache@v3 20 - with: 21 - path: | 22 - ~/.cargo/bin/ 23 - ~/.cargo/registry/index/ 24 - ~/.cargo/registry/cache/ 25 - ~/.cargo/git/db/ 26 - target/ 27 - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} 28 - - name: Installing needed dependencies 29 - run: sudo apt-get install -y libasound2-dev protobuf-compiler 30 - - name: Running cargo build 31 - if: matrix.target == 'x86_64-unknown-linux-gnu' 32 - uses: actions-rs/cargo@v1 15 + - uses: actions/checkout@v3 16 + - uses: denoland/setup-deno@v1 33 17 with: 34 - command: build 35 - toolchain: stable 36 - args: --locked --release --target x86_64-unknown-linux-gnu 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 37 26 - name: Set env 38 27 run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV 39 - - name: Packaging final binary 40 - if: matrix.target == 'x86_64-unknown-linux-gnu' 41 - shell: bash 42 - run: | 43 - cd target/x86_64-unknown-linux-gnu/release 44 - tar czvf tunein_${{ env.RELEASE_VERSION }}_x86_64-unknown-linux-gnu.tar.gz tunein 45 - shasum -a 256 tunein_${{ env.RELEASE_VERSION }}_x86_64-unknown-linux-gnu.tar.gz > tunein_${{ env.RELEASE_VERSION }}_x86_64-unknown-linux-gnu.tar.gz.sha256 46 - - name: Releasing assets 47 - if: matrix.target == 'x86_64-unknown-linux-gnu' 48 - uses: softprops/action-gh-release@v1 49 - with: 50 - files: | 51 - target/x86_64-unknown-linux-gnu/release/tunein_${{ env.RELEASE_VERSION }}_x86_64-unknown-linux-gnu.tar.gz 52 - target/x86_64-unknown-linux-gnu/release/tunein_${{ env.RELEASE_VERSION }}_x86_64-unknown-linux-gnu.tar.gz.sha256 28 + - name: Build 29 + run: fluentci run . build 53 30 env: 54 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 31 + TAG: ${{ env.RELEASE_VERSION }} 32 + TARGET: ${{ matrix.target }} 33 + - name: Upload release assets 34 + run: fluentci run github_pipeline release_upload 35 + env: 36 + TAG: ${{ env.RELEASE_VERSION }} 37 + FILE: /assets/tunein_${{ env.RELEASE_VERSION }}_${{ matrix.target }}.${{ matrix.extensions }} 38 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+3
.vscode/settings.json
··· 1 + { 2 + "deno.enable": true 3 + }