From 397d0510885c09a3b1fb8563c2f44e98309079d5 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 11:43:44 +0100 Subject: [PATCH 01/32] fix: nix filter for package Signed-off-by: Brian McGee --- nix/packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/packages.nix b/nix/packages.nix index 0e0e6c3..6a10ba3 100644 --- a/nix/packages.nix +++ b/nix/packages.nix @@ -25,6 +25,7 @@ root = ../.; exclude = [ "nix" + "docs" ]; }; -- 2.45.1 From b86d0f897feb859471c54023249684e58078f286 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 12:02:29 +0100 Subject: [PATCH 02/32] doc: configure hero and logo Signed-off-by: Brian McGee --- .gitignore | 4 + docs/.vitepress/config.mts | 31 + docs/.vitepress/theme/index.ts | 17 + docs/.vitepress/theme/style.css | 138 +++ docs/api-examples.md | 55 ++ docs/assets/fmt.gif | Bin 0 -> 88792 bytes docs/assets/logo.svg | 194 ++++ docs/index.md | 27 + docs/markdown-examples.md | 85 ++ docs/package-lock.json | 1626 +++++++++++++++++++++++++++++++ docs/package.json | 10 + docs/vhs/fmt.tape | 20 + nix/default.nix | 1 + nix/docs.nix | 31 + 14 files changed, 2239 insertions(+) create mode 100644 docs/.vitepress/config.mts create mode 100644 docs/.vitepress/theme/index.ts create mode 100644 docs/.vitepress/theme/style.css create mode 100644 docs/api-examples.md create mode 100644 docs/assets/fmt.gif create mode 100644 docs/assets/logo.svg create mode 100644 docs/index.md create mode 100644 docs/markdown-examples.md create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/vhs/fmt.tape create mode 100644 nix/docs.nix diff --git a/.gitignore b/.gitignore index 631de79..f30e92e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,7 @@ repl-result-* # devshell /.data + +# docs +node_modules +docs/.vitepress/cache \ No newline at end of file diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 0000000..a80bcd1 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,31 @@ +import { defineConfig } from 'vitepress' + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "Treefmt", + description: "one CLI to format your repo", + themeConfig: { + + logo: '../assets/logo.svg', + + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/markdown-examples' } + ], + + sidebar: [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ], + + socialLinks: [ + { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + ] + } +}) diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000..cf42c91 --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,17 @@ +// https://vitepress.dev/guide/custom-theme +import { h } from "vue"; +import type { Theme } from "vitepress"; +import DefaultTheme from "vitepress/theme"; +import "./style.css"; + +export default { + extends: DefaultTheme, + Layout: () => { + return h(DefaultTheme.Layout, null, { + // https://vitepress.dev/guide/extending-default-theme#layout-slots + }); + }, + enhanceApp({ app, router, siteData }) { + // ... + }, +} satisfies Theme; diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css new file mode 100644 index 0000000..42779f9 --- /dev/null +++ b/docs/.vitepress/theme/style.css @@ -0,0 +1,138 @@ +/** + * Customize default theme styling by overriding CSS variables: + * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css + */ + +/** + * Colors + * + * Each colors have exact same color scale system with 3 levels of solid + * colors with different brightness, and 1 soft color. + * + * - `XXX-1`: The most solid color used mainly for colored text. It must + * satisfy the contrast ratio against when used on top of `XXX-soft`. + * + * - `XXX-2`: The color used mainly for hover state of the button. + * + * - `XXX-3`: The color for solid background, such as bg color of the button. + * It must satisfy the contrast ratio with pure white (#ffffff) text on + * top of it. + * + * - `XXX-soft`: The color used for subtle background such as custom container + * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors + * on top of it. + * + * The soft color must be semi transparent alpha channel. This is crucial + * because it allows adding multiple "soft" colors on top of each other + * to create a accent, such as when having inline code block inside + * custom containers. + * + * - `default`: The color used purely for subtle indication without any + * special meanings attched to it such as bg color for menu hover state. + * + * - `brand`: Used for primary brand colors, such as link text, button with + * brand theme, etc. + * + * - `tip`: Used to indicate useful information. The default theme uses the + * brand color for this by default. + * + * - `warning`: Used to indicate warning to the users. Used in custom + * container, badges, etc. + * + * - `danger`: Used to show error, or dangerous message to the users. Used + * in custom container, badges, etc. + * -------------------------------------------------------------------------- */ + +:root { + --vp-c-default-1: var(--vp-c-gray-1); + --vp-c-default-2: var(--vp-c-gray-2); + --vp-c-default-3: var(--vp-c-gray-3); + --vp-c-default-soft: var(--vp-c-gray-soft); + + --vp-c-brand-1: var(--vp-c-indigo-1); + --vp-c-brand-2: var(--vp-c-indigo-2); + --vp-c-brand-3: var(--vp-c-indigo-3); + --vp-c-brand-soft: var(--vp-c-indigo-soft); + + --vp-c-tip-1: var(--vp-c-brand-1); + --vp-c-tip-2: var(--vp-c-brand-2); + --vp-c-tip-3: var(--vp-c-brand-3); + --vp-c-tip-soft: var(--vp-c-brand-soft); + + --vp-c-warning-1: var(--vp-c-yellow-1); + --vp-c-warning-2: var(--vp-c-yellow-2); + --vp-c-warning-3: var(--vp-c-yellow-3); + --vp-c-warning-soft: var(--vp-c-yellow-soft); + + --vp-c-danger-1: var(--vp-c-red-1); + --vp-c-danger-2: var(--vp-c-red-2); + --vp-c-danger-3: var(--vp-c-red-3); + --vp-c-danger-soft: var(--vp-c-red-soft); +} + +/** + * Component: Button + * -------------------------------------------------------------------------- */ + +:root { + --vp-button-brand-border: transparent; + --vp-button-brand-text: var(--vp-c-white); + --vp-button-brand-bg: var(--vp-c-brand-3); + --vp-button-brand-hover-border: transparent; + --vp-button-brand-hover-text: var(--vp-c-white); + --vp-button-brand-hover-bg: var(--vp-c-brand-2); + --vp-button-brand-active-border: transparent; + --vp-button-brand-active-text: var(--vp-c-white); + --vp-button-brand-active-bg: var(--vp-c-brand-1); +} + +/** + * Component: Home + * -------------------------------------------------------------------------- */ + +:root { + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient( + 120deg, + #bd34fe 30%, + #41d1ff + ); + + --vp-home-hero-image-background-image: linear-gradient( + -45deg, + #bd34fe 50%, + #47caff 50% + ); + --vp-home-hero-image-filter: blur(44px); +} + +@media (min-width: 640px) { + :root { + --vp-home-hero-image-filter: blur(56px); + } +} + +@media (min-width: 960px) { + :root { + --vp-home-hero-image-filter: blur(68px); + } +} + +/** + * Component: Custom Block + * -------------------------------------------------------------------------- */ + +:root { + --vp-custom-block-tip-border: transparent; + --vp-custom-block-tip-text: var(--vp-c-text-1); + --vp-custom-block-tip-bg: var(--vp-c-brand-soft); + --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); +} + +/** + * Component: Algolia + * -------------------------------------------------------------------------- */ + +.DocSearch { + --docsearch-primary-color: var(--vp-c-brand-1) !important; +} diff --git a/docs/api-examples.md b/docs/api-examples.md new file mode 100644 index 0000000..691df9c --- /dev/null +++ b/docs/api-examples.md @@ -0,0 +1,55 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data + +
{{ theme }}
+ +### Page Data + +
{{ page }}
+ +### Page Frontmatter + +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data + +
{{ theme }}
+ +### Page Data + +
{{ page }}
+ +### Page Frontmatter + +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/assets/fmt.gif b/docs/assets/fmt.gif new file mode 100644 index 0000000000000000000000000000000000000000..67f467d9910868225e43f5b62f5c2bd3ee236005 GIT binary patch literal 88792 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 + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..7c91e3f --- /dev/null +++ b/docs/index.md @@ -0,0 +1,27 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Treefmt" + text: "One CLI to format your repo" + image: + dark: ./assets/fmt.gif + light: ./assets/fmt-light.gif + alt: Treefmt + actions: + - theme: brand + text: Markdown Examples + link: /markdown-examples + - theme: alt + text: API Examples + link: /api-examples + +features: + - title: Feature A + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature B + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature C + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit +--- diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 0000000..5d8c8e1 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,1626 @@ +{ + "name": "docs", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "vitepress": "^1.1.4" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "dev": true, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz", + "integrity": "sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.23.3" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.3.tgz", + "integrity": "sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==", + "dev": true + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz", + "integrity": "sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.23.3" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.3.tgz", + "integrity": "sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.3.tgz", + "integrity": "sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.3.tgz", + "integrity": "sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.3.tgz", + "integrity": "sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz", + "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.3.tgz", + "integrity": "sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==", + "dev": true + }, + "node_modules/@algolia/logger-console": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.3.tgz", + "integrity": "sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==", + "dev": true, + "dependencies": { + "@algolia/logger-common": "4.23.3" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.3.tgz", + "integrity": "sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.23.3", + "@algolia/cache-common": "4.23.3", + "@algolia/cache-in-memory": "4.23.3", + "@algolia/client-common": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/logger-common": "4.23.3", + "@algolia/logger-console": "4.23.3", + "@algolia/requester-browser-xhr": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/requester-node-http": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz", + "integrity": "sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.23.3" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.3.tgz", + "integrity": "sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==", + "dev": true + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz", + "integrity": "sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.23.3" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.3.tgz", + "integrity": "sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.23.3", + "@algolia/logger-common": "4.23.3", + "@algolia/requester-common": "4.23.3" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", + "dev": true + }, + "node_modules/@docsearch/js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", + "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", + "dev": true, + "dependencies": { + "@docsearch/react": "3.6.0", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.0", + "algoliasearch": "^4.19.1" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.1.tgz", + "integrity": "sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.1.tgz", + "integrity": "sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.1.tgz", + "integrity": "sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.1.tgz", + "integrity": "sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.1.tgz", + "integrity": "sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.1.tgz", + "integrity": "sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.1.tgz", + "integrity": "sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.1.tgz", + "integrity": "sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.1.tgz", + "integrity": "sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.1.tgz", + "integrity": "sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.1.tgz", + "integrity": "sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.1.tgz", + "integrity": "sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.1.tgz", + "integrity": "sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.1.tgz", + "integrity": "sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.1.tgz", + "integrity": "sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.1.tgz", + "integrity": "sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.3.0.tgz", + "integrity": "sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==", + "dev": true + }, + "node_modules/@shikijs/transformers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.3.0.tgz", + "integrity": "sha512-3mlpg2I9CjhjE96dEWQOGeCWoPcyTov3s4aAsHmgvnTHa8MBknEnCQy8/xivJPSpD+olqOqIEoHnLfbNJK29AA==", + "dev": true, + "dependencies": { + "shiki": "1.3.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.0.1.tgz", + "integrity": "sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ==", + "dev": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.26.tgz", + "integrity": "sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.26", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.26.tgz", + "integrity": "sha512-4CWbR5vR9fMg23YqFOhr6t6WB1Fjt62d6xdFPyj8pxrYub7d+OgZaObMsoxaF9yBUHPMiPFK303v61PwAuGvZA==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.4.26", + "@vue/shared": "3.4.26" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.26.tgz", + "integrity": "sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.26", + "@vue/compiler-dom": "3.4.26", + "@vue/compiler-ssr": "3.4.26", + "@vue/shared": "3.4.26", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.26.tgz", + "integrity": "sha512-FNwLfk7LlEPRY/g+nw2VqiDKcnDTVdCfBREekF8X74cPLiWHUX6oldktf/Vx28yh4STNy7t+/yuLoMBBF7YDiQ==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.4.26", + "@vue/shared": "3.4.26" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.1.3.tgz", + "integrity": "sha512-W8IwFJ/o5iUk78jpqhvScbgCsPiOp2uileDVC0NDtW38gCWhsnu9SeBTjcdu3lbwLdsjc+H1c5Msd/x9ApbcFA==", + "dev": true, + "dependencies": { + "@vue/devtools-kit": "^7.1.3" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.1.3.tgz", + "integrity": "sha512-NFskFSJMVCBXTkByuk2llzI3KD3Blcm7WqiRorWjD6nClHPgkH5BobDH08rfulqq5ocRt5xV+3qOT1Q9FXJrwQ==", + "dev": true, + "dependencies": { + "@vue/devtools-shared": "^7.1.3", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.1.3.tgz", + "integrity": "sha512-KJ3AfgjTn3tJz/XKF+BlVShNPecim3G21oHRue+YQOsooW+0s+qXvm09U09aO7yBza5SivL1QgxSrzAbiKWjhQ==", + "dev": true, + "dependencies": { + "rfdc": "^1.3.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.26.tgz", + "integrity": "sha512-E/ynEAu/pw0yotJeLdvZEsp5Olmxt+9/WqzvKff0gE67tw73gmbx6tRkiagE/eH0UCubzSlGRebCbidB1CpqZQ==", + "dev": true, + "dependencies": { + "@vue/shared": "3.4.26" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.26.tgz", + "integrity": "sha512-AFJDLpZvhT4ujUgZSIL9pdNcO23qVFh7zWCsNdGQBw8ecLNxOOnPcK9wTTIYCmBJnuPHpukOwo62a2PPivihqw==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.4.26", + "@vue/shared": "3.4.26" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.26.tgz", + "integrity": "sha512-UftYA2hUXR2UOZD/Fc3IndZuCOOJgFxJsWOxDkhfVcwLbsfh2CdXE2tG4jWxBZuDAs9J9PzRTUFt1PgydEtItw==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.4.26", + "@vue/shared": "3.4.26", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.26.tgz", + "integrity": "sha512-xoGAqSjYDPGAeRWxeoYwqJFD/gw7mpgzOvSxEmjWaFO2rE6qpbD1PC172YRpvKhrihkyHJkNDADFXTfCyVGhKw==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.4.26", + "@vue/shared": "3.4.26" + }, + "peerDependencies": { + "vue": "3.4.26" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.26.tgz", + "integrity": "sha512-Fg4zwR0GNnjzodMt3KRy2AWGMKQXByl56+4HjN87soxLNU9P5xcJkstAlIeEF3cU6UYOzmJl1tV0dVPGIljCnQ==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", + "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", + "dev": true, + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.9.0.tgz", + "integrity": "sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==", + "dev": true, + "dependencies": { + "@vueuse/core": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "*", + "axios": "*", + "change-case": "*", + "drauu": "*", + "focus-trap": "*", + "fuse.js": "*", + "idb-keyval": "*", + "jwt-decode": "*", + "nprogress": "*", + "qrcode": "*", + "sortablejs": "*", + "universal-cookie": "*" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", + "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", + "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", + "dev": true, + "dependencies": { + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/algoliasearch": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz", + "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.23.3", + "@algolia/cache-common": "4.23.3", + "@algolia/cache-in-memory": "4.23.3", + "@algolia/client-account": "4.23.3", + "@algolia/client-analytics": "4.23.3", + "@algolia/client-common": "4.23.3", + "@algolia/client-personalization": "4.23.3", + "@algolia/client-search": "4.23.3", + "@algolia/logger-common": "4.23.3", + "@algolia/logger-console": "4.23.3", + "@algolia/recommend": "4.23.3", + "@algolia/requester-browser-xhr": "4.23.3", + "@algolia/requester-common": "4.23.3", + "@algolia/requester-node-http": "4.23.3", + "@algolia/transporter": "4.23.3" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "dev": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true + }, + "node_modules/minisearch": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", + "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", + "dev": true + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.20.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.2.tgz", + "integrity": "sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, + "node_modules/rollup": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.1.tgz", + "integrity": "sha512-0gG94inrUtg25sB2V/pApwiv1lUb0bQ25FPNuzO89Baa+B+c0ccaaBKM5zkZV/12pUUdH+lWCSm9wmHqyocuVQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.17.1", + "@rollup/rollup-android-arm64": "4.17.1", + "@rollup/rollup-darwin-arm64": "4.17.1", + "@rollup/rollup-darwin-x64": "4.17.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.1", + "@rollup/rollup-linux-arm-musleabihf": "4.17.1", + "@rollup/rollup-linux-arm64-gnu": "4.17.1", + "@rollup/rollup-linux-arm64-musl": "4.17.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.1", + "@rollup/rollup-linux-riscv64-gnu": "4.17.1", + "@rollup/rollup-linux-s390x-gnu": "4.17.1", + "@rollup/rollup-linux-x64-gnu": "4.17.1", + "@rollup/rollup-linux-x64-musl": "4.17.1", + "@rollup/rollup-win32-arm64-msvc": "4.17.1", + "@rollup/rollup-win32-ia32-msvc": "4.17.1", + "@rollup/rollup-win32-x64-msvc": "4.17.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/search-insights": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", + "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", + "dev": true, + "peer": true + }, + "node_modules/shiki": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.3.0.tgz", + "integrity": "sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==", + "dev": true, + "dependencies": { + "@shikijs/core": "1.3.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, + "node_modules/vite": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz", + "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.1.4.tgz", + "integrity": "sha512-bWIzFZXpPB6NIDBuWnS20aMADH+FcFKDfQNYFvbOWij03PR29eImTceQHIzCKordjXYBhM/TjE5VKFTUJ3EheA==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.6.0", + "@docsearch/js": "^3.6.0", + "@shikijs/core": "^1.3.0", + "@shikijs/transformers": "^1.3.0", + "@types/markdown-it": "^14.0.1", + "@vitejs/plugin-vue": "^5.0.4", + "@vue/devtools-api": "^7.0.27", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^6.3.0", + "shiki": "^1.3.0", + "vite": "^5.2.10", + "vue": "^3.4.25" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.26.tgz", + "integrity": "sha512-bUIq/p+VB+0xrJubaemrfhk1/FiW9iX+pDV+62I/XJ6EkspAO9/DXEjbDFoe8pIfOZBqfk45i9BMc41ptP/uRg==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.4.26", + "@vue/compiler-sfc": "3.4.26", + "@vue/runtime-dom": "3.4.26", + "@vue/server-renderer": "3.4.26", + "@vue/shared": "3.4.26" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..368c03a --- /dev/null +++ b/docs/package.json @@ -0,0 +1,10 @@ +{ + "devDependencies": { + "vitepress": "^1.1.4" + }, + "scripts": { + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview" + } +} diff --git a/docs/vhs/fmt.tape b/docs/vhs/fmt.tape new file mode 100644 index 0000000..cd1bf84 --- /dev/null +++ b/docs/vhs/fmt.tape @@ -0,0 +1,20 @@ +Require nix + +Set Shell zsh +Set FontSize 14 + +Set Theme "Catppuccin Mocha" + +Set Width 720 +Set Height 400 + +Type "nix fmt -- -v -c" +Enter + +Sleep 3s + +Enter +Type "nix fmt -- -v" +Enter + +Sleep 3s \ No newline at end of file diff --git a/nix/default.nix b/nix/default.nix index 8d2322e..37da485 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -3,6 +3,7 @@ inputs.flake-root.flakeModule ./checks.nix ./devshell.nix + ./docs.nix ./nixpkgs.nix ./packages.nix ./treefmt.nix diff --git a/nix/docs.nix b/nix/docs.nix new file mode 100644 index 0000000..000c9c5 --- /dev/null +++ b/nix/docs.nix @@ -0,0 +1,31 @@ +_: { + perSystem = {pkgs, ...}: { + devshells.default = { + commands = let + category = "docs"; + in [ + { + inherit category; + package = pkgs.nodejs; + } + { + inherit category; + package = pkgs.vhs; + help = "generate terminal gifs"; + } + { + category = "docs"; + help = "regenerate gifs for docs"; + name = "gifs"; + command = '' + set -xeuo pipefail + + for tape in $PRJ_ROOT/docs/vhs/*; do + vhs $tape -o "$PRJ_ROOT/docs/assets/$(basename $tape .tape).gif" + done + ''; + } + ]; + }; + }; +} -- 2.45.1 From 73722737f6dfc53f49dbc9c7b4792e4a7f2ffcd4 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 12:32:00 +0100 Subject: [PATCH 03/32] doc: port existing content Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 15 ++-- docs/api-examples.md | 55 -------------- docs/contributing.md | 145 +++++++++++++++++++++++++++++++++++++ docs/faq.md | 19 +++++ docs/formatter-spec.md | 55 ++++++++++++++ docs/formatters.md | 143 ++++++++++++++++++++++++++++++++++++ docs/index.md | 8 +- docs/installation.md | 65 +++++++++++++++++ docs/markdown-examples.md | 85 ---------------------- docs/overview.md | 60 +++++++++++++++ docs/quick-start.md | 14 ++++ docs/usage.md | 115 +++++++++++++++++++++++++++++ 12 files changed, 627 insertions(+), 152 deletions(-) delete mode 100644 docs/api-examples.md create mode 100644 docs/contributing.md create mode 100644 docs/faq.md create mode 100644 docs/formatter-spec.md create mode 100644 docs/formatters.md create mode 100644 docs/installation.md delete mode 100644 docs/markdown-examples.md create mode 100644 docs/overview.md create mode 100644 docs/quick-start.md create mode 100644 docs/usage.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index a80bcd1..f9190d4 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -11,17 +11,16 @@ export default defineConfig({ // https://vitepress.dev/reference/default-theme-config nav: [ { text: 'Home', link: '/' }, - { text: 'Examples', link: '/markdown-examples' } + { text: 'Quick Start', link: '/quick-start' } ], sidebar: [ - { - text: 'Examples', - items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } - ] - } + { text: 'Quick Start', link: '/quick-start' }, + { text: 'Overview', link: '/overview' }, + { text: 'Usage', link: '/usage' }, + { text: 'Formatter Spec', link: '/formatter-spec' }, + { text: 'Contributing', link: '/contributing' }, + { text: 'FAQ', link: '/faq' }, ], socialLinks: [ diff --git a/docs/api-examples.md b/docs/api-examples.md deleted file mode 100644 index 691df9c..0000000 --- a/docs/api-examples.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -outline: deep ---- - -# Runtime API Examples - -This page demonstrates usage of some of the runtime APIs provided by VitePress. - -The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: - -```md - - -## Results - -### Theme Data - -
{{ theme }}
- -### Page Data - -
{{ page }}
- -### Page Frontmatter - -
{{ frontmatter }}
-``` - - - -## Results - -### Theme Data - -
{{ theme }}
- -### Page Data - -
{{ page }}
- -### Page Frontmatter - -
{{ frontmatter }}
- -## More - -Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 0000000..c5be3d7 --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1,145 @@ +--- +outline: deep +--- + +# Contribution guidelines + +This file contains instructions that will help you make a contribution. + +## Licensing + +The treefmt binaries and this user guide are licensed under the [MIT license](https://numtide.github.io/treefmt/LICENSE.html). + +## Before you contribute + +Here you can take a look at the [existing issues](https://github.com/numtide/treefmt/issues). Feel free to contribute, but make sure you have a [GitHub account](https://github.com/join) first :) . + +If you're new to open source, please read GitHub's guide on [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/). It's a quick read, and it's a great way to introduce yourself to how things work behind the scenes in open-source projects. + +Before sending a pull request, make sure that you've read all the guidelines. If you don't understand something, please [state your question clearly in an issue](https://github.com/numtide/treefmt/issues/new) or ask the community on the [treefmt matrix server](https://matrix.to/#/#treefmt:numtide.com). + +## Creating an issue + +If you need to create an issue, make sure to clearly describe it, including: + +- The steps to reproduce it if it's a bug +- The version of treefmt used +- The database driver and version +- The database version + +The cache database is stored in a toml file the ~/.cache/treefmt directory. + +## Making changes + +If you want to introduce changes to the project, please follow these steps: + +- Fork the repository on GitHub +- Create a branch on your fork. Don't commit directly to main +- Add the necessary tests for your changes +- Run treefmt in the source directory before you commit your changes +- Push your changes to the branch in your repository fork +- Submit a pull request to the original repository + +Make sure you based your commits on logical and atomic units! + +## Examples of git history + +Git history that we want to have: + +Git history that we are trying to avoid: + +
+ +Git history that we want to have + +``` + +* e3ed88b (HEAD -> contribution-guide, upstream/main, origin/main, origin/HEAD, main) Merge pull request #470 from zimbatm/fix_lru_cache + +|\ + +| * 1ab7d9f Use rayon for multithreading command + +|/ + +* e9c5bb4 Merge pull request #468 from zimbatm/multithread + +|\ + +| * de2d6cf Add lint property for Formatter struct + +| * cd2ed17 Fix impl on Formatter get_command() function + +|/ + +* 028c344 Merge pull request #465 from rayon/0.15.0-release + +|\ + +| * 7b619d6 0.15.0 release + +|/ + +* acdf7df Merge pull request #463 from zimbatm/support-multi-part-namespaces + +``` + +
+ +
+ +Git history that we are trying to avoid: + +``` + +* 4c8aca8 Merge pull request #120 from zimbatm/add-rayon + +|\ + +| * fc2b449 use rayon for engine now + +| * 2304683 add rayon config + +| * 5285bd3 bump base image to F30 + +* | 4d0fbe2 Merge pull request #114 from rizary/create_method_create_release + +|\ \ + +| * | 36a9396 test changed + +| * | 22f681d method create release for github created + +* | | 2ef4ea1 Merge pull request #119 from rizary/config.rs + +|\ \ \ + +| |/ / + +|/| | + +| * | 5f1b8f0 unused functions removed + +* | | a93c361 Merge pull request #117 from zimbatm/add-getreleases-to-abstract + +|\ \ \ + +| |/ / + +|/| | + +| * | 0a97236 add get_releses for Cargo + +| * | 55e4c57 add get_releases/get_release into engine.rs + +|/ / + +* | badeddd Merge pull request #101 from zimbatm/extreme-cachin + +``` + +
+ +Additionally, it's always good to work on improving documentation and adding examples. + +Thank you for considering contributing to `treefmt`. diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 0000000..927d995 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,19 @@ +# FAQ + +## How does treefmt function? + +`Treefmt` traverses all your project's folders, maps files to specific code formatters, and formats the code accordingly. Other tools also traverse the filesystem, but not necessarily starting from the root of the project. + +Contrary to other formatters, `treefmt` doesn't preview the changes before writing them to a file. If you want to view the changes, you can always check the diff in your version control (we assume that your project is checked into a version control system). You can also rely on version control if errors were introduced into your code as a result of disruptions in the formatter's work. + +## How is the cache organized? + +At this moment, the cache is represented by a flat TOML file where file paths are mapped to `mtimes`. The file is located in: + +``` +~/.cache/treefmt/.toml +``` + +However, we are planning to move the hash file to the destination project's root directory. + +At the end of each tool run, the cache file gets overwritten with the last formatting time entries. In this way, we can can compare the last change time of the file to the last formatting time, and figure out which files need re-formatting. diff --git a/docs/formatter-spec.md b/docs/formatter-spec.md new file mode 100644 index 0000000..a536f4b --- /dev/null +++ b/docs/formatter-spec.md @@ -0,0 +1,55 @@ +--- +outline: deep +--- + +# Formatter Specification + +In order to keep the design of `treefmt` simple, we support only formatters which adhere to a certain standard. This document outlines this standard. If the formatter you would like to use doesn't comply with the rules, it's often possible to create a wrapper script that transforms the usage to match the specification. + +In this design, we rely on `treefmt` to do the tree traversal, and only invoke +the code formatter on the selected files. + +## Rules + +In order for the formatter to comply to this spec, it MUST follow the +following rules: + +### 1. Files passed as arguments + +In order to be integrated to `treefmt`'s workflow, the formatter's CLI must adhere to the following specification: + +``` + [options] [...] +``` + +Where: + +- `` is the name of the formatting tool. +- `[options]` is any number of flags and options that the formatter accepts. +- `[...]` is one or more files given to the formatter for processing. + +Example: + +``` +$ rustfmt --edition 2018 src/main.rs src/lib.rs +``` + +It SHOULD processes only the specified files. Files that are not passed SHOULD never be formatted. + +### 2. Write to changed files + +Whenever there is a change to the code formatting, the code formatter MUST +write to the changes back to the original location. + +If there is no changes to the original file, the formatter MUST NOT write to +the original location. + +### 3. Idempotent + +The code formatter SHOULD be indempotent. Meaning that it produces stable +outputs. + +### 4. Reliable + +We expect the formatter to be reliable and not break the semantic of the +formatted files. diff --git a/docs/formatters.md b/docs/formatters.md new file mode 100644 index 0000000..46c6d0b --- /dev/null +++ b/docs/formatters.md @@ -0,0 +1,143 @@ +# A list of known formatters + +Here is a list of all the formatters we tested. Feel free to send a PR to add +other ones! + +## [prettier](https://prettier.io/) + +An opinionated code formatter that supports many languages. + +```toml +command = "prettier" +options = ["--write"] +includes = [ + "*.css", + "*.html", + "*.js", + "*.json", + "*.jsx", + "*.md", + "*.mdx", + "*.scss", + "*.ts", + "*.yaml", +] +``` + +## [Black](https://github.com/psf/black) + +A python formatter. + +```toml +command = "black" +includes = ["*.py"] +``` + +## [clang-format](https://clang.llvm.org/docs/ClangFormat.html) + +A tool to format C/C++/Java/JavaScript/Objective-C/Protobuf/C# code. + +```toml +command = "clang-format" +options = [ "-i" ] +includes = [ "*.c", "*.cpp", "*.cc", "*.h", "*.hpp" ] +``` + +Note: This example focuses on C/C++ but can be modified to use with other languages. + +## Elm + +```toml +command = "elm-format" +options = ["--yes"] +includes = ["*.elm"] +``` + +## Go + +```toml +command = "gofmt" +options = ["-w"] +includes = ["*.go"] +``` + +## [Ormolu](https://github.com/tweag/ormolu) + +Haskell formatter. Make sure to use ormolu 0.1.4.0+ as older versions don't +adhere to the spec. + +```toml +command = "ormolu" +options = [ + "--ghc-opt", "-XBangPatterns", + "--ghc-opt", "-XPatternSynonyms", + "--ghc-opt", "-XTypeApplications", + "--mode", "inplace", + "--check-idempotence", +] +includes = ["*.hs"] +``` + +## [stylish-haskell](https://github.com/jaspervdj/stylish-haskell) + +Another Haskell formatter. + +```toml +command = "stylish-haskell" +options = [ "--inplace" ] +includes = [ "*.hs" ] +``` + +## [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt) + +Nix code formatter. + +```toml +command = "nixpkgs-fmt" +includes = ["*.nix"] +``` + +## rustfmt + +```toml +command = "rustfmt" +options = ["--edition", "2018"] +includes = ["*.rs"] +``` + +## [rufo](https://github.com/ruby-formatter/rufo) + +Rufo is an opinionated ruby formatter. By default it exits with status 3 on +file change so we have to pass the `-x` option. + +```toml +command = "rufo" +options = ["-x"] +includes = ["*.rb"] +``` + +## cargo fmt + +`cargo fmt` is not supported as it doesn't follow the spec. It doesn't allow +to pass arbitrary files to be formatted, which treefmt relies on. Use `rustfmt` +instead (which is what `cargo fmt` uses under the hood). + +## [shfmt](https://github.com/mvdan/sh) + +A shell code formatter. + +```toml +command = "shfmt" +options = [ + "-i", + "2", # indent 2 + "-s", # simplify the code + "-w", # write back to the file +] +includes = ["*.sh"] +``` + +## terraform + +terraform fmt only supports formatting one file at the time. See +https://github.com/hashicorp/terraform/pull/28191 diff --git a/docs/index.md b/docs/index.md index 7c91e3f..725c9de 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,11 +11,11 @@ hero: alt: Treefmt actions: - theme: brand - text: Markdown Examples - link: /markdown-examples + text: Quick Start + link: /quick-start - theme: alt - text: API Examples - link: /api-examples + text: More Info + link: /overview features: - title: Feature A diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..38347c6 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,65 @@ +--- +outline: deep +--- + +# Installation + +There are two options to install `treefmt`: by downloading the latest binary, or by compiling and building the tool from source. + +## Installing with a binary file + +You can find the list of the latest binaries [here](https://github.com/numtide/treefmt/releases). + +## Building from source + +There are several ways to build `treefmt` from source. Your choice will depend on whether you're a [nix](https://github.com/NixOS/nix) user. + +### Non-Nix User + +To try the project without building it, run: + +``` +$ cargo run -- --help +``` + +The command will output the manual. You can run the tool in this manner with any other flag or option to format your project. + +To build a binary, you need to have rust installed. You can install it with [rustup](https://rustup.rs/). Now, if you want to build the project, switch to the project root folder and run: + +``` +$ cargo build +``` + +After the successful execution of the cargo build command, you will find the `treefmt` binary in the target folder. + +### Nix User + +[Nix](https://github.com/NixOS/nix) is a package manager foundational for NixOS. You can use it in NixOS and in any other OS equally. + +If you're using both `treefmt` and `nix`, you can go for [`treefmt-nix`](https://github.com/numtide/treefmt-nix), a special tool that makes installation and configuration of `treefmt` with `nix` easier. + +**Non-flake user** + +Here you also have two options: you can install `treefmt` with plain nix-build , or with nix-shell. + +To build the package with nix-build, just run: + +``` +$ nix-build -A treefmt +``` + +**Nix-flake user** + +If you want to use this repository with flakes, please enable the flakes feature first. To run the project with flakes without building it, you can execute the following command in the root folder: + +``` +$ nix run . -- --help +``` + +To build the project, run the following command in the root folder: + +``` +$ nix build +``` + +The `treefmt` binary will be available in the result folder. diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md deleted file mode 100644 index f9258a5..0000000 --- a/docs/markdown-examples.md +++ /dev/null @@ -1,85 +0,0 @@ -# Markdown Extension Examples - -This page demonstrates some of the built-in markdown extensions provided by VitePress. - -## Syntax Highlighting - -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: - -**Input** - -````md -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/docs/overview.md b/docs/overview.md new file mode 100644 index 0000000..56f2c60 --- /dev/null +++ b/docs/overview.md @@ -0,0 +1,60 @@ +# About the project + +`treefmt` is a formatting tool that saves you time: it provides developers with a universal way to trigger all formatters needed for the project in one place. + +## Background + +Typically, each project has its own code standards enforced by the project's owner. Any code contributions must match that given standard, i.e. be formatted in a specific manner. + +At first glance, the task of code formatting may seem trivial: the formatter can be automatically triggered when you save a file in your IDE. Indeed, formatting doesn't take much effort if you're working on a single project long term: setting up the formatters in your IDE won't take much of your time, and then you're ready to go. + +Contrary to that, if you're working on multiple projects at the same time, you may have to update your formatter configs in the IDE each time you switch between the projects. This is because formatter settings aren't project-specific --- they are set up globally for all projects. + +Alternatively, you can trigger formatters manually, one-by-one or in a script. Actually, for bigger projects, it's common to have a script that runs over your project's directories and calls formatters consequently. But it takes time to iterate through all the files. + +All the solutions take up a significant amount of time which a developer could spend doing the actual work. They also require you to remember which formatters and options are used by each project you are working on. + +`treefmt` solves these issues. + +## Why treefmt? + +`treefmt`'s configuration is project-specific, so you don't need to re-configure formatters each time you switch between projects, like you have to when working with formatters in the IDE. + +Contrary to calling formatters from the command line, there's no need to remember all the specific formatters required for each project. Once you set up the config, you can run the tool in any of your project's folders without any additional flags or options. + +Typically, formatters have different ways to say there was a specific error. With `treefmt`, you get a standardized output which is easier to understand than the variegated outputs of different formatters, so it takes less time to grasp what's wrong. + +In addition, `treefmt` works faster than the custom script solution because the changed files are cached and the formatters run only against them. Moreover, formatters are run in parallel, which makes the tool even faster. + +The difference may not be significant for smaller projects, but it gets quite visible as the project grows. For instance, take the caching optimization. It takes 9 seconds to traverse a project of 1507 files and no changes without caching: + +``` +traversed 1507 files +matched 828 files to formatters +left with 828 files after cache +of whom 0 files were re-formatted +all of this in 9s +``` + +...while it takes 124 milliseconds to traverse the same project with caching: + +``` +traversed 1507 files +matched 828 files to formatters +left with 0 files after cache +of whom 0 files were re-formatted +all of this in 124ms +``` + +The tool can be invoked manually or integrated into your CI. There's currently no integration with IDEs, but the feature is coming soon. + +## What we still need help with + +- **IDE integration:** Most of developers are used to formatting a file upon save in the IDE. So far, you can't use `treefmt` for this purpose, but we're working on it 😀 +- **Pre-commit hook:** It's good to have your code checked for adherence to the project's standards before commit. `treefmt` pre-commit hook won't let you commit if you have formatting issues. +- **Support of multiple formatters for one language:** In the current version, we advise you to avoid using multiple formatters for one and the same file type. This is because formatters are run in parallel and therefore may encounter issues while processing files. We are going to fix this issue soon, since there are cases when you may need more than one formatter per language. + +As a next step, learn how to [install] and [use] `treefmt`. + +[install]: installation.md +[use]: usage.md diff --git a/docs/quick-start.md b/docs/quick-start.md new file mode 100644 index 0000000..d5a5a65 --- /dev/null +++ b/docs/quick-start.md @@ -0,0 +1,14 @@ +# Quick start + +To run `treefmt` in your project, please follow these steps: + +1. [Install] the tool. +2. Install the needed formatters. +3. Run `treefmt --init`. This will generate the basic configuration file `treefmt.toml` containing the formatting rules. +4. Edit the configuration (see [here] how). +5. Run `treefmt` with the needed flags and options. You can check the supported options by executing `treefmt --help`. + +In the following sections we will guide you through installing and configuring `treefmt` in detail. + +[install]: installation.md +[here]: formatters-spec.md diff --git a/docs/usage.md b/docs/usage.md new file mode 100644 index 0000000..6590d8a --- /dev/null +++ b/docs/usage.md @@ -0,0 +1,115 @@ +# Usage + +You can run treefmt by executing: + +`$ treefmt` + +or, if it's not in your `$PATH`: + +`$ ./treefmt` + +Treefmt has the following specification: + +``` +treefmt [FLAGS] [OPTIONS] [--] [paths]... +``` + +## Flags + +`--allow-missing-formatter` + +> Do not exit with an error if some of the configured formatters are missing. + +`--clear-cache` + +> Reset the evaluation cache. Invalidation should happen automatically if the formatting tool has been updated, or if the files to format have changed. If cache wasn't properly invalidated, you can use this flag to clear the cache. + +`--fail-on-change` + +> Exit with error if some files require re-formatting. This is useful for your CI if you want to detect if the contributed code was forgotten to be formatted. + +`-h, --help` + +> Prints available flags and options + +`--init` + +> Creates a new config file `treefmt.toml`. + +`--no-cache` + +> Tells `treefmt` to ignore the evaluation cache entirely. With this flag, you can avoid cache invalidation issues, if any. Typically, the machine that is running treefmt in the CI is starting with a fresh environment each time, so any calculated cache is lost. The `--no-cache` flag eliminates unnecessary work in the CI. + +`-q, --quiet` + +> Don't print output to stderr. + +`--stdin` + +> Format the content passed in stdin. + +`-V, --version` + +> Print version information. + +`-v, --verbose` + +> Change the log verbosity. Log verbosity is based off the number of 'v' used. With one `-v`, your logs will display `[INFO]` and `[ERROR]` messages, while `-vv` will also show `[DEBUG]` messages. + +`--config-file ` + +> Run with the specified config file which is not in the project tree. + +`-f, --formatters ...` + +> Only apply selected formatters. Defaults to all formatters. + +`-H, --hidden` + +> Also traverse hidden files (files that start with a .). This behaviour can be overridden with the `--no-hidden` flag. + +`--no-hidden` + +> Override the `--hidden` flag. Don't traverse hidden files. + +`--tree-root ` + +> Set the path to the tree root directory where treefmt will look for the files to format. Defaults to the folder holding the `treefmt.toml` file. It’s mostly useful in combination with `--config-file` to specify the project root which won’t coincide with the directory holding `treefmt.toml`. + +`-C ` + +> Run as if `treefmt` was started in `` instead of the current working directory (default: `.`). Equivalent to `cd ; treefmt`. + +## Arguments + +`...` + +> Paths to format. Defaults to formatting the whole tree + +## CI integration + +Typically, you would use treefmt in the CI with the `--fail-on-change` and `--no-cache flags`. Find the explanations above. + +You can you set a `treefmt` job in the GitHub pipeline for Ubuntu with nix-shell like this: + +``` +name: treefmt +on: + pull_request: + push: + branches: main +jobs: + formatter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: cachix/install-nix-action@v12 + with: + nix_path: nixpkgs=channel:nixos-unstable + - uses: cachix/cachix-action@v10 + with: + name: nix-community + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + - name: treefmt + run: nix-shell --run "treefmt --fail-on-change --no-cache" +``` -- 2.45.1 From 482e4976fdbccabd22eec834fa783d7ae5c9ba6b Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 12:33:53 +0100 Subject: [PATCH 04/32] doc: update github link Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index f9190d4..b31d0ae 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -24,7 +24,7 @@ export default defineConfig({ ], socialLinks: [ - { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + { icon: 'github', link: 'https://git.numtide.com/numtide/treefmt' } ] } }) -- 2.45.1 From 097b701792ffbac1253d7f37b61e66c36be14831 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 12:39:50 +0100 Subject: [PATCH 05/32] doc: remove features on home page Signed-off-by: Brian McGee --- docs/index.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/index.md b/docs/index.md index 725c9de..624d4c5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,8 +6,7 @@ hero: name: "Treefmt" text: "One CLI to format your repo" image: - dark: ./assets/fmt.gif - light: ./assets/fmt-light.gif + src: ./assets/fmt.gif alt: Treefmt actions: - theme: brand @@ -16,12 +15,4 @@ hero: - theme: alt text: More Info link: /overview - -features: - - title: Feature A - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit - - title: Feature B - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit - - title: Feature C - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit --- -- 2.45.1 From 07989c7a04c19dcfdf1123e4496686de346efdb1 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 14:35:19 +0100 Subject: [PATCH 06/32] doc: some initial experiments with colors Signed-off-by: Brian McGee --- docs/.vitepress/theme/style.css | 42 ++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css index 42779f9..ba64ed2 100644 --- a/docs/.vitepress/theme/style.css +++ b/docs/.vitepress/theme/style.css @@ -44,15 +44,30 @@ * -------------------------------------------------------------------------- */ :root { - --vp-c-default-1: var(--vp-c-gray-1); - --vp-c-default-2: var(--vp-c-gray-2); - --vp-c-default-3: var(--vp-c-gray-3); - --vp-c-default-soft: var(--vp-c-gray-soft); + --vp-c-treefmt-orange-1: #f79433; + --vp-c-treefmt-orange-2: #f6861a; + --vp-c-treefmt-orange-3: #dd6d00; + --vp-c-treefmt-orange-soft: rgba(245, 121, 0, 0.14); - --vp-c-brand-1: var(--vp-c-indigo-1); - --vp-c-brand-2: var(--vp-c-indigo-2); - --vp-c-brand-3: var(--vp-c-indigo-3); - --vp-c-brand-soft: var(--vp-c-indigo-soft); + --vp-c-treefmt-green-1: #9de05c; + --vp-c-treefmt-green-2: #8fdb45; + --vp-c-treefmt-green-3: #73d216; + --vp-c-treefmt-green-soft: rgba(115, 210, 22, 0.14); + + --vp-c-treefmt-gray-1: #6d6e6a; + --vp-c-treefmt-gray-2: #888a85; + --vp-c-treefmt-gray-3: #a0a19d; + --vp-c-treefmt-gray-soft: rgba(136, 138, 133, 0.14); + + --vp-c-default-1: var(--vp-c-treefmt-gray-1); + --vp-c-default-2: var(--vp-c-treefmt-gray-2); + --vp-c-default-3: var(--vp-c-treefmt-gray-3); + --vp-c-default-soft: var(--vp-c-treefmt-gray-soft); + + --vp-c-brand-1: var(--vp-c-treefmt-orange-1); + --vp-c-brand-2: var(--vp-c-treefmt-orange-2); + --vp-c-brand-3: var(--vp-c-treefmt-orange-3); + --vp-c-brand-soft: var(--vp-c-treefmt-orange-soft); --vp-c-tip-1: var(--vp-c-brand-1); --vp-c-tip-2: var(--vp-c-brand-2); @@ -91,17 +106,10 @@ * -------------------------------------------------------------------------- */ :root { - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient( - 120deg, - #bd34fe 30%, - #41d1ff - ); - --vp-home-hero-image-background-image: linear-gradient( -45deg, - #bd34fe 50%, - #47caff 50% + var(--vp-c-treefmt-orange-3) 50%, + var(--vp-c-treefmt-green-1) 50% ); --vp-home-hero-image-filter: blur(44px); } -- 2.45.1 From fc8d8f31d170e5efb702316f20eaa875d85fd5b4 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 14:40:36 +0100 Subject: [PATCH 07/32] doc: add footer Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index b31d0ae..409720b 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -25,6 +25,11 @@ export default defineConfig({ socialLinks: [ { icon: 'github', link: 'https://git.numtide.com/numtide/treefmt' } - ] + ], + + footer: { + message: 'Released under the
MIT License.', + copyright: "Copyright © 2024-present Treefmt Contributors" + } } }) -- 2.45.1 From e252f6bd0cc4614823bb1eeec5be40f7fe8d4a6e Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 14:42:01 +0100 Subject: [PATCH 08/32] doc: fix bad formatter spec link Signed-off-by: Brian McGee --- docs/quick-start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quick-start.md b/docs/quick-start.md index d5a5a65..e190258 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -11,4 +11,4 @@ To run `treefmt` in your project, please follow these steps: In the following sections we will guide you through installing and configuring `treefmt` in detail. [install]: installation.md -[here]: formatters-spec.md +[here]: formatter-spec.md -- 2.45.1 From 894f90f084890519ef021d309bb03fe5576f4fa0 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 14:46:53 +0100 Subject: [PATCH 09/32] doc: move assets into public folder Fixes issues with built version of the site Signed-off-by: Brian McGee --- .gitignore | 3 ++- docs/.vitepress/config.mts | 2 +- docs/index.md | 2 +- docs/{assets => public}/fmt.gif | Bin docs/{assets => public}/logo.svg | 0 nix/docs.nix | 2 +- 6 files changed, 5 insertions(+), 4 deletions(-) rename docs/{assets => public}/fmt.gif (100%) rename docs/{assets => public}/logo.svg (100%) diff --git a/.gitignore b/.gitignore index f30e92e..448dca3 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ repl-result-* # docs node_modules -docs/.vitepress/cache \ No newline at end of file +docs/.vitepress/cache +docs/.vitepress/dist \ No newline at end of file diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 409720b..df8f9e7 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -6,7 +6,7 @@ export default defineConfig({ description: "one CLI to format your repo", themeConfig: { - logo: '../assets/logo.svg', + logo: '/logo.svg', // https://vitepress.dev/reference/default-theme-config nav: [ diff --git a/docs/index.md b/docs/index.md index 624d4c5..62c9c2d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,7 +6,7 @@ hero: name: "Treefmt" text: "One CLI to format your repo" image: - src: ./assets/fmt.gif + src: /fmt.gif alt: Treefmt actions: - theme: brand diff --git a/docs/assets/fmt.gif b/docs/public/fmt.gif similarity index 100% rename from docs/assets/fmt.gif rename to docs/public/fmt.gif diff --git a/docs/assets/logo.svg b/docs/public/logo.svg similarity index 100% rename from docs/assets/logo.svg rename to docs/public/logo.svg diff --git a/nix/docs.nix b/nix/docs.nix index 000c9c5..21cbf0c 100644 --- a/nix/docs.nix +++ b/nix/docs.nix @@ -21,7 +21,7 @@ _: { set -xeuo pipefail for tape in $PRJ_ROOT/docs/vhs/*; do - vhs $tape -o "$PRJ_ROOT/docs/assets/$(basename $tape .tape).gif" + vhs $tape -o "$PRJ_ROOT/docs/public/$(basename $tape .tape).gif" done ''; } -- 2.45.1 From 7cc49e2275e7a20258af24eb05d7763c1112a8c1 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 15:37:37 +0100 Subject: [PATCH 10/32] wip: add focs package Signed-off-by: Brian McGee --- docs/package.json | 1 + nix/docs.nix | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index 368c03a..c23fc98 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,6 +3,7 @@ "vitepress": "^1.1.4" }, "scripts": { + "vitepress": "vitepress", "docs:dev": "vitepress dev", "docs:build": "vitepress build", "docs:preview": "vitepress preview" diff --git a/nix/docs.nix b/nix/docs.nix index 21cbf0c..e60a1ad 100644 --- a/nix/docs.nix +++ b/nix/docs.nix @@ -1,5 +1,21 @@ _: { - perSystem = {pkgs, ...}: { + perSystem = {pkgs, self', ...}: { + packages.docs = pkgs.buildNpmPackage { + pname = "treefmt-docs"; + inherit (self'.packages.default) version; + + src = ../docs; + npmDepsHash = "sha256-acT9uaUhvxyM/S3hv1M9h5h2H5EpzrNbaxCYmzYn100="; + + npmBuildScript = "docs:build"; + + installPhase = '' + runHook preInstall + cp -rv .vitepress/dist/ $out + runHook postInstall + ''; + }; + devshells.default = { commands = let category = "docs"; -- 2.45.1 From 95c6cdbd578c35d569132b2d7a14572e178cf077 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 29 Apr 2024 15:44:45 +0100 Subject: [PATCH 11/32] doc: add some devshell helpers Signed-off-by: Brian McGee --- nix/docs.nix | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/nix/docs.nix b/nix/docs.nix index e60a1ad..ca777fe 100644 --- a/nix/docs.nix +++ b/nix/docs.nix @@ -1,28 +1,50 @@ _: { - perSystem = {pkgs, self', ...}: { - packages.docs = pkgs.buildNpmPackage { - pname = "treefmt-docs"; - inherit (self'.packages.default) version; + perSystem = { + pkgs, + self', + ... + }: { + packages.docs = pkgs.buildNpmPackage { + pname = "treefmt-docs"; + inherit (self'.packages.default) version; - src = ../docs; - npmDepsHash = "sha256-acT9uaUhvxyM/S3hv1M9h5h2H5EpzrNbaxCYmzYn100="; + src = ../docs; + npmDepsHash = "sha256-acT9uaUhvxyM/S3hv1M9h5h2H5EpzrNbaxCYmzYn100="; - npmBuildScript = "docs:build"; + npmBuildScript = "docs:build"; - installPhase = '' - runHook preInstall - cp -rv .vitepress/dist/ $out - runHook postInstall - ''; + installPhase = '' + runHook preInstall + cp -rv .vitepress/dist/ $out + runHook postInstall + ''; }; devshells.default = { + packages = [ + pkgs.nodejs + ]; + commands = let category = "docs"; in [ { inherit category; - package = pkgs.nodejs; + name = "docs:dev"; + help = "serve docs for local development"; + command = "cd $PRJ_ROOT/docs && npm run docs:dev"; + } + { + inherit category; + name = "docs:build"; + help = "create a production build of docs"; + command = "cd $PRJ_ROOT/docs && npm run docs:build"; + } + { + inherit category; + name = "docs:preview"; + help = "preview a production build of docs"; + command = "cd $PRJ_ROOT/docs && npm run docs:preview"; } { inherit category; -- 2.45.1 From 311e46a40922262b109f84c9217ea96f88e0f9eb Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Tue, 30 Apr 2024 12:47:33 +0100 Subject: [PATCH 12/32] doc: fix docs package build Vitepress cli does some funky stuff with the tty. Signed-off-by: Brian McGee --- docs/package-lock.json | 5 ++++- docs/package.json | 8 +++++--- nix/docs.nix | 13 ++++++++----- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 5d8c8e1..7683767 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -1,9 +1,12 @@ { - "name": "docs", + "name": "Treefmt Docs", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { + "name": "Treefmt Docs", + "version": "0.0.1", "devDependencies": { "vitepress": "^1.1.4" } diff --git a/docs/package.json b/docs/package.json index c23fc98..7855144 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,11 +1,13 @@ { + "name": "treefmt-docs", + "version": "0.0.1", "devDependencies": { "vitepress": "^1.1.4" }, "scripts": { "vitepress": "vitepress", - "docs:dev": "vitepress dev", - "docs:build": "vitepress build", - "docs:preview": "vitepress preview" + "dev": "vitepress dev", + "build": "vitepress build", + "preview": "vitepress preview" } } diff --git a/nix/docs.nix b/nix/docs.nix index ca777fe..50a921a 100644 --- a/nix/docs.nix +++ b/nix/docs.nix @@ -9,9 +9,12 @@ _: { inherit (self'.packages.default) version; src = ../docs; - npmDepsHash = "sha256-acT9uaUhvxyM/S3hv1M9h5h2H5EpzrNbaxCYmzYn100="; + npmDepsHash = "sha256-J9qTWueOcSBq7qRec6YdTuWI2VlVQ0q6AynDLovf6s0="; - npmBuildScript = "docs:build"; + # we have to use a custom build phase because vitepress is doing something funky with the ttty + buildPhase = '' + cat | npm run build 2>&1 | cat + ''; installPhase = '' runHook preInstall @@ -32,19 +35,19 @@ _: { inherit category; name = "docs:dev"; help = "serve docs for local development"; - command = "cd $PRJ_ROOT/docs && npm run docs:dev"; + command = "cd $PRJ_ROOT/docs && npm dev"; } { inherit category; name = "docs:build"; help = "create a production build of docs"; - command = "cd $PRJ_ROOT/docs && npm run docs:build"; + command = "cd $PRJ_ROOT/docs && npm build"; } { inherit category; name = "docs:preview"; help = "preview a production build of docs"; - command = "cd $PRJ_ROOT/docs && npm run docs:preview"; + command = "cd $PRJ_ROOT/docs && npm preview"; } { inherit category; -- 2.45.1 From 6c66daf26bfab12a235654cbf926585632c9a766 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 09:14:43 +0100 Subject: [PATCH 13/32] fix: devshell commands for docs Signed-off-by: Brian McGee --- nix/docs.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nix/docs.nix b/nix/docs.nix index 50a921a..e595896 100644 --- a/nix/docs.nix +++ b/nix/docs.nix @@ -35,19 +35,19 @@ _: { inherit category; name = "docs:dev"; help = "serve docs for local development"; - command = "cd $PRJ_ROOT/docs && npm dev"; + command = "cd $PRJ_ROOT/docs && npm run dev"; } { inherit category; name = "docs:build"; help = "create a production build of docs"; - command = "cd $PRJ_ROOT/docs && npm build"; + command = "cd $PRJ_ROOT/docs && npm run build"; } { inherit category; name = "docs:preview"; help = "preview a production build of docs"; - command = "cd $PRJ_ROOT/docs && npm preview"; + command = "cd $PRJ_ROOT/docs && npm run preview"; } { inherit category; -- 2.45.1 From 577c6086c0ef11bed2e655ece9c3136e3425aa2c Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 09:26:27 +0100 Subject: [PATCH 14/32] doc: refine quick start content Signed-off-by: Brian McGee --- docs/quick-start.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/quick-start.md b/docs/quick-start.md index e190258..d0783bd 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -1,11 +1,15 @@ +--- +outline: none +--- + # Quick start To run `treefmt` in your project, please follow these steps: -1. [Install] the tool. -2. Install the needed formatters. -3. Run `treefmt --init`. This will generate the basic configuration file `treefmt.toml` containing the formatting rules. -4. Edit the configuration (see [here] how). +1. [Install] `treefmt`. +2. Install any formatters you wish to use with `treefmt`. +3. Run `treefmt --init` to generate a basic configuration file `treefmt.toml`. +4. Edit the configuration, adding formatters as desired. See [here] for more info on how to configure a formatter. 5. Run `treefmt` with the needed flags and options. You can check the supported options by executing `treefmt --help`. In the following sections we will guide you through installing and configuring `treefmt` in detail. -- 2.45.1 From 2f557e364a31f711f21ac39ef6833d6a2358b0eb Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 09:32:33 +0100 Subject: [PATCH 15/32] doc: refine overview Signed-off-by: Brian McGee --- docs/overview.md | 61 ++++++++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/docs/overview.md b/docs/overview.md index 56f2c60..c2e4442 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -1,49 +1,65 @@ # About the project -`treefmt` is a formatting tool that saves you time: it provides developers with a universal way to trigger all formatters needed for the project in one place. +`treefmt` is a formatting tool that saves you time: it provides developers with a universal way to trigger all +formatters needed for the project in one place. ## Background -Typically, each project has its own code standards enforced by the project's owner. Any code contributions must match that given standard, i.e. be formatted in a specific manner. +Typically, each project has its own code standards enforced by the project's owner. Any code contributions must match +that given standard, i.e. be formatted in a specific manner. -At first glance, the task of code formatting may seem trivial: the formatter can be automatically triggered when you save a file in your IDE. Indeed, formatting doesn't take much effort if you're working on a single project long term: setting up the formatters in your IDE won't take much of your time, and then you're ready to go. +At first glance, the task of code formatting may seem trivial: the formatter can be automatically triggered when you +save a file in your IDE. Indeed, formatting doesn't take much effort if you're working on a single project long term: +setting up the formatters in your IDE won't take much of your time, and then you're ready to go. -Contrary to that, if you're working on multiple projects at the same time, you may have to update your formatter configs in the IDE each time you switch between the projects. This is because formatter settings aren't project-specific --- they are set up globally for all projects. +Contrary to that, if you're working on multiple projects at the same time, you may have to update your formatter +configs in the IDE each time you switch between the projects. This is because formatter settings aren't +project-specific --- they are set up globally for all projects. -Alternatively, you can trigger formatters manually, one-by-one or in a script. Actually, for bigger projects, it's common to have a script that runs over your project's directories and calls formatters consequently. But it takes time to iterate through all the files. +Alternatively, you can trigger formatters manually, one-by-one or in a script. Actually, for bigger projects, it's +common to have a script that runs over your project's directories and calls formatters consequently. But it takes time +to iterate through all the files. -All the solutions take up a significant amount of time which a developer could spend doing the actual work. They also require you to remember which formatters and options are used by each project you are working on. +All the solutions take up a significant amount of time which a developer could spend doing the actual work. They also +require you to remember which formatters and options are used by each project you are working on. `treefmt` solves these issues. ## Why treefmt? -`treefmt`'s configuration is project-specific, so you don't need to re-configure formatters each time you switch between projects, like you have to when working with formatters in the IDE. +`treefmt`'s configuration is project-specific, so you don't need to re-configure formatters each time you switch +between projects, like you have to when working with formatters in the IDE. -Contrary to calling formatters from the command line, there's no need to remember all the specific formatters required for each project. Once you set up the config, you can run the tool in any of your project's folders without any additional flags or options. +Contrary to calling formatters from the command line, there's no need to remember all the specific formatters required +for each project. Once you set up the config, you can run the tool in any of your project's folders without any +additional flags or options. -Typically, formatters have different ways to say there was a specific error. With `treefmt`, you get a standardized output which is easier to understand than the variegated outputs of different formatters, so it takes less time to grasp what's wrong. +Typically, formatters have different ways to say there was a specific error. With `treefmt`, you get a standardized +output which is easier to understand than the variegated outputs of different formatters, so it takes less time to +grasp what's wrong. -In addition, `treefmt` works faster than the custom script solution because the changed files are cached and the formatters run only against them. Moreover, formatters are run in parallel, which makes the tool even faster. +In addition, `treefmt` works faster than the custom script solution because the changed files are cached and the +formatters run only against them. Moreover, formatters are run in parallel, which makes the tool even faster. -The difference may not be significant for smaller projects, but it gets quite visible as the project grows. For instance, take the caching optimization. It takes 9 seconds to traverse a project of 1507 files and no changes without caching: +The difference may not be significant for smaller projects, but it gets quite visible as the project grows. For +instance, take the caching optimization. + +It takes 22 seconds to traverse a project of 40,559 files and no changes without caching: ``` -traversed 1507 files -matched 828 files to formatters -left with 828 files after cache -of whom 0 files were re-formatted -all of this in 9s +traversed 40559 files +emitted 40559 files for processing +matched 33712 files to formatters +formatted 33712 files in 22.270884528s ``` -...while it takes 124 milliseconds to traverse the same project with caching: +...while it takes **270 milliseconds** to traverse the same project with caching: ``` -traversed 1507 files -matched 828 files to formatters -left with 0 files after cache -of whom 0 files were re-formatted -all of this in 124ms +traversed 40559 files +emitted 6847 files for processing +matched 0 files to formatters +formatted 0 files in 270.53513ms ``` The tool can be invoked manually or integrated into your CI. There's currently no integration with IDEs, but the feature is coming soon. @@ -52,7 +68,6 @@ The tool can be invoked manually or integrated into your CI. There's currently n - **IDE integration:** Most of developers are used to formatting a file upon save in the IDE. So far, you can't use `treefmt` for this purpose, but we're working on it 😀 - **Pre-commit hook:** It's good to have your code checked for adherence to the project's standards before commit. `treefmt` pre-commit hook won't let you commit if you have formatting issues. -- **Support of multiple formatters for one language:** In the current version, we advise you to avoid using multiple formatters for one and the same file type. This is because formatters are run in parallel and therefore may encounter issues while processing files. We are going to fix this issue soon, since there are cases when you may need more than one formatter per language. As a next step, learn how to [install] and [use] `treefmt`. -- 2.45.1 From 17f354b88030a726e259f876e7051129fdd31f70 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 12:00:12 +0100 Subject: [PATCH 16/32] doc: improve hero gif Signed-off-by: Brian McGee --- docs/public/fmt.gif | Bin 88792 -> 33652 bytes docs/vhs/fmt.tape | 20 ++++++++++++-------- nix/docs.nix | 26 ++++++++++++++++++-------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/docs/public/fmt.gif b/docs/public/fmt.gif index 67f467d9910868225e43f5b62f5c2bd3ee236005..840d8b2f4fdfed4a1d398cdc009e33c88c31fbe1 100644 GIT binary patch literal 33652 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 Date: Wed, 1 May 2024 13:54:06 +0100 Subject: [PATCH 17/32] doc: refine usage Signed-off-by: Brian McGee --- docs/usage.md | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 6590d8a..7fd41db 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -64,14 +64,6 @@ treefmt [FLAGS] [OPTIONS] [--] [paths]... > Only apply selected formatters. Defaults to all formatters. -`-H, --hidden` - -> Also traverse hidden files (files that start with a .). This behaviour can be overridden with the `--no-hidden` flag. - -`--no-hidden` - -> Override the `--hidden` flag. Don't traverse hidden files. - `--tree-root ` > Set the path to the tree root directory where treefmt will look for the files to format. Defaults to the folder holding the `treefmt.toml` file. It’s mostly useful in combination with `--config-file` to specify the project root which won’t coincide with the directory holding `treefmt.toml`. @@ -92,24 +84,24 @@ Typically, you would use treefmt in the CI with the `--fail-on-change` and `--no You can you set a `treefmt` job in the GitHub pipeline for Ubuntu with nix-shell like this: -``` +```yaml name: treefmt on: - pull_request: - push: - branches: main + pull_request: + push: + branches: main jobs: - formatter: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: cachix/install-nix-action@v12 - with: - nix_path: nixpkgs=channel:nixos-unstable - - uses: cachix/cachix-action@v10 - with: - name: nix-community - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - name: treefmt - run: nix-shell --run "treefmt --fail-on-change --no-cache" + formatter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: cachix/install-nix-action@v12 + with: + nix_path: nixpkgs=channel:nixos-unstable + - uses: cachix/cachix-action@v10 + with: + name: nix-community + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + - name: treefmt + run: nix-shell --run "treefmt --fail-on-change --no-cache" ``` -- 2.45.1 From d9ee97a0b7e02924484ce4723ece8ac91cc5a792 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 14:00:06 +0100 Subject: [PATCH 18/32] doc: refine formatter spec Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 2 +- docs/formatter-spec.md | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index df8f9e7..e4a7295 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -18,7 +18,7 @@ export default defineConfig({ { text: 'Quick Start', link: '/quick-start' }, { text: 'Overview', link: '/overview' }, { text: 'Usage', link: '/usage' }, - { text: 'Formatter Spec', link: '/formatter-spec' }, + { text: 'Formatter Specification', link: '/formatter-spec' }, { text: 'Contributing', link: '/contributing' }, { text: 'FAQ', link: '/faq' }, ], diff --git a/docs/formatter-spec.md b/docs/formatter-spec.md index a536f4b..0b3c5f6 100644 --- a/docs/formatter-spec.md +++ b/docs/formatter-spec.md @@ -4,19 +4,22 @@ outline: deep # Formatter Specification -In order to keep the design of `treefmt` simple, we support only formatters which adhere to a certain standard. This document outlines this standard. If the formatter you would like to use doesn't comply with the rules, it's often possible to create a wrapper script that transforms the usage to match the specification. +In order to keep the design of `treefmt` simple, we only supports formatters that adhere to a certain standard. This +document outlines that standard. + +If the formatter you would like to use doesn't comply with the rules, it's often possible to create a wrapper script +that transforms the usage to match the specification. In this design, we rely on `treefmt` to do the tree traversal, and only invoke the code formatter on the selected files. ## Rules -In order for the formatter to comply to this spec, it MUST follow the -following rules: +In order for the formatter to comply to this spec, it **MUST** comply with the following: ### 1. Files passed as arguments -In order to be integrated to `treefmt`'s workflow, the formatter's CLI must adhere to the following specification: +In order to be integrated with `treefmt`'s workflow, the formatter's CLI must be of the form: ``` [options] [...] @@ -34,22 +37,21 @@ Example: $ rustfmt --edition 2018 src/main.rs src/lib.rs ``` -It SHOULD processes only the specified files. Files that are not passed SHOULD never be formatted. +> [!IMPORTANT] +> It _SHOULD_ processes only the specified files. Files that are not passed _SHOULD_ never be formatted. ### 2. Write to changed files -Whenever there is a change to the code formatting, the code formatter MUST -write to the changes back to the original location. +Whenever there is a change to the code formatting, the code formatter **MUST** write to the changes back to the +original location. -If there is no changes to the original file, the formatter MUST NOT write to -the original location. +If there is no changes to the original file, the formatter **MUST** NOT write to the original location. ### 3. Idempotent -The code formatter SHOULD be indempotent. Meaning that it produces stable +The code formatter _SHOULD_ be indempotent. Meaning that it produces stable outputs. ### 4. Reliable -We expect the formatter to be reliable and not break the semantic of the -formatted files. +We expect the formatter to be reliable and not break the semantics of the formatted files. -- 2.45.1 From 4d60509e1352ea368768325699572a120bb826cb Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 14:06:26 +0100 Subject: [PATCH 19/32] doc: refine contributing Signed-off-by: Brian McGee --- docs/contributing.md | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index c5be3d7..9254696 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -8,26 +8,27 @@ This file contains instructions that will help you make a contribution. ## Licensing -The treefmt binaries and this user guide are licensed under the [MIT license](https://numtide.github.io/treefmt/LICENSE.html). +The `treefmt` binaries and this user guide are licensed under the [MIT license](https://numtide.github.io/treefmt/LICENSE.html). ## Before you contribute -Here you can take a look at the [existing issues](https://github.com/numtide/treefmt/issues). Feel free to contribute, but make sure you have a [GitHub account](https://github.com/join) first :) . +Here you can take a look at the [existing issues](https://github.com/numtide/treefmt/issues). Feel free to contribute, but make sure you have a +[GitHub account](https://github.com/join) first :slightly_smiling_face:. -If you're new to open source, please read GitHub's guide on [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/). It's a quick read, and it's a great way to introduce yourself to how things work behind the scenes in open-source projects. +If you're new to open source, please read GitHub's guide on [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/). It's a quick read, +and it's a great way to introduce yourself to how things work behind the scenes in open-source projects. -Before sending a pull request, make sure that you've read all the guidelines. If you don't understand something, please [state your question clearly in an issue](https://github.com/numtide/treefmt/issues/new) or ask the community on the [treefmt matrix server](https://matrix.to/#/#treefmt:numtide.com). +Before sending a pull request, make sure that you've read all the guidelines. If you don't understand something, please +[state your question clearly in an issue](https://github.com/numtide/treefmt/issues/new) or ask the community on the [treefmt matrix server](https://matrix.to/#/#treefmt:numtide.com). ## Creating an issue If you need to create an issue, make sure to clearly describe it, including: -- The steps to reproduce it if it's a bug -- The version of treefmt used -- The database driver and version -- The database version +- The steps to reproduce it (if it's a bug) +- The version of `treefmt` used -The cache database is stored in a toml file the ~/.cache/treefmt directory. +The cache database is stored in a `.db` file in the `~/.cache/treefmt/eval-cache` directory. ## Making changes @@ -36,7 +37,7 @@ If you want to introduce changes to the project, please follow these steps: - Fork the repository on GitHub - Create a branch on your fork. Don't commit directly to main - Add the necessary tests for your changes -- Run treefmt in the source directory before you commit your changes +- Run `treefmt` in the source directory before you commit your changes - Push your changes to the branch in your repository fork - Submit a pull request to the original repository @@ -44,10 +45,6 @@ Make sure you based your commits on logical and atomic units! ## Examples of git history -Git history that we want to have: - -Git history that we are trying to avoid: -
Git history that we want to have @@ -88,7 +85,7 @@ Git history that we are trying to avoid:
-Git history that we are trying to avoid: +Git history that we are trying to avoid ``` -- 2.45.1 From 6070b6f6e4fb162d0602d46083cb97701fed424f Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 14:10:45 +0100 Subject: [PATCH 20/32] doc: refine faq Signed-off-by: Brian McGee --- docs/faq.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 927d995..54c09ae 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,18 +2,27 @@ ## How does treefmt function? -`Treefmt` traverses all your project's folders, maps files to specific code formatters, and formats the code accordingly. Other tools also traverse the filesystem, but not necessarily starting from the root of the project. +`Treefmt` traverses all your project's folders, maps files to specific code formatters, and formats the code +accordingly. Other tools also traverse the filesystem, but not necessarily starting from the root of the project. -Contrary to other formatters, `treefmt` doesn't preview the changes before writing them to a file. If you want to view the changes, you can always check the diff in your version control (we assume that your project is checked into a version control system). You can also rely on version control if errors were introduced into your code as a result of disruptions in the formatter's work. +Contrary to other formatters, `treefmt` doesn't preview the changes before writing them to a file. If you want to view +the changes, you can always check the diff in your version control (we assume that your project is checked into a +version control system). + +You can also rely on version control if errors were introduced into your code as a result of disruptions in the +formatter's work. ## How is the cache organized? -At this moment, the cache is represented by a flat TOML file where file paths are mapped to `mtimes`. The file is located in: +At the moment, the cache is a [BoltDB] database file in which file paths are mapped to `mtimes`. + +The file is located in: ``` -~/.cache/treefmt/.toml +~/.cache/treefmt/eval-cache/.db ``` -However, we are planning to move the hash file to the destination project's root directory. +At the end of each run, the database is updated with the last formatting time entries. In this way, we can +compare the last change time of the file to the last formatting time, and figure out which files need re-formatting. -At the end of each tool run, the cache file gets overwritten with the last formatting time entries. In this way, we can can compare the last change time of the file to the last formatting time, and figure out which files need re-formatting. +[BoltDB]: https://github.com/etcd-io/bbolt \ No newline at end of file -- 2.45.1 From 8e840a9a961082ab537f474039c64f950356a518 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 14:20:32 +0100 Subject: [PATCH 21/32] doc: refine installation Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 1 + docs/installation.md | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index e4a7295..c43deca 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -16,6 +16,7 @@ export default defineConfig({ sidebar: [ { text: 'Quick Start', link: '/quick-start' }, + { text: 'Installation', link: '/installation' }, { text: 'Overview', link: '/overview' }, { text: 'Usage', link: '/usage' }, { text: 'Formatter Specification', link: '/formatter-spec' }, diff --git a/docs/installation.md b/docs/installation.md index 38347c6..a76e178 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -4,7 +4,10 @@ outline: deep # Installation -There are two options to install `treefmt`: by downloading the latest binary, or by compiling and building the tool from source. +There are two options to install `treefmt`: + +1. Downloading the latest binary +2. Compiling and building it from source. ## Installing with a binary file @@ -12,31 +15,34 @@ You can find the list of the latest binaries [here](https://github.com/numtide/t ## Building from source -There are several ways to build `treefmt` from source. Your choice will depend on whether you're a [nix](https://github.com/NixOS/nix) user. +There are several ways to build `treefmt` from source. Your choice will depend on whether you're a [nix](https://github.com/NixOS/nix) user or +not. ### Non-Nix User To try the project without building it, run: ``` -$ cargo run -- --help +$ go run main.go --help ``` -The command will output the manual. You can run the tool in this manner with any other flag or option to format your project. +The command will output the manual. You can run the tool in this manner with any other flag or option to format your +project. -To build a binary, you need to have rust installed. You can install it with [rustup](https://rustup.rs/). Now, if you want to build the project, switch to the project root folder and run: +To build a binary, you need to have `go 1.22` installed. You can find instructions [here](https://go.dev/doc/install). + +Now, if you want to build the project, switch to the project root folder and run: ``` -$ cargo build +$ go build ``` -After the successful execution of the cargo build command, you will find the `treefmt` binary in the target folder. +After the successful execution of the build command, you will find the `treefmt` binary in the project root folder. ### Nix User -[Nix](https://github.com/NixOS/nix) is a package manager foundational for NixOS. You can use it in NixOS and in any other OS equally. - -If you're using both `treefmt` and `nix`, you can go for [`treefmt-nix`](https://github.com/numtide/treefmt-nix), a special tool that makes installation and configuration of `treefmt` with `nix` easier. +If you're using both `treefmt` and `nix`, you can go for [`treefmt-nix`](https://github.com/numtide/treefmt-nix), a wrapper that makes installation and +configuration of `treefmt` with `nix` easier. **Non-flake user** -- 2.45.1 From ad3e66166a5b1577de8999400b79e095cdc7128b Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Wed, 1 May 2024 14:24:30 +0100 Subject: [PATCH 22/32] feat: add flake compat Signed-off-by: Brian McGee --- default.nix | 17 +++++++++++++++++ docs/faq.md | 16 ++++++++-------- flake.lock | 16 ++++++++++++++++ flake.nix | 3 +-- shell.nix | 17 +++++++++++++++++ 5 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 default.nix create mode 100644 shell.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..e3a6c5e --- /dev/null +++ b/default.nix @@ -0,0 +1,17 @@ +# This file provides backward compatibility to nix < 2.4 clients +{system ? builtins.currentSystem}: let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + + inherit (lock.nodes.flake-compat.locked) owner repo rev narHash; + + flake-compat = fetchTarball { + url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz"; + sha256 = narHash; + }; + + flake = import flake-compat { + inherit system; + src = ./.; + }; +in + flake.defaultNix diff --git a/docs/faq.md b/docs/faq.md index 54c09ae..1cd3f46 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,19 +2,19 @@ ## How does treefmt function? -`Treefmt` traverses all your project's folders, maps files to specific code formatters, and formats the code +`Treefmt` traverses all your project's folders, maps files to specific code formatters, and formats the code accordingly. Other tools also traverse the filesystem, but not necessarily starting from the root of the project. -Contrary to other formatters, `treefmt` doesn't preview the changes before writing them to a file. If you want to view -the changes, you can always check the diff in your version control (we assume that your project is checked into a -version control system). +Contrary to other formatters, `treefmt` doesn't preview the changes before writing them to a file. If you want to view +the changes, you can always check the diff in your version control (we assume that your project is checked into a +version control system). -You can also rely on version control if errors were introduced into your code as a result of disruptions in the +You can also rely on version control if errors were introduced into your code as a result of disruptions in the formatter's work. ## How is the cache organized? -At the moment, the cache is a [BoltDB] database file in which file paths are mapped to `mtimes`. +At the moment, the cache is a [BoltDB] database file in which file paths are mapped to `mtimes`. The file is located in: @@ -22,7 +22,7 @@ The file is located in: ~/.cache/treefmt/eval-cache/.db ``` -At the end of each run, the database is updated with the last formatting time entries. In this way, we can +At the end of each run, the database is updated with the last formatting time entries. In this way, we can compare the last change time of the file to the last formatting time, and figure out which files need re-formatting. -[BoltDB]: https://github.com/etcd-io/bbolt \ No newline at end of file +[BoltDB]: https://github.com/etcd-io/bbolt diff --git a/flake.lock b/flake.lock index 19e8ea0..9f3c00b 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,21 @@ "type": "github" } }, + "flake-compat": { + "locked": { + "lastModified": 1688025799, + "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -163,6 +178,7 @@ "root": { "inputs": { "devshell": "devshell", + "flake-compat": "flake-compat", "flake-parts": "flake-parts", "flake-root": "flake-root", "gomod2nix": "gomod2nix", diff --git a/flake.nix b/flake.nix index fb7511e..cd2ff35 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,6 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; flake-root.url = "github:srid/flake-root"; treefmt-nix = { @@ -19,8 +18,8 @@ url = "github:nix-community/gomod2nix"; inputs.nixpkgs.follows = "nixpkgs"; }; - nix-filter.url = "github:numtide/nix-filter"; + flake-compat.url = "github:nix-community/flake-compat"; }; outputs = inputs @ {flake-parts, ...}: diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..a322436 --- /dev/null +++ b/shell.nix @@ -0,0 +1,17 @@ +# This file provides backward compatibility to nix < 2.4 clients +{system ? builtins.currentSystem}: let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + + inherit (lock.nodes.flake-compat.locked) owner repo rev narHash; + + flake-compat = fetchTarball { + url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz"; + sha256 = narHash; + }; + + flake = import flake-compat { + inherit system; + src = ./.; + }; +in + flake.shellNix -- 2.45.1 From 92f8d580159b978cc3a70a79b024df324c2f5007 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Thu, 2 May 2024 11:43:48 +0100 Subject: [PATCH 23/32] doc: update fmt.gif Signed-off-by: Brian McGee --- docs/public/fmt.gif | Bin 33652 -> 33719 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/public/fmt.gif b/docs/public/fmt.gif index 840d8b2f4fdfed4a1d398cdc009e33c88c31fbe1..0cc452963a76597b7456a3412ddeccaab98e4e00 100644 GIT binary patch literal 33719 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 Date: Thu, 2 May 2024 11:46:12 +0100 Subject: [PATCH 24/32] doc: update stats in overview Signed-off-by: Brian McGee --- docs/overview.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/overview.md b/docs/overview.md index c2e4442..f35ea28 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -44,22 +44,22 @@ formatters run only against them. Moreover, formatters are run in parallel, whic The difference may not be significant for smaller projects, but it gets quite visible as the project grows. For instance, take the caching optimization. -It takes 22 seconds to traverse a project of 40,559 files and no changes without caching: +It takes about 23 seconds to traverse a project of 40,559 files and no changes without caching: ``` -traversed 40559 files -emitted 40559 files for processing -matched 33712 files to formatters -formatted 33712 files in 22.270884528s +traversed 41273 files +emitted 41273 files for processing +matched 34311 files to formatters +formatted 14338 files in 23.679339987s ``` -...while it takes **270 milliseconds** to traverse the same project with caching: +...while it takes **239 milliseconds** to traverse the same project with caching: ``` -traversed 40559 files -emitted 6847 files for processing +traversed 41273 files +emitted 0 files for processing matched 0 files to formatters -formatted 0 files in 270.53513ms +formatted 0 files in 239.024064ms ``` The tool can be invoked manually or integrated into your CI. There's currently no integration with IDEs, but the feature is coming soon. -- 2.45.1 From e3fabb17e8bc97d31672e7b5b658fe08a2e32ba1 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Thu, 2 May 2024 11:52:01 +0100 Subject: [PATCH 25/32] doc: update usage with info about walkers. Signed-off-by: Brian McGee --- docs/usage.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 7fd41db..3a34b55 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -16,6 +16,12 @@ treefmt [FLAGS] [OPTIONS] [--] [paths]... ## Flags +`--walk ` + +> The method used to traverse the files within ``. +> Default is `auto`, where we will detect if the `` is a git repository and use the `git` walker for +> traversal. If not we will fall back to the `filesystem` walker. + `--allow-missing-formatter` > Do not exit with an error if some of the configured formatters are missing. -- 2.45.1 From aa07c0af2f47d312e73ad4302010600e14251372 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Thu, 2 May 2024 13:29:59 +0100 Subject: [PATCH 26/32] doc: add favicon Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 5 +++++ docs/public/logo.png | Bin 0 -> 11131 bytes 2 files changed, 5 insertions(+) create mode 100644 docs/public/logo.png diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index c43deca..9734dd8 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -4,6 +4,11 @@ import { defineConfig } from 'vitepress' export default defineConfig({ title: "Treefmt", description: "one CLI to format your repo", + + head: [ + ['link', { rel: 'icon', href: '/logo.png' }], + ], + themeConfig: { logo: '/logo.svg', diff --git a/docs/public/logo.png b/docs/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1324d7368ca9de6cc5dcd89beaea15e2fcf05384 GIT binary patch literal 11131 zcmXY%cQ~BQ*T?T&YpuR|XLTV&3!<(b5+!;>Cx}iE-RdN2gecLXMDM+BM6~FF=tM;C zy}z5^`~0!jz1QB??3_7s=FH6bexfwhl?m}^@c;lIRC%nR1ppw-R}cV$Vjf0rh1Qq{ zuFK=+uK_^4?cWFV+Rm07^COMBqJg`%v$gvhbGMhkn>TOxUOCynwlsHn$>;25lfElS z3jhc}ML|}_>(fq#cdM~((psQ>mc-(fi3wCtmh^o*gtQj|D=gD8JSlQJ*YQ_XY*A%? zAXXd3MT4lCI5Y}H zteQWSb32o|ntL5_a&whg_r_%CHluFJ#FrNdhseT1PeXz;QJR5H#x1U@*w?afHTJ(I z94GXoO^fBNyYm;>YaBnRNKhi?8)PrSlYd+$n%$CO)o9#dQvkO#LNcw@zC#@$ky|oP zauy^T?8MVFY=lf<%&&TXpva+|{WT;d7yV+Fu4K7DVIhVV^+ z47S=6*~YGrBGQoCKG%(fms#m2@9S{!2t!~&s*uYma3=kA)%0UjLYhp(0(e zS6El7yYltjX8!CeetKHIvC&kowN{1wBoYv2#-DUZg)}~SY%WcmgZgsBO)}3bH}VPd zhUDF(LrS>{FZ=Ji836xI=ajUv_=CEC;E8?#c}QloCIbtghE^%RjR8Joue~NZB^%B7 zO(KlL0uT;#K70^ssnb4+C~s#z7JMAIhP0R>lWE!&7hRu**(gD>K{R4R-&m0T6K93( zcMjMtS8u&*vfi(J>z0RP2Q_XStc5Fkoa>>Spz(#nh0#8(Py$JuLJ57(;mg#$5L{hW z@Ca}{kM%;kO5qg=N)ZshrhnHMY^dp{JN}Tx}yj=+(KzyPhL5Wu_RjCO@Uc3OLH>Rj#)8z#_ zaH=}(fmx05HyIGOC>5?QK0y9?g9iE;bbcyoVei!4^hKpK%7vB%kbXT&EMltZdYpmq zgYKJ8Eain|$pGiHopi_&F1G{xgg6aI;)A<9sjgP5i|Zzh3v;7$EKIY5u!u=^t%Q+5 zAdo>?@pP+gUqi73=5`R(+w%aDcmq*{X0mp7QXH*GTFy5DNC;Y*6YK}uNGFYSwfiolqsPY52$^H_)2vx zp?`;H`&}U4!YPcD>?V@r52(F^o^QVHQb_-7R%D?(5-?brtfTwVh|bu*hyLPD6LrnV zc35#qI#&}@^1GLVBbS=V*|Y%WOtKPt)0eTBC;?p{0qvv5IO_>`lenJ%&DhAF_5Q!{ zeqZ=M{_C0b(EH0X*9>yOzI$AXJ-?{H-JWpDiuKGR{Mmw8ToM%Rxjd9<5ws+^g;l9k zx=*Xsl%Y3t5K=(DD<>jAnBVKNRUfs_Q(TCxRa+~f01!N{wEh+mX-k2kIV}_V{9XR> zOVgm0zuW1=DOz5T>Y`U%5#hfc`myAW;1)UawFFF(v~<6qBSCRLueJW>PH3nU+EMA4 z4k)NbBn<2-6pqatlm(Hm2=uaj>GXJCKX?XmfAc8Ah+Q|TSRS%OKX`^M!5< zr&a)d-vAFxe})GuS(dB2hdD6?Tvi&PaT;=-&f}DF#9Acl;;8^E1Yv7PlYMb;5I{Zw z4DNKoxcxCE%I3NMtluaI?vs@cV6Hw;F?-oodEhKuf?e`=c*bnjr33+Xfl`*vUke1^ z@}Z*Y9eIqA+*gO_I-}X{bZR|wtChs-Ugi-3pH5fXsxBOL<%O?_Vy>ATc<2bnSq{&H z-W^%Nj+T2vhas3@UypU7vFr zeqa$5@siL?Ng?1UnHa4Bl9R@Z_G-7P%x7``KWr#Gh$EeYS1qN!v$IvV#P{yWvzko4 z@~nN!oY)8pI~Owu@OTsd`$h61|Jg^87!j-;R$!oZ{~#s{d)yyTnh{nr>pHxOAJ`53 zU9C3WNmGbf=_+c<_aq0(%{zyav`n9S-jwR^&^j5-$N`j+&C7UNc6Cfs?z#Ej9>1(_ zu-bIW)sBu<;CRSTZdn&5$B1srSZ`@z=zm{V3(Os#zy6l%bi5~f{nCK1hoYQb8RLiL zLxFT_Z25&DuBYl@1(8xMp;NHy6N;n1w@RB@nm%$a0{CAwB z-bD3(nJQF9$z??zQiP@K&_a&)x-NNstPRgwPdJ2(xb5wC_J|te50;o;)GsVa%OuT@ zet2^<8+I6Vj+}P#%ZBW$u8Q4NZeKpPCZweOluUxcj&opu>Ru9&NE83KD|flzb?@~K z(0+y)OtU4lwt8lM-2)z2mQ;^D_y7nQ^&fHLSNbI^mD0e()9N%{s>zu`|L1pN{1f$h z-wxFN>%qn*inkv`>VW$Jem74&C(cq`V$@o?Xb-MSFe^F8V5~cxVM>K1BP~{|%kH3n z9(5(2n9$-=o<3UpXhH2Bfc5Y!V;1luM751P_+wC!bg=QuCBot)|K*X*O@vzR$>$9S zx?;}1XYey?4PnAqy2v0NAv95rPnu@B%L;9x&uTpq$5TpGmMPOvWRhJ#f_f29>l9ra zs)u#$n(m2HvBBZiA{%etyc4V^VD)}nGcv<@d|QC!a^}#xhN=G5PYqgA;5NRqg%mYW zlVQ8TFFrP#?Y>a(JSU1vF`P9c4K$_lyrwVOlzY(B@V2Sxs+8s=Dx4DI#L|w)4?fhP z_Kq`z`j-j)4vF`rL1?6ixwJHB`j1X}1L14H{|f2WQ?0~@9E%6_ISvmB8iWCl2!H_NflEqwK8s;)uqR;I~w{yEm%IYh^A zjKWn5efQ!33vg!oZH4WJ8O95nWFH2=`leyYMyya}N0Ls;m!|hbgC&hEvS3&AY|= zn~AvOSVYnSo^r5X@GwChxv5=+mcTN5<8>;9=+L}FPj=skht&bGsK%eS0iAzWGlIYj zv#Z^in))g9R%BGnSt$-BfC@>rv&U|_hp7hf1TTA?6S#7}if{_+7@*eEDu*G3J4}Q9 z3ZyvDdBp|Xz zU~spns9uhO;2k4=pTry|qiLxv8ngb`b8 zBZ~s#dXEI5<`+R-L-_#(q*ojO{-o2na1bN5+3KN3;d><;AAGr_6_EklU=0FB8WS)F zkHBtVjKU|4#hV5pUq@;QiY@SdA7_?(_sa*(WZARZzdly9kN6p!LOq2>P0K%t`j!w{ za$4#FK9kZ6TVKkvPzTTGPU%J8G2f*BDS05wPJqZtiGFJFHs&|$tM8i?4*HDM9DtOR zM#Lp2!3_;M(CM2=sSBJT^%-yH_h&b!VI1NfD{c)#3r zma~gc%D7@@+|Z4tF5G`-YKu!R8e`tpp)A=kRZ;{IlJY)^%i5{s=LM1>|8f_c+VsSZ zQ%n5qa!)`=O6>%tA%R6q?0^Wt#v+g}^)Q}+qNq#S(cVN4k{u|wMgiEBH$4SNo21so zZzVrC6>g0Mn(Ij>w%#b`+yG*#mCYU`r8Q%b~ia-F_F1P z)H7#KcQ&>{&t}rzl~JRQ)1Xt{1Y5q)s!rJ_;A>yz{6C0r@1JXD|#-ZfB(kC^7*;}6v)QAClm$MrB0{a-J%L^c)s{{(p z@FK#=o;4HXw|$g(z4GdK_-3)ty;Zj+=66blOQQe!+_`|5_wcK<;H9Ye^rFiK2NggP z2b9`t%M!cgzgO{1k-p>bOD5$VB56p}^}0VWoahPoJ^X%b5CFH-(IECU=~%D?qN_MI zB$!3FT#+%y+jm%^<`uN@>0+_RrKX=>&zlBs8^?*o@KXtt?BDSlF(sD_5<=yd3x)8~ zbEmSOPBxFyEbCMwT4kHtT+y>{$M&%@9X>^kMc#0k zR5Daem3p%I(qYGRsLQ-fC})#;D43`^d!VyMmE(U6ZzY3-yS;YFu+r^_6PJWCVxzAp z0qU2+*)Lj32Gwb%`-Ug3ubX<+y(zc7nhOtNqs!^zzb`_f-Auo6oz}1G#C5m0UWp=>yItI>5A`4=`I}dJB6YBm%81RH*v5`-rQ2PHiiBJAkC|B?Vyzw z;QwihByPBQo9j7s?Z6tt4BHEJE4f3Grk1q{#jdR`|GRc#oBfn;`pb&^5`4&i<$I@n zk8qY)Z_EY>gOU-aKE&n$s$xxQDr7#|mmjWlkD2L4;K{~bdE!+ee$pipvn3Ge0sXO- z>$g+wcW*3jcWyM8oYy}81=)QkSw#2jp}A>l(|g0`=F=v@eq zG`q5q_NE5vqpE=k#hUq-G3+qT+}hEIp`$uI4KNy&fU}fO{h3?$BfUA6ZsDRqu!|rE zlgjwX8xBcaK!9dG`x&Dop!-;s;>I+kI0Z6cPA@A)*5x$u>NjLBqrS}>P^D8tYtuP% zC@g$3xH{4$eI$vi(^0+=>_Q8zsy4$0P@`YQET!DL7E(4hE{eOw{tQ#6Dd?nyW#3g0 zNPoyQ)^&aXs40={|G`u^m>44VtMDbK#pn_&sm`tMQfRRwVZzc1Vw=%K?s!n9{?I9& zuL}?qfiXM|3;;#?3s@=1h+=TC+#!Yi>ZC^Q6ipD71rwaa)+%z}Z`<(r-tfKCg@T~s zDcqMFjspE%QWO4Q~bp93uGtvn;0d%#1RK5tS0n*X%<0=}Jh$Z=|fD?0J6^Vg2v_IDz6 z5rW^~zB^i7r^Aqq z%`|?PoRq*LUTsZ*2bSJs!0$p8dDD>ff@$H}kgkPCkGC_hM5iMT_pwGs2WA^CKgr?g zJZ5%tp#N05wyh$&PmxHR&%y8s;Agd~#^T%wWH;iRWq)U6Yxh(gWZ=zXzRgPvIOIv! ztAijpNdn^7E|}+I6DmVa=q(~5^Y z+06ZZLltU=84I<~@)sFXo&g9#YiBs0A{n6*@eB?pkH&F1+B7DiwgOEz;virb( zyR6C}e?Ybrq{K)#IQ(HS39w#0T|`EeNm7ZffS4N56Y zL(~c>9SENOT56cYQIi6S!XLmUEOe}YB;shkRz!?ZV85&`ofUWMQcCIBd?hEh`AH~u0jN|KD5u>|&lB@XiM#fch9FWgi z2St)aBx4gSYJM*`QPi&Sel5ZQ&TkVZfJ(zgGw-C7zH-W?Mx}2nT3?QH5z1&z>^;&# zE(d?qq;Fw3@UMygb>UQGFxQ=OF#*B_RzBWUq*31WeP|)d+1upI$$j)h zh|DlKI~et}U!dr4e6t9R*;W$Tw@rter$oQToUNRH%F5lkh`VZMh;${&<*s1vWH;@3 zWhG1!Tl8$*LkS{90RT17^|?iZid0lx50K4}sNa_Vv14pK>jb}2+r#v%xX`^VXzqhe zg5Ro?-cIJg#cJER?WuBPrD#PyJE9Z6ig;<-V84x}WC5&+oC>O2=FQV9$4y~sz;>!0 zrkZU!po_U;Oxth29)5X1+!@V--=XwTn)djq<_@P&rH)y+AYG%bF_52-e%%^)%0Shm zay!jbPJCtEa?iZm}Dq4A^z{uh?~8Fl4{ za_HunM_vTr$@>5ijSs-9>iUOqv1jQqC_ks-N;-B#O!Fl5HHZQtAO&@JMw~79=dp3O z>y~ir2tsEAq^bEasF%&ubt%d)!p?TnLvK&1+Ji>f7GBtV(#e>+RfmsaZEFWmtS2Nu za$a`5MfQQ7u9sm%9TQfyAbsOQDWF(qo?&oS?4<^wS*UfcAu-xACuT+p7k8jjFE3GFAt?GGCYP(Z<8v_SUURB|c!Y!k3b9X*{Ru2^ zmK!+E{~4}BXKq8p1zn_kwQkM-nqOM6n6$GGkkl^fJ!qAa4 zaCW~y7m+%~KYvO-URg_&&FY}SWO12TH{m7=!&-cV)Rp7 zxJ4ces0I~BUm3uQ5>y;I+O#@Maxi*AMN1`Ocpu~qyyfAeP$qe`PEBSr<|ft5Za&mwJPDYVzUHbNfncoDx{+mYR9ZF5O% z8%ZF`2vX$~$6{cLT2JVMG0^egn^L1~Tj;ZKkQ|l`wv6be>@j2}YOx6{$MdYMVSrwf zyK;=84?-S_!o5#6V&20~^7vl{{AO0>wcVueYo*@gM)Mf%hhDdQ<;8P`Nv^2RM07-R z(q90~k&^oX7zC7{EC6O>VOoPHB<8Y(cp`8Bub3@`PGHcD1OyM=EDR{)PxP*zR{41! zFkTnh7BuVN>T2uH!%GchU1LhdoM~RA=G~Z#(5D^qGa|zUu z1Tg=Z7{?wGd;q9x)?L~X=i@+fGWcisUTZR<0o{^eWQ>pslr;3U+(h7g8g4OSRFMxc zia7`=TL{gKT_neh9LfkF{^fbIYIU7#0ib*ViyHYG2zF5?2u6|T;Q-%QVFv(Yd9Ly+ zB@!nIhaXr~3*f~x&^4=6cSrZ2l+?D^F-{nY=@Wm(XVV(Jx+KoXb+!#bM;nu$s!LXH78C<0b5V8D58*OUC| zV^!;45H&7}Baqe>PmU)?H*Y43GQe%#<10A?1n?6y04x|I`5G@oJszOnp)R>|2Z{qD zO9itxTW+iDvMiAdg9wS$=j0E51$6fhiYJH1=0DpN54}F;)yzLf+E?CuRE@|M3GV~x zZ>4CX8BtnuC4|iZ^-l;8G66!>RCh$B#Sf+mSiP6|iR8QhbP z1;{c!Aa&y|s`H#mYIa$ZX5&!@@>Q3~ULt84-V~dLt5ll$+>-f%XIPtmm+s!1P| zx8+}T1(-Tup$C4~v`;%JDK%A?f4DL zz-TXhCr=%-%RE&KHo6&fQ<^8QVZA+UR1S~|fa^5B$id)I&SZ0n_l>}opBRKtxO4?5>cT=Y7 z8{P^_pG7bnb4vTU?A@yroZ;r*jq6=}dtVro6rb?M@7I>D8M>Pi)!R!r%5C8`TeO^` zh3Tiz;`6`Gmc==kl=rRz(ZK-M)P0PyxfUg3+u~m~_G$khI^5GkFD|n!OVK3AM zFbAZ<-9ZIMuDG#Z9h-j)!la5djYNdXsYK{%4DTWv;$N zIoY>^@{$Adz4ch^i~qLOJ{SB-=N5RYwWxgZvUJGGw86!X6bVGP5&Nf#}kg|JCW3PzN-0 zr;!ieH)TBjb83e0obg-NBv~c7TITT0VSVJ%2H0@*0L5!~BsUGj~e z1mw93apbsS{asmx0?xY~FH&ZT>itovl+yJVBB;IKe8+B-XeD+m&y+=2cL6m+i2J4% zPm~jZgDd@s{*Usklj5+VjPQ!|ZESnd!07D2=rj$S+Z4ThXz1kkzxqr-%D#>O-A2HE z0Zrx$R2x~l@-(GXb8n!4c~{X021nga4$00#m!0U#Jlu^3RqD8!1F; zx(%n&_&SLFvDG8%MPfnQ_UAty2hcL*{gX28Ld%_jb11-rGuuTQHRr^Jsl?mZw%>!D zpgl+*f8jfc|M{BsMbcPc&35>Y9goyU_#RR=FB&~>CQv?LR2`3dY`UWIUv>pmWye(V zP;SJZ-(>M>>L-lLOsLd@5Qk~w{e7y6!gTu=XCbFACY`pmmiDlY@4XPgMb^5&i?&6$ zjI&6M<*u}d2xXgB1a;)}=f@nA1PmAm*Nu63e`6(O^5JGVC~ib-pIh?uQw#utIqm(*oKoo!~~p;9nxN{m2A4UlG{}=YHjGWunkHXEReN z15XRCCxw%sWGTz1kMF?)sZigw9!4A70^-#VL|1h!bJ{V*?)AM!f}|06x^)(p&;tXh zz}<9_7@z!Q2tX}%578~9a4va&=-CEXTyPf7OIs&IJ_9L$SN9e5&JrFnur2-g(Xw`} z;mffz8V~00{oEtcO8k^qh<~tP{$B`K)wAj(O#bRbYI)xihi?4*KGJVU2px=8?xZ*M z+l!$R-F`PYf~mgXXZmrdPoI+lrdVdI!=wQ6e}Y^8ZoH!`oi>pNOJZ7V^#qIX^=FH< zqaS~VeTF_iGqv>sQCl6XY}weA1prINB0Jp13fwIWqn%rWM?G-KZ`}V%+p9wU+<>2k zji8(Uu!m6EXS9WO+Y#q3xgQO>0c242iG+_yUfH_D0pE~Oj#&hn`iFgl+irZn;}Kfz z3?p&B8ZTTFP67zre#A}2~j~K0x?n&`6zIRtnvZJBt4hcpDjU7#Qkz?w-W(P@A z1U{eh-r_ShE*BTHMNJ;>ovFxn<^!dd?#unId4ez4qY7Ugu&3fc94yu!l&!bV8T#L5 z+xmd0|NPU@Z978-&g0cu0vlhQ3x4365#~LAd{2@f^{4wg(Nh3;j=Ej`rz~X|y_uKL z_jY74R04ocg^G1Z5Cf4-Rzx~dwc`j4%F{F#so!P!&g`Tk|{176#+p~jGeO?1#wu%8ADcH zFKa$+OvydLMxe^vkEv#0hoP9@zQm z?Vq8&I#u@$!x?oK!F8T856Ngj`YphCBH1^>}_`q~GqTzR)_ZZt;DG z&`n9%k$Oy^{}Z(GYVsclEEDl-dHzQjG<^Ns}CfdcSzy<)}Niw{rDA@3#oPkc$RjZfdOExuwIa zmMwK5jN(s<&$Q^yo3e+qqBUEe#D_?l4YLjCxE>u2*6_XpG@;`%$*f_{<+lS9)uIwX zt?#~!j32pkN#$&DK%H>R>bU5EQ0^Oyg3YWYZ9VJ$S{|?Im)91iCD1)yy8bum$lAHi zzVU(t#Bg zFgCr1mmOmi=dt!*3QDmMcVOg|GxZ21W84Z9bsHuuRZo>8h8uMLN&HBfOPH zp%CB$A8W#5h}W&ICVuV1*Sho=`IvlVWydtn+5yM>;O*`s4CK+w0LM@%W%i=#u0awY zzcJ#g5akGrJ}PWU2rgsk{m#jfl>)10P-bscjFy-Y@SnoiMQLz;USPj`=m!6LZZ7l3 z8iN!lt?k1Y0H`6Rtd~@3imSxG$ z#YpTdbBI2Lr+62?y#A0Nxx6CBX__B5ROpHg`x}f1%Jwg7T1| zrna?y-@Ai5z-s0e9~UFfCot`q81t2c2(?exH+x1*0%SG49Q@n#_81S?JF|~=X`+gn z+ik`T+QT;`_1+AJAu|jrtyfG*m-&G48(LPQU3tL<{N*tc(_72uVF~ZlkkZm5Gq;RP zz}u%@niTUbGbaH7Z6u&V)_)itr^BTfv_JX9jz3>eGj3=M=zXMJJ(LDG6^|kk{=}Q~-33USphGNkANW zaW1AKH|Z>&HGr>KYxSM5ChPPye0dwg*#Y=dtzxk{tDe?I#98VDP}ezni?EQ$WTJ0H z#~}cJm?j=EMzE*-zD_-hEqWIjq(pZevpWC!_BqSdR}2V;yl>dDYY{UN$hp7R89@vA zB4-40r7`@zbXS7LiTugH;Ojeed~7u9Bbt#$PJ)739k8Z9n25dg1+tJwcT8=#Bbdb! zpdWio8)qHZWSI8gkugn&J`cvmAe1P@I7crgA%6yR)`WTEH;BpVdKVVyoP7Z19j5n+tc~VP4wmKx zPkeW{C&`Mhcxs^6s>j~Yi#lEiCb00`wr19pTVQvhfGF0!q3_ih(C&+9I{KpJTX6yh z*_u1~9zz$k92}qcBKX? zZbj|8NYmXi5ibbm&if|UVY2{^O2ac>EMGBR2EYU3X~rW*O1=&YuABbD-{_97|KX?N b2X`RZzlz7nG7Nt);4Gk`sIE{hXBPZ_+HI~+ literal 0 HcmV?d00001 -- 2.45.1 From 166a919fee62c6733bea5653fb51726240c010e1 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Thu, 2 May 2024 13:41:10 +0100 Subject: [PATCH 27/32] chore: remove flake-root input No longer needed Signed-off-by: Brian McGee --- flake.lock | 16 ---------------- flake.nix | 1 - nix/default.nix | 3 +-- nix/treefmt.nix | 2 +- 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index 9f3c00b..f03a593 100644 --- a/flake.lock +++ b/flake.lock @@ -54,21 +54,6 @@ "type": "github" } }, - "flake-root": { - "locked": { - "lastModified": 1713493429, - "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", - "owner": "srid", - "repo": "flake-root", - "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "flake-root", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -180,7 +165,6 @@ "devshell": "devshell", "flake-compat": "flake-compat", "flake-parts": "flake-parts", - "flake-root": "flake-root", "gomod2nix": "gomod2nix", "nix-filter": "nix-filter", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index cd2ff35..f88119b 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,6 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; - flake-root.url = "github:srid/flake-root"; treefmt-nix = { # todo switch back to numtide/treefmt-nix once merged url = "github:brianmcgee/treefmt-nix/feat/pipelines"; diff --git a/nix/default.nix b/nix/default.nix index 37da485..809fa71 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -1,6 +1,5 @@ -{inputs, ...}: { +{...}: { imports = [ - inputs.flake-root.flakeModule ./checks.nix ./devshell.nix ./docs.nix diff --git a/nix/treefmt.nix b/nix/treefmt.nix index 698b459..4995e6c 100644 --- a/nix/treefmt.nix +++ b/nix/treefmt.nix @@ -8,9 +8,9 @@ ... }: { treefmt.config = { - inherit (config.flake-root) projectRootFile; flakeCheck = true; flakeFormatter = true; + projectRootFile = "flake.nix"; package = self'.packages.default; -- 2.45.1 From b01ea779aaf0b21474ae69bbc20a1499946414f2 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Fri, 3 May 2024 13:27:02 +0100 Subject: [PATCH 28/32] doc: add init gif Signed-off-by: Brian McGee --- docs/index.md | 2 +- docs/public/fmt.gif | Bin 33719 -> 0 bytes docs/public/init.gif | Bin 0 -> 78154 bytes docs/public/treefmt.gif | Bin 0 -> 33906 bytes docs/vhs/fmt.tape | 24 ------------------------ docs/vhs/init.tape | 29 +++++++++++++++++++++++++++++ docs/vhs/treefmt.tape | 36 ++++++++++++++++++++++++++++++++++++ nix/docs.nix | 36 +++++++++++++----------------------- 8 files changed, 79 insertions(+), 48 deletions(-) delete mode 100644 docs/public/fmt.gif create mode 100644 docs/public/init.gif create mode 100644 docs/public/treefmt.gif delete mode 100644 docs/vhs/fmt.tape create mode 100644 docs/vhs/init.tape create mode 100644 docs/vhs/treefmt.tape diff --git a/docs/index.md b/docs/index.md index 62c9c2d..16543cb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,7 +6,7 @@ hero: name: "Treefmt" text: "One CLI to format your repo" image: - src: /fmt.gif + src: /treefmt.gif alt: Treefmt actions: - theme: brand diff --git a/docs/public/fmt.gif b/docs/public/fmt.gif deleted file mode 100644 index 0cc452963a76597b7456a3412ddeccaab98e4e00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33719 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 L?0^4*@#OynY;*pQ literal 0 HcmV?d00001 diff --git a/docs/vhs/fmt.tape b/docs/vhs/fmt.tape deleted file mode 100644 index e659dc2..0000000 --- a/docs/vhs/fmt.tape +++ /dev/null @@ -1,24 +0,0 @@ -Require treefmt - -Set Shell zsh -Set FontSize 11 - -Set Theme "Catppuccin Mocha" - -Set Width 320 -Set Height 220 -Set Padding 20 - -Type "treefmt -c" -Sleep 1s -Enter - -Sleep 3s -Enter -Enter -Sleep 1s - -Type "treefmt" -Enter - -Sleep 5s \ No newline at end of file diff --git a/docs/vhs/init.tape b/docs/vhs/init.tape new file mode 100644 index 0000000..5c9591d --- /dev/null +++ b/docs/vhs/init.tape @@ -0,0 +1,29 @@ +Require treefmt +Require nano + +Set Shell zsh +Set FontSize 14 + +Set Theme "Catppuccin Mocha" + +Set Width 720 +Set Height 360 +Set Padding 20 + +Hide +Type "TEMP_DIR=$(mktemp -d) && cd $TEMP_DIR && clear" +Enter + +Show +Type "treefmt --init" +Enter +Sleep 2s + +Type "nano treefmt.toml" +Enter +Sleep 5s + +Ctrl+x + +Hide +Type "cd && rm -rf $TEMP_DIR" diff --git a/docs/vhs/treefmt.tape b/docs/vhs/treefmt.tape new file mode 100644 index 0000000..4f5e061 --- /dev/null +++ b/docs/vhs/treefmt.tape @@ -0,0 +1,36 @@ +Require rsync +Require treefmt + +Set Shell zsh +Set FontSize 11 + +Set Theme "Catppuccin Mocha" + +Set Width 320 +Set Height 220 +Set Padding 20 + +Hide +Type "TEMP_DIR=$(mktemp -d) && rsync -av $PRJ_ROOT/test/examples/ $TEMP_DIR && cd $TEMP_DIR && clear" +Enter +Type "alias treefmt='treefmt --allow-missing-formatter' && clear" +Enter +Show + +Type "treefmt -c" +Sleep 1s +Enter + +Sleep 3s +Enter +Enter +Sleep 1s + +Type "treefmt" +Enter + +Sleep 5s + +Hide +Type "cd && rm -rf $TEMP_DIR" +Enter \ No newline at end of file diff --git a/nix/docs.nix b/nix/docs.nix index 9232186..874b1f7 100644 --- a/nix/docs.nix +++ b/nix/docs.nix @@ -51,30 +51,20 @@ _: { } { inherit category; - package = pkgs.vhs; + name = "vhs"; help = "generate terminal gifs"; - } - { - category = "docs"; - help = "regenerate gifs for docs"; - package = let - treefmt = pkgs.writeShellApplication { - name = "treefmt"; - runtimeInputs = [self'.packages.treefmt] ++ (import ./formatters.nix pkgs); - text = '' - treefmt -C "$PRJ_ROOT/test/examples" --allow-missing-formatter "$@" - ''; - }; - in - pkgs.writeShellApplication { - name = "gifs"; - runtimeInputs = [treefmt]; - text = '' - for tape in "$PRJ_ROOT"/docs/vhs/*; do - vhs "$tape" -o "$PRJ_ROOT/docs/public/$(basename "$tape" .tape).gif" - done - ''; - }; + + package = pkgs.writeShellApplication { + name = "gif"; + runtimeInputs = + [ + self'.packages.treefmt + pkgs.rsync + pkgs.vhs + ] + ++ (import ./formatters.nix pkgs); + text = ''vhs "$@"''; + }; } ]; }; -- 2.45.1 From 926c1b20397859da12bff622fcc927ca50b50920 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Fri, 3 May 2024 13:30:40 +0100 Subject: [PATCH 29/32] doc: change project url to github.com/numtide/treefmt.go Signed-off-by: Brian McGee --- docs/.vitepress/config.mts | 4 ++-- docs/contributing.md | 4 ++-- docs/installation.md | 2 +- flake.nix | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 9734dd8..f5b264a 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -30,11 +30,11 @@ export default defineConfig({ ], socialLinks: [ - { icon: 'github', link: 'https://git.numtide.com/numtide/treefmt' } + { icon: 'github', link: 'https://https://github.com/numtide/treefmt.go' } ], footer: { - message: 'Released under the MIT License.', + message: 'Released under the MIT License.', copyright: "Copyright © 2024-present Treefmt Contributors" } } diff --git a/docs/contributing.md b/docs/contributing.md index 9254696..b0b3c3b 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -12,14 +12,14 @@ The `treefmt` binaries and this user guide are licensed under the [MIT license]( ## Before you contribute -Here you can take a look at the [existing issues](https://github.com/numtide/treefmt/issues). Feel free to contribute, but make sure you have a +Here you can take a look at the [existing issues](https://github.com/numtide/treefmt.go/issues). Feel free to contribute, but make sure you have a [GitHub account](https://github.com/join) first :slightly_smiling_face:. If you're new to open source, please read GitHub's guide on [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/). It's a quick read, and it's a great way to introduce yourself to how things work behind the scenes in open-source projects. Before sending a pull request, make sure that you've read all the guidelines. If you don't understand something, please -[state your question clearly in an issue](https://github.com/numtide/treefmt/issues/new) or ask the community on the [treefmt matrix server](https://matrix.to/#/#treefmt:numtide.com). +[state your question clearly in an issue](https://github.com/numtide/treefmt.go/issues/new) or ask the community on the [treefmt matrix server](https://matrix.to/#/#treefmt:numtide.com). ## Creating an issue diff --git a/docs/installation.md b/docs/installation.md index a76e178..8c0c739 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -11,7 +11,7 @@ There are two options to install `treefmt`: ## Installing with a binary file -You can find the list of the latest binaries [here](https://github.com/numtide/treefmt/releases). +You can find the list of the latest binaries [here](https://github.com/numtide/treefmt.go/releases). ## Building from source diff --git a/flake.nix b/flake.nix index f88119b..c4e5fa8 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Treefmt"; + description = "Treefmt: once CLI to format your repo"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; -- 2.45.1 From 1002f052e19148be02c0858941a2cf0cd1032ff2 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Fri, 3 May 2024 13:33:33 +0100 Subject: [PATCH 30/32] feat: update module go version to 1.22 Signed-off-by: Brian McGee --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index dd6a8f1..e340f4b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module git.numtide.com/numtide/treefmt -go 1.21 +go 1.22 require ( github.com/BurntSushi/toml v1.3.2 -- 2.45.1 From 28ec6f8f92782330a156ea6ddf0caa28db659cc1 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Fri, 3 May 2024 13:35:30 +0100 Subject: [PATCH 31/32] feat: upgrade modules Signed-off-by: Brian McGee --- go.mod | 42 ++++++++++++------------- go.sum | 43 ++++++++++++++++++++++++++ gomod2nix.toml | 84 +++++++++++++++++++++++++------------------------- 3 files changed, 106 insertions(+), 63 deletions(-) diff --git a/go.mod b/go.mod index e340f4b..07896fc 100644 --- a/go.mod +++ b/go.mod @@ -5,26 +5,26 @@ go 1.22 require ( github.com/BurntSushi/toml v1.3.2 github.com/adrg/xdg v0.4.0 - github.com/alecthomas/kong v0.8.1 - github.com/charmbracelet/log v0.3.1 + github.com/alecthomas/kong v0.9.0 + github.com/charmbracelet/log v0.4.0 github.com/go-git/go-billy/v5 v5.5.0 - github.com/go-git/go-git/v5 v5.11.0 + github.com/go-git/go-git/v5 v5.12.0 github.com/gobwas/glob v0.2.3 github.com/otiai10/copy v1.14.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/vmihailenco/msgpack/v5 v5.4.1 - go.etcd.io/bbolt v1.3.8 - golang.org/x/sync v0.5.0 + go.etcd.io/bbolt v1.3.9 + golang.org/x/sync v0.7.0 ) require ( dario.cat/mergo v1.0.0 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/charmbracelet/lipgloss v0.9.1 // indirect - github.com/cloudflare/circl v1.3.3 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/charmbracelet/lipgloss v0.10.0 // indirect + github.com/cloudflare/circl v1.3.8 // indirect + github.com/cyphar/filepath-securejoin v0.2.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -33,23 +33,23 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rivo/uniseg v0.2.0 // indirect - github.com/sergi/go-diff v1.1.0 // indirect - github.com/skeema/knownhosts v1.2.1 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/skeema/knownhosts v1.2.2 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.16.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/tools v0.14.0 // indirect + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/tools v0.20.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 30f3ab7..dee10ee 100644 --- a/go.sum +++ b/go.sum @@ -5,14 +5,20 @@ github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= github.com/alecthomas/assert/v2 v2.1.0 h1:tbredtNcQnoSd3QBhQWI7QZ3XHOVkw1Moklp2ojoH/0= github.com/alecthomas/assert/v2 v2.1.0/go.mod h1:b/+1DI2Q6NckYi+3mXyH3wFb8qG37K/DuK80n7WefXA= github.com/alecthomas/kong v0.8.1 h1:acZdn3m4lLRobeh3Zi2S2EpnXTd1mOL6U7xVml+vfkY= github.com/alecthomas/kong v0.8.1/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U= +github.com/alecthomas/kong v0.9.0 h1:G5diXxc85KvoV2f0ZRVuMsi45IrBgx9zDNGNj165aPA= +github.com/alecthomas/kong v0.9.0/go.mod h1:Y47y5gKfHp1hDc7CH7OeXgLIpp+Q2m1Ni0L5s3bI8Os= github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE= github.com/alecthomas/repr v0.1.0/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -24,12 +30,20 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/lipgloss v0.9.1 h1:PNyd3jvaJbg4jRHKWXnCj1akQm4rh8dbEzN1p/u1KWg= github.com/charmbracelet/lipgloss v0.9.1/go.mod h1:1mPmG4cxScwUQALAAnacHaigiiHB9Pmr+v1VEawJl6I= +github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= +github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE= github.com/charmbracelet/log v0.3.1 h1:TjuY4OBNbxmHWSwO3tosgqs5I3biyY8sQPny/eCMTYw= github.com/charmbracelet/log v0.3.1/go.mod h1:OR4E1hutLsax3ZKpXbgUqPtTjQfrh1pG3zwHGWuuq8g= +github.com/charmbracelet/log v0.4.0 h1:G9bQAcx8rWA2T3pWvx7YtPTPwgqpk7D68BX21IRW8ZM= +github.com/charmbracelet/log v0.4.0/go.mod h1:63bXt/djrizTec0l11H20t8FDSvA4CRZJ1KH22MdptM= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= +github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= +github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -39,6 +53,7 @@ github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= @@ -47,6 +62,8 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -72,6 +89,8 @@ github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -94,19 +113,26 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= @@ -116,6 +142,8 @@ github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= +go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -123,12 +151,18 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= +golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -138,11 +172,15 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -159,6 +197,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -181,6 +221,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -190,6 +232,7 @@ gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/gomod2nix.toml b/gomod2nix.toml index df33a9a..ec7d5f4 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -8,32 +8,32 @@ schema = 3 version = "v1.3.2" hash = "sha256-FIwyH67KryRWI9Bk4R8s1zFP0IgKR4L66wNQJYQZLeg=" [mod."github.com/Microsoft/go-winio"] - version = "v0.6.1" - hash = "sha256-BL0BVaHtmPKQts/711W59AbHXjGKqFS4ZTal0RYnR9I=" + version = "v0.6.2" + hash = "sha256-tVNWDUMILZbJvarcl/E7tpSnkn7urqgSHa2Eaka5vSU=" [mod."github.com/ProtonMail/go-crypto"] - version = "v0.0.0-20230828082145-3c4c8a2d2371" - hash = "sha256-YxAaQgQoTOhD8hE+aT+T8ytKKxcQW6tgoL2MAU7nTvo=" + version = "v1.0.0" + hash = "sha256-Gflazvyv+457FpUTtPafJ+SdolYSalpsU0tragTxNi8=" [mod."github.com/adrg/xdg"] version = "v0.4.0" hash = "sha256-zGjkdUQmrVqD6rMO9oDY+TeJCpuqnHyvkPCaXDlac/U=" [mod."github.com/alecthomas/kong"] - version = "v0.8.1" - hash = "sha256-170mjSrLNC+0W1KhXltaa+YWYgt5gJQEcfssepcyh4E=" + version = "v0.9.0" + hash = "sha256-5tojaBT73EB/IY8MewNjzJnNTQ+5jSw2Nxe3IjLSwXA=" [mod."github.com/aymanbagabas/go-osc52/v2"] version = "v2.0.1" hash = "sha256-6Bp0jBZ6npvsYcKZGHHIUSVSTAMEyieweAX2YAKDjjg=" [mod."github.com/charmbracelet/lipgloss"] - version = "v0.9.1" - hash = "sha256-AHbabOymgDRIXsMBgJHS25/GgBWT54oGbd15EBWKeZc=" + version = "v0.10.0" + hash = "sha256-JZD1iVeizYe0mp3qQcJbUZdYN6HP/DNC67ja79DTe6s=" [mod."github.com/charmbracelet/log"] - version = "v0.3.1" - hash = "sha256-Er60POPID2eNrRZnBHxoI4yHn0mIKnXYftGKSslbXx0=" + version = "v0.4.0" + hash = "sha256-VQerB44vC646n3fe3haJ3DHa9L5+GRhCfDfm1p3QnZk=" [mod."github.com/cloudflare/circl"] - version = "v1.3.3" - hash = "sha256-ItdVkU53Ep01553/tJ4MdAwoTpPljRxiBW9sAd7p0xI=" + version = "v1.3.8" + hash = "sha256-6FbUbOjD8UDb2DIUzVCtI6S+Ja7Dk1pQLc0j0SWZaCk=" [mod."github.com/cyphar/filepath-securejoin"] - version = "v0.2.4" - hash = "sha256-heCD0xMxlwnHCHcRBgTjVexHOLyWI2zRW3E8NFKoLzk=" + version = "v0.2.5" + hash = "sha256-Hb9fRUHnMJJwy7XuHRG2l0YiTKh/5jUz2YJVdYScIfE=" [mod."github.com/davecgh/go-spew"] version = "v1.1.1" hash = "sha256-nhzSUrE1fCkN0+RL04N4h8jWmRFPPPWbCuDc7Ss0akI=" @@ -47,8 +47,8 @@ schema = 3 version = "v5.5.0" hash = "sha256-4XUoD2bOCMCdu83egb/y8kY/Fm0s1rWgPMtiahh38OQ=" [mod."github.com/go-git/go-git/v5"] - version = "v5.11.0" - hash = "sha256-2yUM/FlV+nYxacVynJCnDZeMub4Iu8JL2WBHmlnwOkE=" + version = "v5.12.0" + hash = "sha256-mD8EWOQ25FtKBWVSQhQ8V1Rr0tC/ySFZQ9GMDLRqwQU=" [mod."github.com/go-logfmt/logfmt"] version = "v0.6.0" hash = "sha256-RtIG2qARd5sT10WQ7F3LR8YJhS8exs+KiuUiVf75bWg=" @@ -68,8 +68,8 @@ schema = 3 version = "v1.2.0" hash = "sha256-Gg9dDJFCTaHrKHRR1SrJgZ8fWieJkybljybkI9x0gyE=" [mod."github.com/mattn/go-isatty"] - version = "v0.0.18" - hash = "sha256-QpIn0DSggtBn2ocyj0RlXDKLK5F5KZG1/ogzrqBCjF8=" + version = "v0.0.20" + hash = "sha256-qhw9hWtU5wnyFyuMbKx+7RB8ckQaFQ8D+8GKPkN3HHQ=" [mod."github.com/mattn/go-runewidth"] version = "v0.0.15" hash = "sha256-WP39EU2UrQbByYfnwrkBDoKN7xzXsBssDq3pNryBGm0=" @@ -89,17 +89,17 @@ schema = 3 version = "v1.0.0" hash = "sha256-/FtmHnaGjdvEIKAJtrUfEhV7EVo5A/eYrtdnUkuxLDA=" [mod."github.com/rivo/uniseg"] - version = "v0.2.0" - hash = "sha256-GLj0jiGrT03Ept4V6FXCN1yeZ/b6PpS3MEXK6rYQ8Eg=" + version = "v0.4.7" + hash = "sha256-rDcdNYH6ZD8KouyyiZCUEy8JrjOQoAkxHBhugrfHjFo=" [mod."github.com/sergi/go-diff"] - version = "v1.1.0" - hash = "sha256-8NJMabldpf40uwQN20T6QXx5KORDibCBJL02KD661xY=" + version = "v1.3.2-0.20230802210424-5b0b94c5c0d3" + hash = "sha256-UcLU83CPMbSoKI8RLvLJ7nvGaE2xRSL1RjoHCVkMzUM=" [mod."github.com/skeema/knownhosts"] - version = "v1.2.1" - hash = "sha256-u0jB6ahTdGa+SvcIvPNRLnbSHvgmW9X/ThRq0nWQrJs=" + version = "v1.2.2" + hash = "sha256-kSYIrpQZbCJg7pgjJYiz2jPo6RWSGB1XyFz/1lZ4LPc=" [mod."github.com/stretchr/testify"] - version = "v1.8.4" - hash = "sha256-MoOmRzbz9QgiJ+OOBo5h5/LbilhJfRUryvzHJmXAWjo=" + version = "v1.9.0" + hash = "sha256-uUp/On+1nK+lARkTVtb5RxlW15zxtw2kaAFuIASA+J0=" [mod."github.com/vmihailenco/msgpack/v5"] version = "v5.4.1" hash = "sha256-pDplX6xU6UpNLcFbO1pRREW5vCnSPvSU+ojAwFDv3Hk=" @@ -110,29 +110,29 @@ schema = 3 version = "v0.3.3" hash = "sha256-l3pGB6IdzcPA/HLk93sSN6NM2pKPy+bVOoacR5RC2+c=" [mod."go.etcd.io/bbolt"] - version = "v1.3.8" - hash = "sha256-ekKy8198B2GfPldHLYZnvNjID6x07dUPYKgFx84TgVs=" + version = "v1.3.9" + hash = "sha256-98cKiMZcxl11laO3IiRHnhSgh7mEjl0iKlPxsSPdbww=" [mod."golang.org/x/crypto"] - version = "v0.16.0" - hash = "sha256-DgSVOnXRK8GF01p5rLtq4qPBcglwEoOk8qhW2EGfJfA=" + version = "v0.22.0" + hash = "sha256-2+u9nd32+Bi7EEv7QFc12CRTbfV7DApNv+yKIr7+lTw=" [mod."golang.org/x/exp"] - version = "v0.0.0-20231006140011-7918f672742d" - hash = "sha256-2SO1etTQ6UCUhADR5sgvDEDLHcj77pJKCIa/8mGDbAo=" + version = "v0.0.0-20240416160154-fe59bbe5cc7f" + hash = "sha256-168CD9hlLJaQ7stQk/ztlP3zgaWXUMbIHa38gAeRRs4=" [mod."golang.org/x/mod"] - version = "v0.13.0" - hash = "sha256-qh/YmxS0auZEiKzqdn+v84qs31SpkGIJn9rqKLjdKVU=" + version = "v0.17.0" + hash = "sha256-CLaPeF6uTFuRDv4oHwOQE6MCMvrzkUjWN3NuyywZjKU=" [mod."golang.org/x/net"] - version = "v0.19.0" - hash = "sha256-3M5rKEvJx4cO/q+06cGjR5sxF5JpnUWY0+fQttrWdT4=" + version = "v0.24.0" + hash = "sha256-w1c21ljta5wNIyel9CSIn/crPzwOCRofNKhqmfs4aEQ=" [mod."golang.org/x/sync"] - version = "v0.5.0" - hash = "sha256-EAKeODSsct5HhXPmpWJfulKSCkuUu6kkDttnjyZMNcI=" + version = "v0.7.0" + hash = "sha256-2ETllEu2GDWoOd/yMkOkLC2hWBpKzbVZ8LhjLu0d2A8=" [mod."golang.org/x/sys"] - version = "v0.15.0" - hash = "sha256-n7TlABF6179RzGq3gctPDKDPRtDfnwPdjNCMm8ps2KY=" + version = "v0.19.0" + hash = "sha256-cmuL31TYLJmDm/fDnI2Sn0wB88cpdOHV1+urorsJWx4=" [mod."golang.org/x/tools"] - version = "v0.14.0" - hash = "sha256-BC/AesMg7LpIg0/e4a7Ab37rfyP2KaWBFrsonIp+JbE=" + version = "v0.20.0" + hash = "sha256-g5T5FrNPO/cf2W1lc+/93FcFB3HftPjqI72FueD9Wt8=" [mod."gopkg.in/warnings.v0"] version = "v0.1.2" hash = "sha256-ATVL9yEmgYbkJ1DkltDGRn/auGAjqGOfjQyBYyUo8s8=" -- 2.45.1 From aa75d3db4e1d4c18495565e67677f8d46797822d Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Fri, 3 May 2024 13:41:36 +0100 Subject: [PATCH 32/32] feat: add initial github workflow Signed-off-by: Brian McGee --- .github/CONTRIBUTING.md | 5 ++ .github/dependabot.yml | 6 ++ .github/settings.yml | 137 +++++++++++++++++++++++++++++++++ .github/workflows/gh-pages.yml | 37 +++++++++ 4 files changed, 185 insertions(+) create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/dependabot.yml create mode 100644 .github/settings.yml create mode 100644 .github/workflows/gh-pages.yml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..83638ec --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,5 @@ +By contributing to this project, you hereby acknowledge that you already read [Contributing](../docs/contributing.md) +guideline, and you agree to the Developer Certificate of Origin (DCO). This document is a simple statement that you, as +a contributor, have the legal right to submit the contribution. + +See the [Developer Certificate of Origin](https://developercertificate.org/) file for details. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..c6c4ec9 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000..4f3adda --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,137 @@ +repository: + # See https://developer.github.com/v3/repos/#edit for all available settings. + + # The name of the repository. Changing this will rename the repository + name: treefmt.go + + # A short description of the repository that will show up on GitHub + description: one CLI to format your repo + + # A URL with more information about the repository + homepage: "https://numtide.github.io/treefmt.go/" + + # A comma-separated list of topics to set on the repository + topics: "cli, formatter, unifies" + + # Either `true` to make the repository private, or `false` to make it public. + private: false + + # Either `true` to enable issues for this repository, `false` to disable them. + has_issues: true + + # Either `true` to enable projects for this repository, or `false` to disable them. + # If projects are disabled for the organization, passing `true` will cause an API error. + has_projects: false + + # Either `true` to enable the wiki for this repository, `false` to disable it. + has_wiki: true + + # Either `true` to enable downloads for this repository, `false` to disable them. + has_downloads: false + + # Updates the default branch for this repository. + default_branch: main + + # Either `true` to allow squash-merging pull requests, or `false` to prevent + # squash-merging. + allow_squash_merge: true + + # Either `true` to allow merging pull requests with a merge commit, or `false` + # to prevent merging pull requests with merge commits. + allow_merge_commit: true + + # Either `true` to allow rebase-merging pull requests, or `false` to prevent + # rebase-merging. + allow_rebase_merge: true + + # Either `true` to enable automatic deletion of branches on merge, or `false` to disable + delete_branch_on_merge: true + + # Either `true` to enable automated security fixes, or `false` to disable + # automated security fixes. + enable_automated_security_fixes: true + + # Either `true` to enable vulnerability alerts, or `false` to disable + # vulnerability alerts. + enable_vulnerability_alerts: true + +# Labels: define labels for Issues and Pull Requests +# +labels: +# NOTE: leave that up to the https://github.com/numtide/.github repo +# - name: bug +# color: CC0000 +# description: An issue with the system 🐛. + +# - name: feature +# # If including a `#`, make sure to wrap it with quotes! +# color: '#336699' +# description: New functionality. + +# - name: Help Wanted +# # Provide a new name to rename an existing label +# new_name: first-timers-only + +# Milestones: define milestones for Issues and Pull Requests +milestones: +# - title: milestone-title +# description: milestone-description +# # The state of the milestone. Either `open` or `closed` +# state: open + +# Collaborators: give specific users access to this repository. +# See https://docs.github.com/en/rest/reference/repos#add-a-repository-collaborator for available options +collaborators: + - username: basile-henry + # Note: `permission` is only valid on organization-owned repositories. + # The permission to grant the collaborator. Can be one of: + # * `pull` - can pull, but not push to or administer this repository. + # * `push` - can pull and push, but not administer this repository. + # * `admin` - can pull, push and administer this repository. + # * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. + # * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access. + permission: push + +# See https://docs.github.com/en/rest/reference/teams#add-or-update-team-repository-permissions for available options +teams: + - name: network + # The permission to grant the team. Can be one of: + # * `pull` - can pull, but not push to or administer this repository. + # * `push` - can pull and push, but not administer this repository. + # * `admin` - can pull, push and administer this repository. + # * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. + # * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access. + permission: maintain + +branches: + - name: main + # https://docs.github.com/en/rest/reference/repos#update-branch-protection + # Branch Protection settings. Set to null to disable + protection: + # Required. Require at least one approving review on a pull request, before merging. Set to null to disable. + required_pull_request_reviews: + # # The number of approvals required. (1-6) + # required_approving_review_count: 1 + # # Dismiss approved reviews automatically when a new commit is pushed. + # dismiss_stale_reviews: true + # # Blocks merge until code owners have reviewed. + # require_code_owner_reviews: true + # # Specify which users and teams can dismiss pull request reviews. Pass an empty dismissal_restrictions object to disable. User and team dismissal_restrictions are only available for organization-owned repositories. Omit this parameter for personal repositories. + # dismissal_restrictions: + # users: [] + # teams: [] + # Required. Require status checks to pass before merging. Set to null to disable + required_status_checks: + # Required. Require branches to be up to date before merging. + strict: true + # Required. The list of status checks to require in order to merge into this branch + contexts: [] + # Required. Enforce all configured restrictions for administrators. Set to true to enforce required status checks for repository administrators. Set to null to disable. + enforce_admins: false + # Disabled for mergify to work + required_linear_history: false + # Required. Restrict who can push to this branch. Team and user restrictions are only available for organization-owned repositories. Set to null to disable. + restrictions: + apps: ["mergify"] + users: [] + teams: [] diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..ae8b081 --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,37 @@ +# Build and deploy MkDocs to gh-pages for main branch +name: gh-pages +on: + push: + branches: + - main + - staging + - trying + pull_request: + workflow_dispatch: + +permissions: + contents: write + +jobs: + gh-pages: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v25 + - uses: cachix/cachix-action@v14 + with: + name: numtide + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + + - name: Build the docs + id: build + run: | + nix build .#docs + echo "result=$(readlink ./result)" >> $GITHUB_OUTPUT + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + if: github.ref == 'refs/heads/main' + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: "${{ steps.build.outputs.result }}/" -- 2.45.1