From e71d81f25c20dabce738304d44e2fff62b47c9de Mon Sep 17 00:00:00 2001 From: slumbering Date: Thu, 20 May 2021 10:21:06 +0200 Subject: [PATCH 1/6] update github doc action Signed-off-by: slumbering --- .github/workflows/doc.yml | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 8d690148..832cf7f6 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -2,22 +2,28 @@ name: Doc on: push: + branches: + - main + tags: + - v* paths: - - 'doc/**' + - "doc/**" jobs: copy-file: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Pushes docs file - uses: slumbering/copy_file_to_another_repo_action@main - env: - API_TOKEN_GITHUB: ${{ secrets.DAGGERCI_TOKEN }} - with: - source_file: 'doc/' - destination_repo: 'dagger/launch.dagger.io' - destination_folder: 'site/' - user_email: 'noreply@dagger.io' - user_name: 'dagger-bot' + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Pushes docs file + uses: dagger/doc_copy_action@main + env: + API_TOKEN_GITHUB: ${{ secrets.DAGGERCI_TOKEN }} + with: + source_file: "doc/" + destination_repo: "dagger/launch.dagger.io" + destination_folder: "site/doc" + user_email: "noreply@dagger.io" + user_name: "dagger-bot" From 49176b9976f22b92e69721da6762d6d4e1aa2599 Mon Sep 17 00:00:00 2001 From: slumbering Date: Thu, 20 May 2021 10:22:30 +0200 Subject: [PATCH 2/6] fix path Signed-off-by: slumbering --- .github/workflows/doc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 832cf7f6..119057fa 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -22,7 +22,7 @@ jobs: env: API_TOKEN_GITHUB: ${{ secrets.DAGGERCI_TOKEN }} with: - source_file: "doc/" + source_file: "doc/." destination_repo: "dagger/launch.dagger.io" destination_folder: "site/doc" user_email: "noreply@dagger.io" From 828f9d9ff105b8025150b1be91f022063d19ed01 Mon Sep 17 00:00:00 2001 From: slumbering Date: Fri, 21 May 2021 17:20:15 +0200 Subject: [PATCH 3/6] script deploy plugged to docGenerator repo + rename doc/ to docs/ Signed-off-by: slumbering --- .github/workflows/deploy.yml | 101 +++++++++++++++++++++++++++++++++++ .github/workflows/doc.yml | 29 ---------- {doc => docs}/01_overview.md | 0 {doc => docs}/install.md | 0 {doc => docs}/operator.md | 0 {doc => docs}/programming.md | 0 {doc => docs}/vs.md | 0 7 files changed, 101 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/deploy.yml delete mode 100644 .github/workflows/doc.yml rename {doc => docs}/01_overview.md (100%) rename {doc => docs}/install.md (100%) rename {doc => docs}/operator.md (100%) rename {doc => docs}/programming.md (100%) rename {doc => docs}/vs.md (100%) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..39cb104e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,101 @@ +# This is a basic workflow to help you get started with Actions + +name: DEPLOY + +# Controls when the action will run. +on: + push: + branches: + - main + tags: + - v* + paths: + - 'doc/**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + deploy: + # The type of runner that the job will run on + runs-on: ubuntu-latest + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: "eu-west-1" + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + ################################################################# + # COMMOMS + ################################################################# + # Get current tag (or 'main') in step output for use in uploads + - name: Set Tag Name + id: vars + run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} + + ################################################################# + # FETCH GENERATOR + DATA + ################################################################# + + # fetch gatsby generator from 'dagger/DocGenerator' + # then fetch docs data to have generator + data in the context of the job + # fetch-depth: '0' enables listing all tags for version selector + - uses: actions/checkout@v2 + with: + repository: 'dagger/DocGenerator' + ref: 'main' + token: ${{ secrets.PAT }} # is a secret that contains your PAT + + - uses: actions/checkout@v2 + with: + fetch-depth: '0' + path: 'docsTMP' + - run: mkdir -p docs && mv docsTMP/docs/* docs/ + - run: mv ./docs/index.mdx ./src/@rocketseat/gatsby-theme-docs/text/index.mdx + + ################################################################# + # BUILD SITE + ################################################################# + + # Install Node + - uses: actions/setup-node@v2 + with: + node-version: "14" + - run: yarn + - name: Build Site + run: yarn build --prefix-paths + env: + VERSION: ${{steps.vars.outputs.tag}} + + ################################################################# + # DEPLOY TO S3 + ################################################################# + + + # deploy the site in the right foder ( tag or main) + - name: S3 Sync + uses: ItsKarma/aws-cli@v1.70.0 + with: + args: s3 sync --delete --acl public-read public/ s3://daggerdoc.humans-it.com/docs/${{steps.vars.outputs.tag}}/ + + # list All Tags in json file for version selector + # upload to /tags.json + - name: Create tags.json + run: echo "[" {\"tag\"':' \"$(git --git-dir ./docsTMP/.git tag -l "v*" | tr '\n' '|' | sed -e 's/|/"}, {\"tag\"':' "/g')main\"} "]" > tags.json + - name: Copy tags.json + uses: ItsKarma/aws-cli@v1.70.0 + with: + args: s3 cp --acl public-read ./tags.json s3://daggerdoc.humans-it.com/ + + # landing alway on latest tag + # use S3 Rediret objet + # upload to /docs/index.html + - run: touch index.html + - name: Redirect Latest tag on landing + if: ${{ steps.vars.outputs.tag != 'main' }} + uses: ItsKarma/aws-cli@v1.70.0 + with: + args: s3 cp --cache-control max-age=0 --acl public-read --website-redirect /docs/${{steps.vars.outputs.tag}}/ ./index.html s3://daggerdoc.humans-it.com/docs/ diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml deleted file mode 100644 index 119057fa..00000000 --- a/.github/workflows/doc.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Doc - -on: - push: - branches: - - main - tags: - - v* - paths: - - "doc/**" - -jobs: - copy-file: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Pushes docs file - uses: dagger/doc_copy_action@main - env: - API_TOKEN_GITHUB: ${{ secrets.DAGGERCI_TOKEN }} - with: - source_file: "doc/." - destination_repo: "dagger/launch.dagger.io" - destination_folder: "site/doc" - user_email: "noreply@dagger.io" - user_name: "dagger-bot" diff --git a/doc/01_overview.md b/docs/01_overview.md similarity index 100% rename from doc/01_overview.md rename to docs/01_overview.md diff --git a/doc/install.md b/docs/install.md similarity index 100% rename from doc/install.md rename to docs/install.md diff --git a/doc/operator.md b/docs/operator.md similarity index 100% rename from doc/operator.md rename to docs/operator.md diff --git a/doc/programming.md b/docs/programming.md similarity index 100% rename from doc/programming.md rename to docs/programming.md diff --git a/doc/vs.md b/docs/vs.md similarity index 100% rename from doc/vs.md rename to docs/vs.md From b9083f7fea1a62137c935f6df56e2ce695a4214d Mon Sep 17 00:00:00 2001 From: slumbering Date: Fri, 21 May 2021 18:22:22 +0200 Subject: [PATCH 4/6] update docs Signed-off-by: slumbering --- docs/index.mdx | 40 ++++++++++++++++++++++++++++++++++++++++ docs/sidebar/sidebar.yml | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 docs/index.mdx create mode 100644 docs/sidebar/sidebar.yml diff --git a/docs/index.mdx b/docs/index.mdx new file mode 100644 index 00000000..86d131ab --- /dev/null +++ b/docs/index.mdx @@ -0,0 +1,40 @@ +# Dagger + +Dagger is a programmable deployment system. test deploy + +Using Dagger, software builders can automate the deployment of any application to any infrastructure, +in just a few lines of code. + +![image](https://user-images.githubusercontent.com/29565/112705398-d0222980-8e5b-11eb-98b9-32c117a3d606.jpeg) + +The Dagger platform adapts to your application, not the other way around. +Thanks to its ecosystem of reusable packages and flexible scripting system, Dagger can be dropped +into any software project without requiring changes to its architecture or workflow. +Think of it as your "devops superglu". + +No matter how your deployment works under the hood, you can manage it with the same Dagger user interface. +This makes developers more productive, because they don't have to learn a new workflow every time their deployment +system changes. + +## Learn More + +* [Dagger vs. Other Software](/vs) +* [Dagger Programming Guide](/programming) +* [Dagger Operator Manual](/operator) + + +## Download and Install + +* [Install Dagger from source](/install) +* Binary distributions [*coming soon*] + +## Community + +Join the [Dagger community chatroom](https://discord.gg/Rmffpmc) on Discord. +We welcome beginners and experts alike! + + +## Alpha disclaimer + +Dagger is *alpha-quality software*. It has many bugs, the user interface is minimal, and it may change in incompatible ways at any time. If you are still willing to try it, thank you! We appreciate your help and encourage you to ask questions and report issues. + diff --git a/docs/sidebar/sidebar.yml b/docs/sidebar/sidebar.yml new file mode 100644 index 00000000..e4ac6701 --- /dev/null +++ b/docs/sidebar/sidebar.yml @@ -0,0 +1,32 @@ +# Sidebar navigation + +- label: 'Install deploy' + link: '/install' + +- label: 'Operator' + link: '/operator' + +- label: 'Programming' + link: '/programming' + +- label: 'VS' + link: '/vs' + +- label: 'Getting started' + link: '/getting-started' + +- label: Usage + items: + - label: 'Creating docs' + link: '/usage/creating-docs' + - label: 'Navigation' + link: '/usage/navigation' + - label: 'Shadowing' + link: '/usage/shadowing' + +- label: More + items: + - label: FAQ + link: /faq + - label: 'Github' + link: https://github.com/dagger/dagger From 6ddb973f0366cb2e6faff8d4c2879a836728a925 Mon Sep 17 00:00:00 2001 From: Andrea Luzzardi Date: Fri, 21 May 2021 10:31:25 -0700 Subject: [PATCH 5/6] docs: move gendocs tool to dagger/dagger Signed-off-by: Andrea Luzzardi --- .github/workflows/deploy.yml | 101 - .github/workflows/docs.yml | 78 + docs/{01_overview.md => index.md} | 0 docs/index.mdx | 40 - tools/gendocs/.gitignore | 71 + tools/gendocs/LICENSE | 21 + tools/gendocs/README.md | 61 + tools/gendocs/docs | 1 + tools/gendocs/gatsby-config.js | 28 + tools/gendocs/package.json | 34 + .../gatsby-theme-docs/assets/dagger-logo.jpg | Bin 0 -> 69936 bytes .../gatsby-theme-docs/components/Logos.js | 6 + .../components/Sidebar/ExternalLink/index.js | 19 + .../components/Sidebar/InternalLink/index.js | 17 + .../components/Sidebar/Select/index.js | 28 + .../components/Sidebar/index.js | 95 + .../components/Sidebar/styles.js | 139 + .../gatsby-theme-docs/styles/theme.js | 15 + .../util/copy-to-clipboard.js | 27 + .../gatsby-theme-docs/util/slug.js | 11 + .../@rocketseat/gatsby-theme-docs/util/url.js | 5 + tools/gendocs/src/pages/404.js | 18 + tools/gendocs/static/banner.png | Bin 0 -> 79075 bytes tools/gendocs/static/favicon.png | Bin 0 -> 9653 bytes tools/gendocs/yarn.lock | 14640 ++++++++++++++++ 25 files changed, 15314 insertions(+), 141 deletions(-) delete mode 100644 .github/workflows/deploy.yml create mode 100644 .github/workflows/docs.yml rename docs/{01_overview.md => index.md} (100%) delete mode 100644 docs/index.mdx create mode 100644 tools/gendocs/.gitignore create mode 100644 tools/gendocs/LICENSE create mode 100644 tools/gendocs/README.md create mode 120000 tools/gendocs/docs create mode 100644 tools/gendocs/gatsby-config.js create mode 100644 tools/gendocs/package.json create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/assets/dagger-logo.jpg create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Logos.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/ExternalLink/index.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/InternalLink/index.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/Select/index.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/index.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/styles.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/styles/theme.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/util/copy-to-clipboard.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/util/slug.js create mode 100644 tools/gendocs/src/@rocketseat/gatsby-theme-docs/util/url.js create mode 100644 tools/gendocs/src/pages/404.js create mode 100644 tools/gendocs/static/banner.png create mode 100644 tools/gendocs/static/favicon.png create mode 100644 tools/gendocs/yarn.lock diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 39cb104e..00000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,101 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: DEPLOY - -# Controls when the action will run. -on: - push: - branches: - - main - tags: - - v* - paths: - - 'doc/**' - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - deploy: - # The type of runner that the job will run on - runs-on: ubuntu-latest - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: "eu-west-1" - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - ################################################################# - # COMMOMS - ################################################################# - # Get current tag (or 'main') in step output for use in uploads - - name: Set Tag Name - id: vars - run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} - - ################################################################# - # FETCH GENERATOR + DATA - ################################################################# - - # fetch gatsby generator from 'dagger/DocGenerator' - # then fetch docs data to have generator + data in the context of the job - # fetch-depth: '0' enables listing all tags for version selector - - uses: actions/checkout@v2 - with: - repository: 'dagger/DocGenerator' - ref: 'main' - token: ${{ secrets.PAT }} # is a secret that contains your PAT - - - uses: actions/checkout@v2 - with: - fetch-depth: '0' - path: 'docsTMP' - - run: mkdir -p docs && mv docsTMP/docs/* docs/ - - run: mv ./docs/index.mdx ./src/@rocketseat/gatsby-theme-docs/text/index.mdx - - ################################################################# - # BUILD SITE - ################################################################# - - # Install Node - - uses: actions/setup-node@v2 - with: - node-version: "14" - - run: yarn - - name: Build Site - run: yarn build --prefix-paths - env: - VERSION: ${{steps.vars.outputs.tag}} - - ################################################################# - # DEPLOY TO S3 - ################################################################# - - - # deploy the site in the right foder ( tag or main) - - name: S3 Sync - uses: ItsKarma/aws-cli@v1.70.0 - with: - args: s3 sync --delete --acl public-read public/ s3://daggerdoc.humans-it.com/docs/${{steps.vars.outputs.tag}}/ - - # list All Tags in json file for version selector - # upload to /tags.json - - name: Create tags.json - run: echo "[" {\"tag\"':' \"$(git --git-dir ./docsTMP/.git tag -l "v*" | tr '\n' '|' | sed -e 's/|/"}, {\"tag\"':' "/g')main\"} "]" > tags.json - - name: Copy tags.json - uses: ItsKarma/aws-cli@v1.70.0 - with: - args: s3 cp --acl public-read ./tags.json s3://daggerdoc.humans-it.com/ - - # landing alway on latest tag - # use S3 Rediret objet - # upload to /docs/index.html - - run: touch index.html - - name: Redirect Latest tag on landing - if: ${{ steps.vars.outputs.tag != 'main' }} - uses: ItsKarma/aws-cli@v1.70.0 - with: - args: s3 cp --cache-control max-age=0 --acl public-read --website-redirect /docs/${{steps.vars.outputs.tag}}/ ./index.html s3://daggerdoc.humans-it.com/docs/ diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..e920ae41 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,78 @@ +name: Docs + +on: + push: + branches: + - main + tags: + - v* + paths: + - "docs/**" + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + env: + AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_AWS_SECRET_ACCESS_KEY }} + AWS_DEFAULT_REGION: "eu-west-1" + + steps: + - name: Set Tag Name + id: vars + run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} + + # fetch-depth: '0' enables listing all tags for version selector + - uses: actions/checkout@v2 + with: + fetch-depth: "0" + + ################################################################# + # BUILD SITE + ################################################################# + + # Install Node + - uses: actions/setup-node@v2 + with: + node-version: "14" + - run: yarn --cwd ./tools/gendocs + - name: Build Site + run: yarn --cwd ./tools/gendocs build --prefix-paths + env: + VERSION: ${{steps.vars.outputs.tag}} + + ################################################################# + # DEPLOY TO S3 + ################################################################# + + # deploy the site in the right foder ( tag or main) + - name: S3 Sync + uses: ItsKarma/aws-cli@v1.70.0 + with: + args: s3 sync --delete --acl public-read ./tools/gendocs/public/ s3://daggerdoc.humans-it.com/${{steps.vars.outputs.tag}}/ + + # list All Tags in json file for version selector + # upload to /tags.json + - name: Create tags.json + run: echo "[" {\"tag\"':' \"$(git tag -l "v*" | tr '\n' '|' | sed -e 's/|/"}, {\"tag\"':' "/g')main\"} "]" > tags.json + - name: Copy tags.json + uses: ItsKarma/aws-cli@v1.70.0 + with: + args: s3 cp --acl public-read ./tags.json s3://daggerdoc.humans-it.com/ + + # landing alway on latest tag + # use S3 Rediret objet + # upload to /docs/index.html + - run: touch index.html + - name: Redirect Latest tag on landing + # FIXME + # if: ${{ steps.vars.outputs.tag != 'main' }} + uses: ItsKarma/aws-cli@v1.70.0 + with: + # FIXME: `--website-redirect` uses a permanent redirect, therefore if + # we use the latest version it will be in cache forever. + # args: s3 cp --cache-control max-age=0 --acl public-read --website-redirect /docs/${{steps.vars.outputs.tag}}/ ./index.html s3://daggerdoc.humans-it.com/docs/ + args: s3 cp --cache-control max-age=0 --acl public-read --website-redirect /main/ ./index.html s3://daggerdoc.humans-it.com/ diff --git a/docs/01_overview.md b/docs/index.md similarity index 100% rename from docs/01_overview.md rename to docs/index.md diff --git a/docs/index.mdx b/docs/index.mdx deleted file mode 100644 index 86d131ab..00000000 --- a/docs/index.mdx +++ /dev/null @@ -1,40 +0,0 @@ -# Dagger - -Dagger is a programmable deployment system. test deploy - -Using Dagger, software builders can automate the deployment of any application to any infrastructure, -in just a few lines of code. - -![image](https://user-images.githubusercontent.com/29565/112705398-d0222980-8e5b-11eb-98b9-32c117a3d606.jpeg) - -The Dagger platform adapts to your application, not the other way around. -Thanks to its ecosystem of reusable packages and flexible scripting system, Dagger can be dropped -into any software project without requiring changes to its architecture or workflow. -Think of it as your "devops superglu". - -No matter how your deployment works under the hood, you can manage it with the same Dagger user interface. -This makes developers more productive, because they don't have to learn a new workflow every time their deployment -system changes. - -## Learn More - -* [Dagger vs. Other Software](/vs) -* [Dagger Programming Guide](/programming) -* [Dagger Operator Manual](/operator) - - -## Download and Install - -* [Install Dagger from source](/install) -* Binary distributions [*coming soon*] - -## Community - -Join the [Dagger community chatroom](https://discord.gg/Rmffpmc) on Discord. -We welcome beginners and experts alike! - - -## Alpha disclaimer - -Dagger is *alpha-quality software*. It has many bugs, the user interface is minimal, and it may change in incompatible ways at any time. If you are still willing to try it, thank you! We appreciate your help and encourage you to ask questions and report issues. - diff --git a/tools/gendocs/.gitignore b/tools/gendocs/.gitignore new file mode 100644 index 00000000..542ebfb2 --- /dev/null +++ b/tools/gendocs/.gitignore @@ -0,0 +1,71 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# dotenv environment variable files +.env* + +# gatsby files +.cache/ +public + +# Mac files +.DS_Store + +# Yarn +yarn-error.log +.pnp/ +.pnp.js +# Yarn Integrity file +.yarn-integrity + +.idea/ diff --git a/tools/gendocs/LICENSE b/tools/gendocs/LICENSE new file mode 100644 index 00000000..e74feb36 --- /dev/null +++ b/tools/gendocs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Rocketseat + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/gendocs/README.md b/tools/gendocs/README.md new file mode 100644 index 00000000..9dcc6808 --- /dev/null +++ b/tools/gendocs/README.md @@ -0,0 +1,61 @@ +

