From 77a8d86f738514cbf6cfb9027d1c3f7771236844 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:16:50 +0000 Subject: [PATCH] deploy: 8a02a38ee0e43885a439ba8088c9f91fe9c37f8b --- 404.html | 2 +- assets/js/6126a50b.375ea7a1.js | 1 + assets/js/6126a50b.5ffadabb.js | 1 - assets/js/7a6484a3.01fb8033.js | 1 + assets/js/7a6484a3.30099f64.js | 1 - assets/js/a41a336d.4733d961.js | 1 - assets/js/a41a336d.7d38d22c.js | 1 + assets/js/dad825aa.3495c210.js | 1 - assets/js/dad825aa.b5d80911.js | 1 + assets/js/{eadb6e1d.5c449659.js => eadb6e1d.6b9ed2a7.js} | 2 +- .../{runtime~main.f7a8b770.js => runtime~main.e6151a95.js} | 2 +- docs/category/workflows.html | 2 +- docs/overview.html | 2 +- docs/workflows/dart_package.html | 4 ++-- docs/workflows/dart_pub_publish.html | 4 ++-- docs/workflows/flutter_package.html | 6 +++--- docs/workflows/flutter_pub_publish.html | 6 +++--- docs/workflows/license_check.html | 4 ++-- docs/workflows/mason_publish.html | 2 +- docs/workflows/pana.html | 2 +- docs/workflows/semantic_pull_request.html | 2 +- docs/workflows/spell_check.html | 2 +- index.html | 2 +- 23 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 assets/js/6126a50b.375ea7a1.js delete mode 100644 assets/js/6126a50b.5ffadabb.js create mode 100644 assets/js/7a6484a3.01fb8033.js delete mode 100644 assets/js/7a6484a3.30099f64.js delete mode 100644 assets/js/a41a336d.4733d961.js create mode 100644 assets/js/a41a336d.7d38d22c.js delete mode 100644 assets/js/dad825aa.3495c210.js create mode 100644 assets/js/dad825aa.b5d80911.js rename assets/js/{eadb6e1d.5c449659.js => eadb6e1d.6b9ed2a7.js} (52%) rename assets/js/{runtime~main.f7a8b770.js => runtime~main.e6151a95.js} (92%) diff --git a/404.html b/404.html index 7bf0531..e5ffd58 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@
concurrency
",id:"concurrency",level:3},{value:"coverage_excludes
",id:"coverage_excludes",level:3},{value:"dart_sdk
",id:"dart_sdk",level:3},{value:"format_line_length
",id:"format_line_length",level:3},{value:"min_coverage
",id:"min_coverage",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"analyze_directories
",id:"analyze_directories",level:3},{value:"format_directories
",id:"format_directories",level:3},{value:"check_ignore
",id:"check_ignore",level:3},{value:"report_on
",id:"report_on",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"setup
",id:"setup",level:3},{value:"platform
",id:"platform",level:3},{value:"run_skipped
",id:"run_skipped",level:3},{value:"no_example
",id:"no_example",level:3},{value:"Secrets",id:"secrets",level:2},{value:"ssh_key
",id:"ssh_key",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"dart-package",children:"Dart Package"})}),"\n",(0,r.jsx)(n.p,{children:"This workflow runs helpful checks on a Dart package according to the steps below. As with any workflow, it can be customized."}),"\n",(0,r.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsx)(n.p,{children:"The Dart package workflow consists of the following steps:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Install dependencies"}),"\n",(0,r.jsx)(n.li,{children:"Format"}),"\n",(0,r.jsx)(n.li,{children:"Analyze"}),"\n",(0,r.jsx)(n.li,{children:"Run tests"}),"\n",(0,r.jsx)(n.li,{children:"Check code coverage"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,r.jsx)(n.h3,{id:"concurrency",children:(0,r.jsx)(n.code,{children:"concurrency"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The number of concurrent test suites run."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"4"})]}),"\n",(0,r.jsx)(n.h3,{id:"coverage_excludes",children:(0,r.jsx)(n.code,{children:"coverage_excludes"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," List of paths to exclude from the coverage report, separated by an empty space. Supports ",(0,r.jsx)(n.code,{children:"globs"})," to describe file patterns."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"dart_sdk",children:(0,r.jsx)(n.code,{children:"dart_sdk"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Which Dart SDK version to use. It can be a version (e.g. ",(0,r.jsx)(n.code,{children:"3.5.0"}),") or a channel (e.g. ",(0,r.jsx)(n.code,{children:"stable"}),"):"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_line_length",children:(0,r.jsx)(n.code,{children:"format_line_length"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The preferred line length preferred for running the ",(0,r.jsx)(n.code,{children:"dart format"})," command. Be aware that this does not change the behavior of the analysis step and longer lines could still make the workflow fail if the rule ",(0,r.jsx)(n.code,{children:"lines_longer_than_80_chars"})," is used."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"80"'})]}),"\n",(0,r.jsx)(n.h3,{id:"min_coverage",children:(0,r.jsx)(n.code,{children:"min_coverage"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The minimum coverage percentage allowed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," 100"]}),"\n",(0,r.jsx)(n.h3,{id:"working_directory",children:(0,r.jsx)(n.code,{children:"working_directory"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The path to the root of the Dart package."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"analyze_directories",children:(0,r.jsx)(n.code,{children:"analyze_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be analyzed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib test"'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_directories",children:(0,r.jsx)(n.code,{children:"format_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be formatted."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"check_ignore",children:(0,r.jsx)(n.code,{children:"check_ignore"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Allows ignoring lines from ",(0,r.jsx)(n.a,{href:"https://pub.dev/packages/coverage",children:"coverage"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h3,{id:"report_on",children:(0,r.jsx)(n.code,{children:"report_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A comma-separated list of folders that should be checked in code coverage."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib"'})]}),"\n",(0,r.jsx)(n.h3,{id:"runs_on",children:(0,r.jsx)(n.code,{children:"runs_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The operating system on which to run the workflow."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,r.jsx)(n.h3,{id:"setup",children:(0,r.jsx)(n.code,{children:"setup"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A command that should be executed immediately after dependencies are installed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"platform",children:(0,r.jsx)(n.code,{children:"platform"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A comma-separated list of platforms on which to run the tests.\n",(0,r.jsx)(n.code,{children:"[vm (default), chrome, firefox, safari, node]"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"vm"'})]}),"\n",(0,r.jsx)(n.h3,{id:"run_skipped",children:(0,r.jsx)(n.code,{children:"run_skipped"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Run skipped tests instead of skipping them."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h3,{id:"no_example",children:(0,r.jsx)(n.code,{children:"no_example"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," To avoid getting packages in ",(0,r.jsx)(n.code,{children:"example/"})," when running ",(0,r.jsx)(n.code,{children:"dart pub get"})," (if it exists)."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,r.jsx)(n.h3,{id:"ssh_key",children:(0,r.jsx)(n.code,{children:"ssh_key"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," An SSH key used to access private repositories when installing dependencies."]}),"\n",(0,r.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"name: My Dart Workflow\n\non: pull_request\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1\n with:\n coverage_excludes: '*.g.dart'\n dart_sdk: 'stable'\n platform: 'chrome,vm'\n working_directory: 'examples/my_dart_package'\n secrets:\n ssh_key: ${{secrets.EXAMPLE_KEY}}\n"})})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>c});var r=s(6540);const o={},l=r.createContext(o);function d(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/6126a50b.5ffadabb.js b/assets/js/6126a50b.5ffadabb.js
deleted file mode 100644
index cab016b..0000000
--- a/assets/js/6126a50b.5ffadabb.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[836],{1808:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>t});var r=s(4848),o=s(8453);const l={sidebar_position:1},d="Dart Package",c={id:"workflows/dart_package",title:"Dart Package",description:"This workflow runs helpful checks on a Dart package according to the steps below. As with any workflow, it can be customized.",source:"@site/docs/workflows/dart_package.md",sourceDirName:"workflows",slug:"/workflows/dart_package",permalink:"/docs/workflows/dart_package",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/dart_package.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Workflows",permalink:"/docs/category/workflows"},next:{title:"Dart Pub Publish",permalink:"/docs/workflows/dart_pub_publish"}},i={},t=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"concurrency
",id:"concurrency",level:3},{value:"coverage_excludes
",id:"coverage_excludes",level:3},{value:"dart_sdk
",id:"dart_sdk",level:3},{value:"format_line_length
",id:"format_line_length",level:3},{value:"min_coverage
",id:"min_coverage",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"analyze_directories
",id:"analyze_directories",level:3},{value:"format_directories
",id:"format_directories",level:3},{value:"check_ignore
",id:"check_ignore",level:3},{value:"report_on
",id:"report_on",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"setup
",id:"setup",level:3},{value:"platform
",id:"platform",level:3},{value:"run_skipped
",id:"run_skipped",level:3},{value:"no_example
",id:"no_example",level:3},{value:"Secrets",id:"secrets",level:2},{value:"ssh_key
",id:"ssh_key",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"dart-package",children:"Dart Package"})}),"\n",(0,r.jsx)(n.p,{children:"This workflow runs helpful checks on a Dart package according to the steps below. As with any workflow, it can be customized."}),"\n",(0,r.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsx)(n.p,{children:"The Dart package workflow consists of the following steps:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Install dependencies"}),"\n",(0,r.jsx)(n.li,{children:"Format"}),"\n",(0,r.jsx)(n.li,{children:"Analyze"}),"\n",(0,r.jsx)(n.li,{children:"Run tests"}),"\n",(0,r.jsx)(n.li,{children:"Check code coverage"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,r.jsx)(n.h3,{id:"concurrency",children:(0,r.jsx)(n.code,{children:"concurrency"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The number of concurrent test suites run."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"4"})]}),"\n",(0,r.jsx)(n.h3,{id:"coverage_excludes",children:(0,r.jsx)(n.code,{children:"coverage_excludes"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," List of paths to exclude from the coverage report, separated by an empty space. Supports ",(0,r.jsx)(n.code,{children:"globs"})," to describe file patterns."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"dart_sdk",children:(0,r.jsx)(n.code,{children:"dart_sdk"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Which Dart SDK version to use. It can be a version (e.g. ",(0,r.jsx)(n.code,{children:"2.12.0"}),") or a channel (e.g. ",(0,r.jsx)(n.code,{children:"stable"}),"):"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_line_length",children:(0,r.jsx)(n.code,{children:"format_line_length"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The preferred line length preferred for running the ",(0,r.jsx)(n.code,{children:"dart format"})," command. Be aware that this does not change the behavior of the analysis step and longer lines could still make the workflow fail if the rule ",(0,r.jsx)(n.code,{children:"lines_longer_than_80_chars"})," is used."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"80"'})]}),"\n",(0,r.jsx)(n.h3,{id:"min_coverage",children:(0,r.jsx)(n.code,{children:"min_coverage"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The minimum coverage percentage allowed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," 100"]}),"\n",(0,r.jsx)(n.h3,{id:"working_directory",children:(0,r.jsx)(n.code,{children:"working_directory"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The path to the root of the Dart package."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"analyze_directories",children:(0,r.jsx)(n.code,{children:"analyze_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be analyzed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib test"'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_directories",children:(0,r.jsx)(n.code,{children:"format_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be formatted."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"check_ignore",children:(0,r.jsx)(n.code,{children:"check_ignore"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Allows ignoring lines from ",(0,r.jsx)(n.a,{href:"https://pub.dev/packages/coverage",children:"coverage"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h3,{id:"report_on",children:(0,r.jsx)(n.code,{children:"report_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A comma-separated list of folders that should be checked in code coverage."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib"'})]}),"\n",(0,r.jsx)(n.h3,{id:"runs_on",children:(0,r.jsx)(n.code,{children:"runs_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The operating system on which to run the workflow."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,r.jsx)(n.h3,{id:"setup",children:(0,r.jsx)(n.code,{children:"setup"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A command that should be executed immediately after dependencies are installed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"platform",children:(0,r.jsx)(n.code,{children:"platform"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A comma-separated list of platforms on which to run the tests.\n",(0,r.jsx)(n.code,{children:"[vm (default), chrome, firefox, safari, node]"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"vm"'})]}),"\n",(0,r.jsx)(n.h3,{id:"run_skipped",children:(0,r.jsx)(n.code,{children:"run_skipped"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Run skipped tests instead of skipping them."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h3,{id:"no_example",children:(0,r.jsx)(n.code,{children:"no_example"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," To avoid getting packages in ",(0,r.jsx)(n.code,{children:"example/"})," when running ",(0,r.jsx)(n.code,{children:"dart pub get"})," (if it exists)."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,r.jsx)(n.h3,{id:"ssh_key",children:(0,r.jsx)(n.code,{children:"ssh_key"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," An SSH key used to access private repositories when installing dependencies."]}),"\n",(0,r.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"name: My Dart Workflow\n\non: pull_request\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1\n with:\n coverage_excludes: '*.g.dart'\n dart_sdk: 'stable'\n platform: 'chrome,vm'\n working_directory: 'examples/my_dart_package'\n secrets:\n ssh_key: ${{secrets.EXAMPLE_KEY}}\n"})})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>c});var r=s(6540);const o={},l=r.createContext(o);function d(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/7a6484a3.01fb8033.js b/assets/js/7a6484a3.01fb8033.js
new file mode 100644
index 0000000..5303dd9
--- /dev/null
+++ b/assets/js/7a6484a3.01fb8033.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[125],{342:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var r=s(4848),t=s(8453);const l={sidebar_position:4},i="Flutter Pub Publish",o={id:"workflows/flutter_pub_publish",title:"Flutter Pub Publish",description:"We use this workflow to publish a Flutter package to pub.dev.",source:"@site/docs/workflows/flutter_pub_publish.md",sourceDirName:"workflows",slug:"/workflows/flutter_pub_publish",permalink:"/docs/workflows/flutter_pub_publish",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/flutter_pub_publish.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Flutter Package",permalink:"/docs/workflows/flutter_package"},next:{title:"License Check",permalink:"/docs/workflows/license_check"}},d={},c=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"flutter_channel
",id:"flutter_channel",level:3},{value:"flutter_version
",id:"flutter_version",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"Secrets",id:"secrets",level:2},{value:"pub_credentials
",id:"pub_credentials",level:3},{value:"Example Usage",id:"example-usage",level:2}];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"flutter-pub-publish",children:"Flutter Pub Publish"})}),"\n",(0,r.jsxs)(n.p,{children:["We use this workflow to publish a Flutter package to ",(0,r.jsx)(n.a,{href:"https://pub.dev",children:"pub.dev"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsx)(n.p,{children:"The Flutter Pub Publish workflow consists of the following steps:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Install dependencies"}),"\n",(0,r.jsx)(n.li,{children:"Setup pub credentials"}),"\n",(0,r.jsx)(n.li,{children:"Dry run"}),"\n",(0,r.jsx)(n.li,{children:"Publish"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,r.jsx)(n.h3,{id:"flutter_channel",children:(0,r.jsx)(n.code,{children:"flutter_channel"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter release channel to use (e.g. ",(0,r.jsx)(n.code,{children:"stable"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,r.jsx)(n.h3,{id:"flutter_version",children:(0,r.jsx)(n.code,{children:"flutter_version"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter SDK version to use (e.g. ",(0,r.jsx)(n.code,{children:"3.24.0"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"working_directory",children:(0,r.jsx)(n.code,{children:"working_directory"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The path to the root of the Flutter package."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"runs_on",children:(0,r.jsx)(n.code,{children:"runs_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," An optional operating system on which to run the workflow."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,r.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,r.jsx)(n.h3,{id:"pub_credentials",children:(0,r.jsx)(n.code,{children:"pub_credentials"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Required"})," The pub credentials needed for publishing. This can be retrieved by reading out your ",(0,r.jsx)(n.code,{children:"pub-credentials.json"})," on your system after you ran a ",(0,r.jsx)(n.code,{children:"flutter pub login"}),". The location of the file is different per operating system:"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"OS"}),(0,r.jsx)(n.th,{children:"Path"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Linux"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"$XDG_CONFIG_HOME/dart/pub-credentials.json"})," or ",(0,r.jsx)(n.code,{children:"$HOME/.config/dart/pub-credentials.json"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"macOS"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"~/Library/Application\\ Support/dart/pub-credentials.json"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Windows"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"%APPDATA%/dart/pub-credentials.json"})})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,r.jsxs)(n.p,{children:["We recommend using ",(0,r.jsx)(n.a,{href:"https://docs.github.com/en/actions/security-guides/encrypted-secrets",children:"GitHub Secrets"})," for safely storing and reading the credentials."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"name: My Flutter Pub Publish Workflow\n\non:\n push:\n tags:\n - 'my_flutter_package-v*.*.*'\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_pub_publish.yml@v1\n with:\n flutter_channel: 'stable'\n flutter_version: '3.24.0'\n working_directory: 'packages/my_flutter_package'\n secrets:\n pub_credentials: secrets.PUB_CREDENTIALS\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>o});var r=s(6540);const t={},l=r.createContext(t);function i(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/7a6484a3.30099f64.js b/assets/js/7a6484a3.30099f64.js
deleted file mode 100644
index 2b75b61..0000000
--- a/assets/js/7a6484a3.30099f64.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[125],{342:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var r=s(4848),t=s(8453);const l={sidebar_position:4},i="Flutter Pub Publish",o={id:"workflows/flutter_pub_publish",title:"Flutter Pub Publish",description:"We use this workflow to publish a Flutter package to pub.dev.",source:"@site/docs/workflows/flutter_pub_publish.md",sourceDirName:"workflows",slug:"/workflows/flutter_pub_publish",permalink:"/docs/workflows/flutter_pub_publish",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/flutter_pub_publish.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Flutter Package",permalink:"/docs/workflows/flutter_package"},next:{title:"License Check",permalink:"/docs/workflows/license_check"}},d={},c=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"flutter_channel
",id:"flutter_channel",level:3},{value:"flutter_version
",id:"flutter_version",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"Secrets",id:"secrets",level:2},{value:"pub_credentials
",id:"pub_credentials",level:3},{value:"Example Usage",id:"example-usage",level:2}];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"flutter-pub-publish",children:"Flutter Pub Publish"})}),"\n",(0,r.jsxs)(n.p,{children:["We use this workflow to publish a Flutter package to ",(0,r.jsx)(n.a,{href:"https://pub.dev",children:"pub.dev"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsx)(n.p,{children:"The Flutter Pub Publish workflow consists of the following steps:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Install dependencies"}),"\n",(0,r.jsx)(n.li,{children:"Setup pub credentials"}),"\n",(0,r.jsx)(n.li,{children:"Dry run"}),"\n",(0,r.jsx)(n.li,{children:"Publish"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,r.jsx)(n.h3,{id:"flutter_channel",children:(0,r.jsx)(n.code,{children:"flutter_channel"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter release channel to use (e.g. ",(0,r.jsx)(n.code,{children:"stable"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,r.jsx)(n.h3,{id:"flutter_version",children:(0,r.jsx)(n.code,{children:"flutter_version"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter SDK version to use (e.g. ",(0,r.jsx)(n.code,{children:"2.8.1"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"working_directory",children:(0,r.jsx)(n.code,{children:"working_directory"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The path to the root of the Flutter package."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"runs_on",children:(0,r.jsx)(n.code,{children:"runs_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," An optional operating system on which to run the workflow."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,r.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,r.jsx)(n.h3,{id:"pub_credentials",children:(0,r.jsx)(n.code,{children:"pub_credentials"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Required"})," The pub credentials needed for publishing. This can be retrieved by reading out your ",(0,r.jsx)(n.code,{children:"pub-credentials.json"})," on your system after you ran a ",(0,r.jsx)(n.code,{children:"flutter pub login"}),". The location of the file is different per operating system:"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"OS"}),(0,r.jsx)(n.th,{children:"Path"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Linux"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"$XDG_CONFIG_HOME/dart/pub-credentials.json"})," or ",(0,r.jsx)(n.code,{children:"$HOME/.config/dart/pub-credentials.json"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"macOS"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"~/Library/Application\\ Support/dart/pub-credentials.json"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Windows"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"%APPDATA%/dart/pub-credentials.json"})})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,r.jsxs)(n.p,{children:["We recommend using ",(0,r.jsx)(n.a,{href:"https://docs.github.com/en/actions/security-guides/encrypted-secrets",children:"GitHub Secrets"})," for safely storing and reading the credentials."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"name: My Flutter Pub Publish Workflow\n\non:\n push:\n tags:\n - 'my_flutter_package-v*.*.*'\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_pub_publish.yml@v1\n with:\n flutter_channel: 'stable'\n flutter_version: '2.8.1'\n working_directory: 'packages/my_flutter_package'\n secrets:\n pub_credentials: secrets.PUB_CREDENTIALS\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>o});var r=s(6540);const t={},l=r.createContext(t);function i(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/a41a336d.4733d961.js b/assets/js/a41a336d.4733d961.js
deleted file mode 100644
index 6c97b39..0000000
--- a/assets/js/a41a336d.4733d961.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[330],{8604:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>l,toc:()=>d});var i=s(4848),r=s(8453);const c={sidebar_position:5},o="License Check",l={id:"workflows/license_check",title:"License Check",description:"At VGV, we keep track of the rights and restrictions external dependencies might impose on Dart or Flutter projects.",source:"@site/docs/workflows/license_check.md",sourceDirName:"workflows",slug:"/workflows/license_check",permalink:"/docs/workflows/license_check",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/license_check.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Flutter Pub Publish",permalink:"/docs/workflows/flutter_pub_publish"},next:{title:"Mason Publish",permalink:"/docs/workflows/mason_publish"}},t={},d=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"working_directory
",id:"working_directory",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"dart_sdk
",id:"dart_sdk",level:3},{value:"allowed
",id:"allowed",level:3},{value:"forbidden
",id:"forbidden",level:3},{value:"skip_packages
",id:"skip_packages",level:3},{value:"dependency_type
",id:"dependency_type",level:3},{value:"ignore_retrieval_failures
",id:"ignore_retrieval_failures",level:3},{value:"Secrets",id:"secrets",level:2},{value:"ssh_key
",id:"ssh_key",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"license-check",children:"License Check"})}),"\n",(0,i.jsx)(n.p,{children:"At VGV, we keep track of the rights and restrictions external dependencies might impose on Dart or Flutter projects."}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["The License Check functionality is powered by ",(0,i.jsx)(n.a,{href:"https://cli.vgv.dev/docs/commands/check_licenses",children:"Very Good CLI's license checker"}),", for a deeper understanding of some ",(0,i.jsx)(n.a,{href:"#inputs",children:"inputs"})," refer to its ",(0,i.jsx)(n.a,{href:"https://cli.vgv.dev/docs/commands/check_licenses",children:"documentation"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,i.jsx)(n.p,{children:"The License Check workflow consists of the following steps:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Setup Dart"}),"\n",(0,i.jsx)(n.li,{children:"Set SSH Key (if provided)"}),"\n",(0,i.jsx)(n.li,{children:"Install project dependencies"}),"\n",(0,i.jsx)(n.li,{children:"Check licenses"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,i.jsx)(n.h3,{id:"working_directory",children:(0,i.jsx)(n.code,{children:"working_directory"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," The path to the root of the Dart or Flutter package."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"."'})]}),"\n",(0,i.jsx)(n.h3,{id:"runs_on",children:(0,i.jsx)(n.code,{children:"runs_on"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," An optional operating system on which to run the workflow."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,i.jsx)(n.h3,{id:"dart_sdk",children:(0,i.jsx)(n.code,{children:"dart_sdk"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Which Dart SDK version to use. It can be a version (e.g. ",(0,i.jsx)(n.code,{children:"2.12.0"}),") or a channel (e.g. ",(0,i.jsx)(n.code,{children:"stable"}),"):"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,i.jsx)(n.h3,{id:"allowed",children:(0,i.jsx)(n.code,{children:"allowed"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Only allow the use of certain licenses. The expected format is a comma-separated list."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0"'})]}),"\n",(0,i.jsx)(n.h3,{id:"forbidden",children:(0,i.jsx)(n.code,{children:"forbidden"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Deny the use of certain licenses. The expected format is a comma-separated list."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'""'})]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["The allowed and forbidden options can't be used at the same time. If you want to use ",(0,i.jsx)(n.code,{children:"forbidden"})," set ",(0,i.jsx)(n.code,{children:"allowed"})," to an empty string."]})}),"\n",(0,i.jsx)(n.h3,{id:"skip_packages",children:(0,i.jsx)(n.code,{children:"skip_packages"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Skip packages from having their licenses checked."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'""'})]}),"\n",(0,i.jsx)(n.h3,{id:"dependency_type",children:(0,i.jsx)(n.code,{children:"dependency_type"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," The type of dependencies to check licenses for."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"direct-main,transitive"'})]}),"\n",(0,i.jsx)(n.h3,{id:"ignore_retrieval_failures",children:(0,i.jsx)(n.code,{children:"ignore_retrieval_failures"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Disregard licenses that failed to be retrieved."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,i.jsx)(n.h3,{id:"ssh_key",children:(0,i.jsx)(n.code,{children:"ssh_key"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," An SSH key to use for setting up the credentials for fetching dependencies that are not publicly available."]}),"\n",(0,i.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"name: license_check\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull_request:\n paths:\n - 'pubspec.yaml'\n - '.github/workflows/license_check.yaml'\n push:\n branches:\n - main\n paths:\n - 'pubspec.yaml'\n - '.github/workflows/license_check.yaml'\n\njobs:\n license_check:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/license_check.yml@v1\n with:\n allowed: 'MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The example ",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/actions/quickstart#creating-your-first-workflow",children:"workflow file"})," will ",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/actions/using-workflows/triggering-a-workflow",children:"trigger"})," the ",(0,i.jsx)(n.code,{children:"license_check"})," job on every push to the ",(0,i.jsx)(n.code,{children:"main"})," branch and on every pull request that modifies the ",(0,i.jsx)(n.code,{children:"pubspec.yaml"})," or the ",(0,i.jsx)(n.code,{children:"license_check.yaml"})," workflow file."]}),"\n",(0,i.jsxs)(n.p,{children:["If you are ",(0,i.jsxs)(n.a,{href:"https://dart.dev/guides/libraries/private-files#pubspec-lock",children:["committing the ",(0,i.jsx)(n.code,{children:"pubspec.lock"})]})," file for an application package you may consider adding it to the list of paths to trigger the workflow."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"For repositories with multiple packages we recommend adding a workflow file per package to avoid triggering a license check for packages which dependencies haven't been modified."})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>l});var i=s(6540);const r={},c=i.createContext(r);function o(e){const n=i.useContext(c);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(c.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/a41a336d.7d38d22c.js b/assets/js/a41a336d.7d38d22c.js
new file mode 100644
index 0000000..2182e6d
--- /dev/null
+++ b/assets/js/a41a336d.7d38d22c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[330],{8604:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>l,toc:()=>d});var i=s(4848),r=s(8453);const c={sidebar_position:5},o="License Check",l={id:"workflows/license_check",title:"License Check",description:"At VGV, we keep track of the rights and restrictions external dependencies might impose on Dart or Flutter projects.",source:"@site/docs/workflows/license_check.md",sourceDirName:"workflows",slug:"/workflows/license_check",permalink:"/docs/workflows/license_check",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/license_check.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Flutter Pub Publish",permalink:"/docs/workflows/flutter_pub_publish"},next:{title:"Mason Publish",permalink:"/docs/workflows/mason_publish"}},t={},d=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"working_directory
",id:"working_directory",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"dart_sdk
",id:"dart_sdk",level:3},{value:"allowed
",id:"allowed",level:3},{value:"forbidden
",id:"forbidden",level:3},{value:"skip_packages
",id:"skip_packages",level:3},{value:"dependency_type
",id:"dependency_type",level:3},{value:"ignore_retrieval_failures
",id:"ignore_retrieval_failures",level:3},{value:"Secrets",id:"secrets",level:2},{value:"ssh_key
",id:"ssh_key",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"license-check",children:"License Check"})}),"\n",(0,i.jsx)(n.p,{children:"At VGV, we keep track of the rights and restrictions external dependencies might impose on Dart or Flutter projects."}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["The License Check functionality is powered by ",(0,i.jsx)(n.a,{href:"https://cli.vgv.dev/docs/commands/check_licenses",children:"Very Good CLI's license checker"}),", for a deeper understanding of some ",(0,i.jsx)(n.a,{href:"#inputs",children:"inputs"})," refer to its ",(0,i.jsx)(n.a,{href:"https://cli.vgv.dev/docs/commands/check_licenses",children:"documentation"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,i.jsx)(n.p,{children:"The License Check workflow consists of the following steps:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Setup Dart"}),"\n",(0,i.jsx)(n.li,{children:"Set SSH Key (if provided)"}),"\n",(0,i.jsx)(n.li,{children:"Install project dependencies"}),"\n",(0,i.jsx)(n.li,{children:"Check licenses"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,i.jsx)(n.h3,{id:"working_directory",children:(0,i.jsx)(n.code,{children:"working_directory"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," The path to the root of the Dart or Flutter package."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"."'})]}),"\n",(0,i.jsx)(n.h3,{id:"runs_on",children:(0,i.jsx)(n.code,{children:"runs_on"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," An optional operating system on which to run the workflow."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,i.jsx)(n.h3,{id:"dart_sdk",children:(0,i.jsx)(n.code,{children:"dart_sdk"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Which Dart SDK version to use. It can be a version (e.g. ",(0,i.jsx)(n.code,{children:"3.5.0"}),") or a channel (e.g. ",(0,i.jsx)(n.code,{children:"stable"}),"):"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,i.jsx)(n.h3,{id:"allowed",children:(0,i.jsx)(n.code,{children:"allowed"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Only allow the use of certain licenses. The expected format is a comma-separated list."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0"'})]}),"\n",(0,i.jsx)(n.h3,{id:"forbidden",children:(0,i.jsx)(n.code,{children:"forbidden"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Deny the use of certain licenses. The expected format is a comma-separated list."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'""'})]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["The allowed and forbidden options can't be used at the same time. If you want to use ",(0,i.jsx)(n.code,{children:"forbidden"})," set ",(0,i.jsx)(n.code,{children:"allowed"})," to an empty string."]})}),"\n",(0,i.jsx)(n.h3,{id:"skip_packages",children:(0,i.jsx)(n.code,{children:"skip_packages"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Skip packages from having their licenses checked."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'""'})]}),"\n",(0,i.jsx)(n.h3,{id:"dependency_type",children:(0,i.jsx)(n.code,{children:"dependency_type"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," The type of dependencies to check licenses for."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:'"direct-main,transitive"'})]}),"\n",(0,i.jsx)(n.h3,{id:"ignore_retrieval_failures",children:(0,i.jsx)(n.code,{children:"ignore_retrieval_failures"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," Disregard licenses that failed to be retrieved."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Default"})," ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,i.jsx)(n.h3,{id:"ssh_key",children:(0,i.jsx)(n.code,{children:"ssh_key"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Optional"})," An SSH key to use for setting up the credentials for fetching dependencies that are not publicly available."]}),"\n",(0,i.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"name: license_check\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull_request:\n paths:\n - 'pubspec.yaml'\n - '.github/workflows/license_check.yaml'\n push:\n branches:\n - main\n paths:\n - 'pubspec.yaml'\n - '.github/workflows/license_check.yaml'\n\njobs:\n license_check:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/license_check.yml@v1\n with:\n allowed: 'MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0'\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The example ",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/actions/quickstart#creating-your-first-workflow",children:"workflow file"})," will ",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/actions/using-workflows/triggering-a-workflow",children:"trigger"})," the ",(0,i.jsx)(n.code,{children:"license_check"})," job on every push to the ",(0,i.jsx)(n.code,{children:"main"})," branch and on every pull request that modifies the ",(0,i.jsx)(n.code,{children:"pubspec.yaml"})," or the ",(0,i.jsx)(n.code,{children:"license_check.yaml"})," workflow file."]}),"\n",(0,i.jsxs)(n.p,{children:["If you are ",(0,i.jsxs)(n.a,{href:"https://dart.dev/guides/libraries/private-files#pubspec-lock",children:["committing the ",(0,i.jsx)(n.code,{children:"pubspec.lock"})]})," file for an application package you may consider adding it to the list of paths to trigger the workflow."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"For repositories with multiple packages we recommend adding a workflow file per package to avoid triggering a license check for packages which dependencies haven't been modified."})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>l});var i=s(6540);const r={},c=i.createContext(r);function o(e){const n=i.useContext(c);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(c.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/dad825aa.3495c210.js b/assets/js/dad825aa.3495c210.js
deleted file mode 100644
index a47a59e..0000000
--- a/assets/js/dad825aa.3495c210.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[531],{6599:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>o,toc:()=>c});var n=r(4848),t=r(8453);const d={sidebar_position:2},i="Dart Pub Publish",o={id:"workflows/dart_pub_publish",title:"Dart Pub Publish",description:"We use this workflow to publish a Dart package to pub.dev.",source:"@site/docs/workflows/dart_pub_publish.md",sourceDirName:"workflows",slug:"/workflows/dart_pub_publish",permalink:"/docs/workflows/dart_pub_publish",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/dart_pub_publish.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Dart Package",permalink:"/docs/workflows/dart_package"},next:{title:"Flutter Package",permalink:"/docs/workflows/flutter_package"}},l={},c=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"dart_sdk
",id:"dart_sdk",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"Secrets",id:"secrets",level:2},{value:"pub_credentials
",id:"pub_credentials",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"dart-pub-publish",children:"Dart Pub Publish"})}),"\n",(0,n.jsxs)(s.p,{children:["We use this workflow to publish a Dart package to ",(0,n.jsx)(s.a,{href:"https://pub.dev",children:"pub.dev"}),"."]}),"\n",(0,n.jsx)(s.h2,{id:"steps",children:"Steps"}),"\n",(0,n.jsx)(s.p,{children:"The Dart Pub Publish workflow consists of the following steps:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"Install dependencies"}),"\n",(0,n.jsx)(s.li,{children:"Setup pub credentials"}),"\n",(0,n.jsx)(s.li,{children:"Dry run"}),"\n",(0,n.jsx)(s.li,{children:"Publish"}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"inputs",children:"Inputs"}),"\n",(0,n.jsx)(s.h3,{id:"dart_sdk",children:(0,n.jsx)(s.code,{children:"dart_sdk"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Optional"})," Which Dart SDK version to use. It can be a version (e.g. ",(0,n.jsx)(s.code,{children:"2.12.0"}),") or a channel (e.g. ",(0,n.jsx)(s.code,{children:"stable"}),"):"]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Default"})," ",(0,n.jsx)(s.code,{children:'"stable"'})]}),"\n",(0,n.jsx)(s.h3,{id:"working_directory",children:(0,n.jsx)(s.code,{children:"working_directory"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Optional"})," The path to the root of the Dart package."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Default"})," ",(0,n.jsx)(s.code,{children:'"."'})]}),"\n",(0,n.jsx)(s.h3,{id:"runs_on",children:(0,n.jsx)(s.code,{children:"runs_on"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Optional"})," An optional operating system on which to run the workflow."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Default"})," ",(0,n.jsx)(s.code,{children:'"ubuntu-latest"'})]}),"\n",(0,n.jsx)(s.h2,{id:"secrets",children:"Secrets"}),"\n",(0,n.jsx)(s.h3,{id:"pub_credentials",children:(0,n.jsx)(s.code,{children:"pub_credentials"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Required"})," The pub credentials needed for publishing. This can be retrieved by reading out your ",(0,n.jsx)(s.code,{children:"pub-credentials.json"})," on your system after you ran a ",(0,n.jsx)(s.code,{children:"dart pub login"}),", the location of the file is different per operating system:"]}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"OS"}),(0,n.jsx)(s.th,{children:"Path"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Linux"}),(0,n.jsxs)(s.td,{children:[(0,n.jsx)(s.code,{children:"$XDG_CONFIG_HOME/dart/pub-credentials.json"})," or ",(0,n.jsx)(s.code,{children:"$HOME/.config/dart/pub-credentials.json"})]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"macOS"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"~/Library/Application\\ Support/dart/pub-credentials.json"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Windows"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"%APPDATA%/dart/pub-credentials.json"})})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,n.jsxs)(s.p,{children:["We recommend using ",(0,n.jsx)(s.a,{href:"https://docs.github.com/en/actions/security-guides/encrypted-secrets",children:"GitHub Secrets"})," for safely storing and reading the credentials."]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"name: My Dart Pub Publish Workflow\n\non: pull_request\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_pub_publish.yml@v1\n with:\n dart_sdk: 'stable'\n working_directory: 'packages/my_dart_package'\n secrets:\n pub_credentials: secrets.PUB_CREDENTIALS\n"})})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},8453:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>o});var n=r(6540);const t={},d=n.createContext(t);function i(e){const s=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/dad825aa.b5d80911.js b/assets/js/dad825aa.b5d80911.js
new file mode 100644
index 0000000..0d97579
--- /dev/null
+++ b/assets/js/dad825aa.b5d80911.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[531],{6599:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>o,toc:()=>c});var n=r(4848),t=r(8453);const d={sidebar_position:2},i="Dart Pub Publish",o={id:"workflows/dart_pub_publish",title:"Dart Pub Publish",description:"We use this workflow to publish a Dart package to pub.dev.",source:"@site/docs/workflows/dart_pub_publish.md",sourceDirName:"workflows",slug:"/workflows/dart_pub_publish",permalink:"/docs/workflows/dart_pub_publish",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/dart_pub_publish.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Dart Package",permalink:"/docs/workflows/dart_package"},next:{title:"Flutter Package",permalink:"/docs/workflows/flutter_package"}},l={},c=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"dart_sdk
",id:"dart_sdk",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"Secrets",id:"secrets",level:2},{value:"pub_credentials
",id:"pub_credentials",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"dart-pub-publish",children:"Dart Pub Publish"})}),"\n",(0,n.jsxs)(s.p,{children:["We use this workflow to publish a Dart package to ",(0,n.jsx)(s.a,{href:"https://pub.dev",children:"pub.dev"}),"."]}),"\n",(0,n.jsx)(s.h2,{id:"steps",children:"Steps"}),"\n",(0,n.jsx)(s.p,{children:"The Dart Pub Publish workflow consists of the following steps:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"Install dependencies"}),"\n",(0,n.jsx)(s.li,{children:"Setup pub credentials"}),"\n",(0,n.jsx)(s.li,{children:"Dry run"}),"\n",(0,n.jsx)(s.li,{children:"Publish"}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"inputs",children:"Inputs"}),"\n",(0,n.jsx)(s.h3,{id:"dart_sdk",children:(0,n.jsx)(s.code,{children:"dart_sdk"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Optional"})," Which Dart SDK version to use. It can be a version (e.g. ",(0,n.jsx)(s.code,{children:"3.5.0"}),") or a channel (e.g. ",(0,n.jsx)(s.code,{children:"stable"}),"):"]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Default"})," ",(0,n.jsx)(s.code,{children:'"stable"'})]}),"\n",(0,n.jsx)(s.h3,{id:"working_directory",children:(0,n.jsx)(s.code,{children:"working_directory"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Optional"})," The path to the root of the Dart package."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Default"})," ",(0,n.jsx)(s.code,{children:'"."'})]}),"\n",(0,n.jsx)(s.h3,{id:"runs_on",children:(0,n.jsx)(s.code,{children:"runs_on"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Optional"})," An optional operating system on which to run the workflow."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Default"})," ",(0,n.jsx)(s.code,{children:'"ubuntu-latest"'})]}),"\n",(0,n.jsx)(s.h2,{id:"secrets",children:"Secrets"}),"\n",(0,n.jsx)(s.h3,{id:"pub_credentials",children:(0,n.jsx)(s.code,{children:"pub_credentials"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Required"})," The pub credentials needed for publishing. This can be retrieved by reading out your ",(0,n.jsx)(s.code,{children:"pub-credentials.json"})," on your system after you ran a ",(0,n.jsx)(s.code,{children:"dart pub login"}),", the location of the file is different per operating system:"]}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"OS"}),(0,n.jsx)(s.th,{children:"Path"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Linux"}),(0,n.jsxs)(s.td,{children:[(0,n.jsx)(s.code,{children:"$XDG_CONFIG_HOME/dart/pub-credentials.json"})," or ",(0,n.jsx)(s.code,{children:"$HOME/.config/dart/pub-credentials.json"})]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"macOS"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"~/Library/Application\\ Support/dart/pub-credentials.json"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Windows"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"%APPDATA%/dart/pub-credentials.json"})})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,n.jsxs)(s.p,{children:["We recommend using ",(0,n.jsx)(s.a,{href:"https://docs.github.com/en/actions/security-guides/encrypted-secrets",children:"GitHub Secrets"})," for safely storing and reading the credentials."]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"name: My Dart Pub Publish Workflow\n\non: pull_request\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_pub_publish.yml@v1\n with:\n dart_sdk: 'stable'\n working_directory: 'packages/my_dart_package'\n secrets:\n pub_credentials: secrets.PUB_CREDENTIALS\n"})})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},8453:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>o});var n=r(6540);const t={},d=n.createContext(t);function i(e){const s=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/eadb6e1d.5c449659.js b/assets/js/eadb6e1d.6b9ed2a7.js
similarity index 52%
rename from assets/js/eadb6e1d.5c449659.js
rename to assets/js/eadb6e1d.6b9ed2a7.js
index e2ccc43..2c243d1 100644
--- a/assets/js/eadb6e1d.5c449659.js
+++ b/assets/js/eadb6e1d.6b9ed2a7.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[3],{7205:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=s(4848),t=s(8453);const l={sidebar_position:3},o="Flutter Package",i={id:"workflows/flutter_package",title:"Flutter Package",description:"This workflow runs helpful checks on a Flutter package according to the steps below. As with any workflow, it can be customized.",source:"@site/docs/workflows/flutter_package.md",sourceDirName:"workflows",slug:"/workflows/flutter_package",permalink:"/docs/workflows/flutter_package",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/flutter_package.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Dart Pub Publish",permalink:"/docs/workflows/dart_pub_publish"},next:{title:"Flutter Pub Publish",permalink:"/docs/workflows/flutter_pub_publish"}},c={},d=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"analyze_directories
",id:"analyze_directories",level:3},{value:"format_directories
",id:"format_directories",level:3},{value:"concurrency
",id:"concurrency",level:3},{value:"coverage_excludes
",id:"coverage_excludes",level:3},{value:"flutter_channel
",id:"flutter_channel",level:3},{value:"flutter_version
",id:"flutter_version",level:3},{value:"format_line_length
",id:"format_line_length",level:3},{value:"min_coverage
",id:"min_coverage",level:3},{value:"setup
",id:"setup",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"test_optimization
",id:"test_optimization",level:3},{value:"test_recursion
",id:"test_recursion",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"package_get_excludes
",id:"package_get_excludes",level:3},{value:"Secrets",id:"secrets",level:2},{value:"ssh_key
",id:"ssh_key",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"flutter-package",children:"Flutter Package"})}),"\n",(0,r.jsx)(n.p,{children:"This workflow runs helpful checks on a Flutter package according to the steps below. As with any workflow, it can be customized."}),"\n",(0,r.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsx)(n.p,{children:"The Flutter package workflow consists of the following steps:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Install dependencies"}),"\n",(0,r.jsx)(n.li,{children:"Format"}),"\n",(0,r.jsx)(n.li,{children:"Analyze"}),"\n",(0,r.jsx)(n.li,{children:"Run tests"}),"\n",(0,r.jsx)(n.li,{children:"Check code coverage"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,r.jsx)(n.h3,{id:"analyze_directories",children:(0,r.jsx)(n.code,{children:"analyze_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be analyzed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib test"'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_directories",children:(0,r.jsx)(n.code,{children:"format_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be formatted."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib test"'})]}),"\n",(0,r.jsx)(n.h3,{id:"concurrency",children:(0,r.jsx)(n.code,{children:"concurrency"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The number of concurrent test suites run."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"4"})]}),"\n",(0,r.jsx)(n.h3,{id:"coverage_excludes",children:(0,r.jsx)(n.code,{children:"coverage_excludes"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of paths to exclude from the coverage report. Supports ",(0,r.jsx)(n.code,{children:"globs"})," to describe file patterns."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"flutter_channel",children:(0,r.jsx)(n.code,{children:"flutter_channel"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter release channel to use (e.g. ",(0,r.jsx)(n.code,{children:"stable"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,r.jsx)(n.h3,{id:"flutter_version",children:(0,r.jsx)(n.code,{children:"flutter_version"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter SDK version to use (e.g. ",(0,r.jsx)(n.code,{children:"2.8.1"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_line_length",children:(0,r.jsx)(n.code,{children:"format_line_length"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The preferred line length preferred for running the ",(0,r.jsx)(n.code,{children:"dart format"})," command. Be aware that this does not change the behavior of the analysis step and longer lines could still make the workflow fail if the rule ",(0,r.jsx)(n.code,{children:"lines_longer_than_80_chars"})," is used."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"80"'})]}),"\n",(0,r.jsx)(n.h3,{id:"min_coverage",children:(0,r.jsx)(n.code,{children:"min_coverage"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The minimum coverage percentage allowed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," 100"]}),"\n",(0,r.jsx)(n.h3,{id:"setup",children:(0,r.jsx)(n.code,{children:"setup"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A command that should be executed immediately after dependencies are installed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"working_directory",children:(0,r.jsx)(n.code,{children:"working_directory"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The path to the root of the Flutter package."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"test_optimization",children:(0,r.jsx)(n.code,{children:"test_optimization"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Enable the test optimization."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Note"}),": Since the optimization process groups tests into a single file, golden tests will not work properly. Consider disabling optimizations if you are using golden tests."]}),"\n",(0,r.jsx)(n.h3,{id:"test_recursion",children:(0,r.jsx)(n.code,{children:"test_recursion"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Whether to recursively run tests in nested directories."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h3,{id:"runs_on",children:(0,r.jsx)(n.code,{children:"runs_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The operating system on which to run the workflow."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,r.jsx)(n.h3,{id:"package_get_excludes",children:(0,r.jsx)(n.code,{children:"package_get_excludes"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," List of paths to exclude from ",(0,r.jsx)(n.code,{children:"packages get"}),". Supports ",(0,r.jsx)(n.code,{children:"globs"})," to describe file patterns."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"!*"'})]}),"\n",(0,r.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,r.jsx)(n.h3,{id:"ssh_key",children:(0,r.jsx)(n.code,{children:"ssh_key"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," An SSH key used to access private repositories when installing dependencies."]}),"\n",(0,r.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"name: My Flutter Workflow\n\non: pull_request\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1\n with:\n coverage_excludes: '*.g.dart'\n flutter_channel: 'stable'\n flutter_version: '2.8.1'\n working_directory: 'examples/my_flutter_package'\n test_recursion: true\n secrets:\n ssh_key: ${{secrets.EXAMPLE_KEY}}\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>i});var r=s(6540);const t={},l=r.createContext(t);function o(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkworkflows_docs=self.webpackChunkworkflows_docs||[]).push([[3],{7205:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var r=s(4848),t=s(8453);const l={sidebar_position:3},o="Flutter Package",i={id:"workflows/flutter_package",title:"Flutter Package",description:"This workflow runs helpful checks on a Flutter package according to the steps below. As with any workflow, it can be customized.",source:"@site/docs/workflows/flutter_package.md",sourceDirName:"workflows",slug:"/workflows/flutter_package",permalink:"/docs/workflows/flutter_package",draft:!1,unlisted:!1,editUrl:"https://github.com/VeryGoodOpenSource/very_good_workflows/tree/main/site/docs/workflows/flutter_package.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Dart Pub Publish",permalink:"/docs/workflows/dart_pub_publish"},next:{title:"Flutter Pub Publish",permalink:"/docs/workflows/flutter_pub_publish"}},c={},d=[{value:"Steps",id:"steps",level:2},{value:"Inputs",id:"inputs",level:2},{value:"analyze_directories
",id:"analyze_directories",level:3},{value:"format_directories
",id:"format_directories",level:3},{value:"concurrency
",id:"concurrency",level:3},{value:"coverage_excludes
",id:"coverage_excludes",level:3},{value:"flutter_channel
",id:"flutter_channel",level:3},{value:"flutter_version
",id:"flutter_version",level:3},{value:"format_line_length
",id:"format_line_length",level:3},{value:"min_coverage
",id:"min_coverage",level:3},{value:"setup
",id:"setup",level:3},{value:"working_directory
",id:"working_directory",level:3},{value:"test_optimization
",id:"test_optimization",level:3},{value:"test_recursion
",id:"test_recursion",level:3},{value:"runs_on
",id:"runs_on",level:3},{value:"package_get_excludes
",id:"package_get_excludes",level:3},{value:"Secrets",id:"secrets",level:2},{value:"ssh_key
",id:"ssh_key",level:3},{value:"Example Usage",id:"example-usage",level:2}];function a(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"flutter-package",children:"Flutter Package"})}),"\n",(0,r.jsx)(n.p,{children:"This workflow runs helpful checks on a Flutter package according to the steps below. As with any workflow, it can be customized."}),"\n",(0,r.jsx)(n.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsx)(n.p,{children:"The Flutter package workflow consists of the following steps:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Install dependencies"}),"\n",(0,r.jsx)(n.li,{children:"Format"}),"\n",(0,r.jsx)(n.li,{children:"Analyze"}),"\n",(0,r.jsx)(n.li,{children:"Run tests"}),"\n",(0,r.jsx)(n.li,{children:"Check code coverage"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"inputs",children:"Inputs"}),"\n",(0,r.jsx)(n.h3,{id:"analyze_directories",children:(0,r.jsx)(n.code,{children:"analyze_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be analyzed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib test"'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_directories",children:(0,r.jsx)(n.code,{children:"format_directories"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of folders that should be formatted."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"lib test"'})]}),"\n",(0,r.jsx)(n.h3,{id:"concurrency",children:(0,r.jsx)(n.code,{children:"concurrency"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The number of concurrent test suites run."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"4"})]}),"\n",(0,r.jsx)(n.h3,{id:"coverage_excludes",children:(0,r.jsx)(n.code,{children:"coverage_excludes"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A space-separated list of paths to exclude from the coverage report. Supports ",(0,r.jsx)(n.code,{children:"globs"})," to describe file patterns."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"flutter_channel",children:(0,r.jsx)(n.code,{children:"flutter_channel"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter release channel to use (e.g. ",(0,r.jsx)(n.code,{children:"stable"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"stable"'})]}),"\n",(0,r.jsx)(n.h3,{id:"flutter_version",children:(0,r.jsx)(n.code,{children:"flutter_version"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The Flutter SDK version to use (e.g. ",(0,r.jsx)(n.code,{children:"3.24.0"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"format_line_length",children:(0,r.jsx)(n.code,{children:"format_line_length"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The preferred line length preferred for running the ",(0,r.jsx)(n.code,{children:"dart format"})," command. Be aware that this does not change the behavior of the analysis step and longer lines could still make the workflow fail if the rule ",(0,r.jsx)(n.code,{children:"lines_longer_than_80_chars"})," is used."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"80"'})]}),"\n",(0,r.jsx)(n.h3,{id:"min_coverage",children:(0,r.jsx)(n.code,{children:"min_coverage"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The minimum coverage percentage allowed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," 100"]}),"\n",(0,r.jsx)(n.h3,{id:"setup",children:(0,r.jsx)(n.code,{children:"setup"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," A command that should be executed immediately after dependencies are installed."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'""'})]}),"\n",(0,r.jsx)(n.h3,{id:"working_directory",children:(0,r.jsx)(n.code,{children:"working_directory"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The path to the root of the Flutter package."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"."'})]}),"\n",(0,r.jsx)(n.h3,{id:"test_optimization",children:(0,r.jsx)(n.code,{children:"test_optimization"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Enable the test optimization."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"true"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Note"}),": Since the optimization process groups tests into a single file, golden tests will not work properly. Consider disabling optimizations if you are using golden tests."]}),"\n",(0,r.jsx)(n.h3,{id:"test_recursion",children:(0,r.jsx)(n.code,{children:"test_recursion"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," Whether to recursively run tests in nested directories."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:"false"})]}),"\n",(0,r.jsx)(n.h3,{id:"runs_on",children:(0,r.jsx)(n.code,{children:"runs_on"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," The operating system on which to run the workflow."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"ubuntu-latest"'})]}),"\n",(0,r.jsx)(n.h3,{id:"package_get_excludes",children:(0,r.jsx)(n.code,{children:"package_get_excludes"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," List of paths to exclude from ",(0,r.jsx)(n.code,{children:"packages get"}),". Supports ",(0,r.jsx)(n.code,{children:"globs"})," to describe file patterns."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Default"})," ",(0,r.jsx)(n.code,{children:'"!*"'})]}),"\n",(0,r.jsx)(n.h2,{id:"secrets",children:"Secrets"}),"\n",(0,r.jsx)(n.h3,{id:"ssh_key",children:(0,r.jsx)(n.code,{children:"ssh_key"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optional"})," An SSH key used to access private repositories when installing dependencies."]}),"\n",(0,r.jsx)(n.h2,{id:"example-usage",children:"Example Usage"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"name: My Flutter Workflow\n\non: pull_request\n\njobs:\n build:\n uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1\n with:\n coverage_excludes: '*.g.dart'\n flutter_channel: 'stable'\n flutter_version: '3.24.0'\n working_directory: 'examples/my_flutter_package'\n test_recursion: true\n secrets:\n ssh_key: ${{secrets.EXAMPLE_KEY}}\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>i});var r=s(6540);const t={},l=r.createContext(t);function o(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.f7a8b770.js b/assets/js/runtime~main.e6151a95.js
similarity index 92%
rename from assets/js/runtime~main.f7a8b770.js
rename to assets/js/runtime~main.e6151a95.js
index 366bf67..6a2ac14 100644
--- a/assets/js/runtime~main.f7a8b770.js
+++ b/assets/js/runtime~main.e6151a95.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,t,r,o,n={},d={};function f(e){var a=d[e];if(void 0!==a)return a.exports;var t=d[e]={exports:{}};return n[e].call(t.exports,t,t.exports,f),t.exports}f.m=n,e=[],f.O=(a,t,r,o)=>{if(!t){var n=1/0;for(u=0;ucove
Optional List of paths to exclude from the coverage report, separated by an empty space. Supports globs
to describe file patterns.
Default ""
dart_sdk
-Optional Which Dart SDK version to use. It can be a version (e.g. 2.12.0
) or a channel (e.g. stable
):
+Optional Which Dart SDK version to use. It can be a version (e.g. 3.5.0
) or a channel (e.g. stable
):
Default "stable"
format_line_length
Optional The preferred line length preferred for running the dart format
command. Be aware that this does not change the behavior of the analysis step and longer lines could still make the workflow fail if the rule lines_longer_than_80_chars
is used.
diff --git a/docs/workflows/dart_pub_publish.html b/docs/workflows/dart_pub_publish.html
index 51de7b8..56bd02e 100644
--- a/docs/workflows/dart_pub_publish.html
+++ b/docs/workflows/dart_pub_publish.html
@@ -4,7 +4,7 @@
Dart Pub Publish | Very Good Workflows
-
+
@@ -20,7 +20,7 @@ Steps
Inputs
dart_sdk
-Optional Which Dart SDK version to use. It can be a version (e.g. 2.12.0
) or a channel (e.g. stable
):
+Optional Which Dart SDK version to use. It can be a version (e.g. 3.5.0
) or a channel (e.g. stable
):
Default "stable"
working_directory
Optional The path to the root of the Dart package.
diff --git a/docs/workflows/flutter_package.html b/docs/workflows/flutter_package.html
index f40fb0b..2960588 100644
--- a/docs/workflows/flutter_package.html
+++ b/docs/workflows/flutter_package.html
@@ -4,7 +4,7 @@
Flutter Package | Very Good Workflows
-
+
@@ -36,7 +36,7 @@ flutte
Optional The Flutter release channel to use (e.g. stable
).
Default "stable"
flutter_version
-Optional The Flutter SDK version to use (e.g. 2.8.1
).
+Optional The Flutter SDK version to use (e.g. 3.24.0
).
Default ""
format_line_length
Optional The preferred line length preferred for running the dart format
command. Be aware that this does not change the behavior of the analysis step and longer lines could still make the workflow fail if the rule lines_longer_than_80_chars
is used.
@@ -67,6 +67,6 @@ Secretsssh_key
Optional An SSH key used to access private repositories when installing dependencies.
Example Usage
-name: My Flutter Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
with:
coverage_excludes: '*.g.dart'
flutter_channel: 'stable'
flutter_version: '2.8.1'
working_directory: 'examples/my_flutter_package'
test_recursion: true
secrets:
ssh_key: ${{secrets.EXAMPLE_KEY}}
+name: My Flutter Workflow
on: pull_request
jobs:
build:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
with:
coverage_excludes: '*.g.dart'
flutter_channel: 'stable'
flutter_version: '3.24.0'
working_directory: 'examples/my_flutter_package'
test_recursion: true
secrets:
ssh_key: ${{secrets.EXAMPLE_KEY}}