+ A illustration of file that is the @rocketseat/gatsby-theme-docs logo +

+ +

+ Gatsby Starter: Rocket Docs +

+ +

+ Out of the box Gatsby Starter for creating documentation websites easily and quickly. With support for MDX, code highlight, Analytics, SEO and more 🔥 Using the theme: @rocketseat/gatsby-theme-docs +

+ +

+ PRs welcome! + + License + + + Follow @rocketseat + +

+ +## 🚀 Features + +- 📝 MDX for docs; +- 🛣 Yaml-based sidebar navigation; +- 📱 Responsive and mobile friendly; +- 🖥 Code highlighting with [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) and [react-live](https://github.com/FormidableLabs/react-live) support; +- 🥇 SEO (Sitemap, schema.org data, Open Graph and Twitter tags). +- 📈 Google Analytics support; +- 📄 Custom docs schema; +- 🖱 Table of Contents; +- ⚡️ Offline Support & WebApp Manifest; +- and much more 🔥 + +## ⚡️ Getting started + +1. Create the website. + + ```sh + npx gatsby new rocket-docs https://github.com/rocketseat/gatsby-starter-rocket-docs + ``` + +2. Start developing. + + ```sh + cd rocket-docs + gatsby develop + ``` + +3. Are you ready for launch? + + Your site is now running at `http://localhost:8000` + +## 📄 Docs + +Looking for docs? Check our live demo and documentation [website](https://rocketdocs.netlify.app). + +--- + +Made with 💜 by Rocketseat :wave: [check our community!](https://discordapp.com/invite/gCRAFhc) diff --git a/tools/gendocs/docs b/tools/gendocs/docs new file mode 120000 index 00000000..92a7f825 --- /dev/null +++ b/tools/gendocs/docs @@ -0,0 +1 @@ +../../docs \ No newline at end of file diff --git a/tools/gendocs/gatsby-config.js b/tools/gendocs/gatsby-config.js new file mode 100644 index 00000000..74f783b3 --- /dev/null +++ b/tools/gendocs/gatsby-config.js @@ -0,0 +1,28 @@ +module.exports = { + pathPrefix: `/${process.env.VERSION}`, + siteMetadata: { + siteTitle: `Dagger Docs`, + defaultTitle: `Dagger Docs`, + siteTitleShort: `Dagger Docs`, + siteDescription: `Dagger Documentation`, + siteUrl: `https://launch.dagger.io`, + siteAuthor: `@dagger`, + siteImage: `/banner.png`, + siteLanguage: `en`, + themeColor: `#1890FF`, + docVersion : `${process.env.VERSION}`, + }, + flags: { PRESERVE_WEBPACK_CACHE: true }, + plugins: [ + { + resolve: `@rocketseat/gatsby-theme-docs`, + options: { + basePath: `/`, + configPath: `docs/sidebar`, + docsPath: `docs`, + repositoryUrl: `https://github.com/dagger/dagger`, + baseDir: `/`, + }, + }, + ], +}; diff --git a/tools/gendocs/package.json b/tools/gendocs/package.json new file mode 100644 index 00000000..aef687f0 --- /dev/null +++ b/tools/gendocs/package.json @@ -0,0 +1,34 @@ +{ + "name": "dagger-docs", + "private": true, + "version": "1.0.0", + "description": "dagger dc", + "author": "Dagger", + "license": "MIT", + "starter-name": "dagger-docs-generator", + "dependencies": { + "@rocketseat/gatsby-theme-docs": "^2.3.1", + "gatsby": "^3.0.4", + "gatsby-plugin-canonical-urls": "^3.0.0", + "gatsby-plugin-google-analytics": "^3.0.0", + "gatsby-plugin-manifest": "^3.0.0", + "gatsby-plugin-offline": "^4.0.0", + "gatsby-plugin-remove-trailing-slashes": "^3.0.0", + "gatsby-plugin-sitemap": "^3.0.0", + "prop-types": "^15.7.2", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "devDependencies": {}, + "keywords": [ + "gatsby", + "rocketseat", + "gatsby-starter" + ], + "scripts": { + "build": "gatsby build", + "start": "gatsby develop", + "serve": "gatsby serve", + "clean": "gatsby clean" + } +} diff --git a/tools/gendocs/src/@rocketseat/gatsby-theme-docs/assets/dagger-logo.jpg b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/assets/dagger-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb586635f7d81624e9bd4a7739d73eea687c0476 GIT binary patch literal 69936 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%0Du8OtD|;X6ofK%$T+HVht

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 +} \ No newline at end of file diff --git a/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/ExternalLink/index.js b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/ExternalLink/index.js new file mode 100644 index 00000000..dcbad43c --- /dev/null +++ b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/ExternalLink/index.js @@ -0,0 +1,19 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { FiExternalLink } from 'react-icons/fi'; + +export default function ExternalLink({ link, label }) { + return ( + + {label} + + + ); +} + +ExternalLink.propTypes = { + link: PropTypes.string.isRequired, + label: PropTypes.string.isRequired, +}; diff --git a/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/InternalLink/index.js b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/InternalLink/index.js new file mode 100644 index 00000000..f951b77f --- /dev/null +++ b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/InternalLink/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import {Link} from 'gatsby'; + +export default function InternalLink({ link, label }) { + + return ( + + {label} + + ); +} + +InternalLink.propTypes = { + link: PropTypes.string.isRequired, + label: PropTypes.string.isRequired, +}; diff --git a/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/Select/index.js b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/Select/index.js new file mode 100644 index 00000000..bcab8dba --- /dev/null +++ b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/Select/index.js @@ -0,0 +1,28 @@ +import React, { useEffect, useState } from "react"; +import { Select as SelectStyled } from '../styles'; + +const Select = () => { + const isBrowser = typeof window !== "undefined" + const [tagsList, setTagsList] = useState([]) + const currentLocation = isBrowser ? window.location.pathname.split('/') : [] + currentLocation.pop() //remove last trailing slash + + useEffect(() => { + async function getTags() { + const fetchTags = await fetch('https://s3-eu-west-1.amazonaws.com/daggerdoc.humans-it.com/tags.json').then(result => result.json()); + setTagsList(fetchTags); + } + + getTags() + }, []) + + return ( + isBrowser ? window.location.pathname = `/${e.currentTarget.value}/index.html` : null}> + {tagsList.map(t => ( + + ))} + + ); +}; + +export default Select; diff --git a/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/index.js b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/index.js new file mode 100644 index 00000000..e1aff7fe --- /dev/null +++ b/tools/gendocs/src/@rocketseat/gatsby-theme-docs/components/Sidebar/index.js @@ -0,0 +1,95 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useStaticQuery, graphql, Link } from 'gatsby'; +import { useSidebar } from '@rocketseat/gatsby-theme-docs-core'; + +import { + Container, + LogoContainer, + List, + Heading, + Item, + SubItem, +} from './styles'; +import Select from './Select' +import { isExternalUrl } from '../../util/url'; +import ExternalLink from './ExternalLink'; +import InternalLink from './InternalLink'; +import Logo from '../Logos'; + +function ListWithSubItems({ children, text }) { + return ( + <> + {text} + {children} + + ); +} + +export default function Sidebar({ isMenuOpen }) { + const { + site: { + siteMetadata: { basePath }, + }, + } = useStaticQuery(graphql` + { + site { + siteMetadata { + basePath + } + } + } + `); + + const data = useSidebar(); + + function renderLink(link, label) { + return isExternalUrl(link) ? ( + + ) : ( + + ); + } + + return ( + + + + +