diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 102105214f5..dec493beec5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -26,7 +26,6 @@ Expand the relevant checklist and delete the others. - [ ] Documentation updated - [ ] Connector's `README.md` - [ ] Connector's `bootstrap.md`. See [description and examples](https://docs.google.com/document/d/1ypdgmwmEHWv-TrO4_YOQ7pAJGVrMp5BOkEVh831N260/edit?usp=sharing) - - [ ] `docs/SUMMARY.md` - [ ] `docs/integrations//.md` including changelog. See changelog [example](https://docs.airbyte.io/integrations/sources/stripe#changelog) - [ ] `docs/integrations/README.md` - [ ] `airbyte-integrations/builds.md` diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index c99668acd27..5f5f13443e6 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -1,3 +1,26 @@ +const fs = require("fs"); +const path = require("path") + +const connectorsDocsRoot = "../docs/integrations"; +const sourcesDocs = `${connectorsDocsRoot}/sources`; +const destinationDocs = `${connectorsDocsRoot}/destinations`; + +function getFilenamesInDir(prefix, dir, excludes) { + return fs.readdirSync(dir) + .map(fileName => fileName.replace(".md", "")) + .filter(fileName => excludes.indexOf(fileName.toLowerCase()) === -1) + .map(filename => { + return {type: 'doc', id: path.join(prefix, filename)} + }); +} + +function getSourceConnectors() { + return getFilenamesInDir("integrations/sources/", sourcesDocs, ["readme"]); +} + +function getDestinationConnectors() { + return getFilenamesInDir("integrations/destinations/", destinationDocs, ["readme"]); +} module.exports = { mySidebar: [ { @@ -205,722 +228,12 @@ module.exports = { { type: 'category', label: 'Sources', - items: [ - { - type: 'doc', - id: "integrations/sources/tplcentral", - }, - { - type: 'doc', - id: "integrations/sources/airtable", - }, - { - type: 'doc', - id: "integrations/sources/amazon-sqs", - }, - { - type: 'doc', - id: "integrations/sources/amazon-seller-partner", - }, - { - type: 'doc', - id: "integrations/sources/amazon-ads", - }, - { - type: 'doc', - id: "integrations/sources/amplitude", - }, - { - type: 'doc', - id: "integrations/sources/apify-dataset", - }, - { - type: 'doc', - id: "integrations/sources/appstore", - }, - { - type: 'doc', - id: "integrations/sources/asana", - }, - { - type: 'doc', - id: "integrations/sources/aws-cloudtrail", - }, - { - type: 'doc', - id: "integrations/sources/azure-table", - }, - { - type: 'doc', - id: "integrations/sources/bamboo-hr", - }, - { - type: 'doc', - id: "integrations/sources/bing-ads", - }, - { - type: 'doc', - id: "integrations/sources/bigcommerce", - }, - { - type: 'doc', - id: "integrations/sources/bigquery", - }, - { - type: 'doc', - id: "integrations/sources/braintree", - }, - { - type: 'doc', - id: "integrations/sources/cart", - }, - { - type: 'doc', - id: "integrations/sources/chargebee", - }, - { - type: 'doc', - id: "integrations/sources/chartmogul", - }, - { - type: 'doc', - id: "integrations/sources/clickhouse", - }, - { - type: 'doc', - id: "integrations/sources/close-com", - }, - { - type: 'doc', - id: "integrations/sources/cockroachdb", - }, - { - type: 'doc', - id: "integrations/sources/confluence", - }, - { - type: 'doc', - id: "integrations/sources/customer-io", - }, - { - type: 'doc', - id: "integrations/sources/delighted", - }, - { - type: 'doc', - id: "integrations/sources/db2", - }, - { - type: 'doc', - id: "integrations/sources/dixa", - }, - { - type: 'doc', - id: "integrations/sources/drift", - }, - { - type: 'doc', - id: "integrations/sources/drupal", - }, - { - type: 'doc', - id: "integrations/sources/e2e-test", - }, - { - type: 'doc', - id: "integrations/sources/exchangeratesapi", - }, - { - type: 'doc', - id: "integrations/sources/facebook-marketing", - }, - { - type: 'doc', - id: "integrations/sources/facebook-pages", - }, - { - type: 'doc', - id: "integrations/sources/file", - }, - { - type: 'doc', - id: "integrations/sources/flexport", - }, - { - type: 'doc', - id: "integrations/sources/freshdesk", - }, - { - type: 'doc', - id: "integrations/sources/freshsales", - }, - { - type: 'doc', - id: "integrations/sources/freshservice", - }, - { - type: 'doc', - id: "integrations/sources/github", - }, - { - type: 'doc', - id: "integrations/sources/gitlab", - }, - { - type: 'doc', - id: "integrations/sources/google-ads", - }, - { - type: 'doc', - id: "integrations/sources/google-analytics-v4", - }, - { - type: 'doc', - id: "integrations/sources/google-directory", - }, - { - type: 'doc', - id: "integrations/sources/google-search-console", - }, - { - type: 'doc', - id: "integrations/sources/google-sheets", - }, - { - type: 'doc', - id: "integrations/sources/google-workspace-admin-reports", - }, - { - type: 'doc', - id: "integrations/sources/greenhouse", - }, - { - type: 'doc', - id: "integrations/sources/harvest", - }, - { - type: 'doc', - id: "integrations/sources/harness", - }, - { - type: 'doc', - id: "integrations/sources/http-request", - }, - { - type: 'doc', - id: "integrations/sources/hubspot", - }, - { - type: 'doc', - id: "integrations/sources/instagram", - }, - { - type: 'doc', - id: "integrations/sources/intercom", - }, - { - type: 'doc', - id: "integrations/sources/iterable", - }, - { - type: 'doc', - id: "integrations/sources/jenkins", - }, - { - type: 'doc', - id: "integrations/sources/jira", - }, - { - type: 'doc', - id: "integrations/sources/kafka", - }, - { - type: 'doc', - id: "integrations/sources/klaviyo", - }, - { - type: 'doc', - id: "integrations/sources/kustomer", - }, - { - type: 'doc', - id: "integrations/sources/lemlist", - }, - { - type: 'doc', - id: "integrations/sources/linkedin-ads", - }, - { - type: 'doc', - id: "integrations/sources/linnworks", - }, - { - type: 'doc', - id: "integrations/sources/lever-hiring", - }, - { - type: 'doc', - id: "integrations/sources/looker", - }, - { - type: 'doc', - id: "integrations/sources/magento", - }, - { - type: 'doc', - id: "integrations/sources/mailchimp", - }, - { - type: 'doc', - id: "integrations/sources/marketo", - }, - { - type: 'doc', - id: "integrations/sources/microsoft-dynamics-ax", - }, - { - type: 'doc', - id: "integrations/sources/microsoft-dynamics-customer-engagement", - }, - { - type: 'doc', - id: "integrations/sources/microsoft-dynamics-gp", - }, - { - type: 'doc', - id: "integrations/sources/microsoft-dynamics-nav", - }, - { - type: 'doc', - id: "integrations/sources/mssql", - }, - { - type: 'doc', - id: "integrations/sources/microsoft-teams", - }, - { - type: 'doc', - id: "integrations/sources/mixpanel", - }, - { - type: 'doc', - id: "integrations/sources/monday", - }, - { - type: 'doc', - id: "integrations/sources/mongodb-v2", - }, - { - type: 'doc', - id: "integrations/sources/my-hours", - }, - { - type: 'doc', - id: "integrations/sources/mysql", - }, - { - type: 'doc', - id: "integrations/sources/notion", - }, - { - type: 'doc', - id: "integrations/sources/okta", - }, - { - type: 'doc', - id: "integrations/sources/onesignal", - }, - { - type: 'doc', - id: "integrations/sources/openweather", - }, - { - type: 'doc', - id: "integrations/sources/oracle", - }, - { - type: 'doc', - id: "integrations/sources/oracle-peoplesoft", - }, - { - type: 'doc', - id: "integrations/sources/oracle-siebel-crm", - }, - { - type: 'doc', - id: "integrations/sources/orb", - }, - { - type: 'doc', - id: "integrations/sources/outreach", - }, - { - type: 'doc', - id: "integrations/sources/pagerduty", - }, - { - type: 'doc', - id: "integrations/sources/paypal-transaction", - }, - { - type: 'doc', - id: "integrations/sources/paystack", - }, - { - type: 'doc', - id: "integrations/sources/persistiq", - }, - { - type: 'doc', - id: "integrations/sources/plaid", - }, - { - type: 'doc', - id: "integrations/sources/pinterest", - }, - { - type: 'doc', - id: "integrations/sources/pipedrive", - }, - { - type: 'doc', - id: "integrations/sources/pokeapi", - }, - { - type: 'doc', - id: "integrations/sources/postgres", - }, - { - type: 'doc', - id: "integrations/sources/posthog", - }, - { - type: 'doc', - id: "integrations/sources/presta-shop", - }, - { - type: 'doc', - id: "integrations/sources/qualaroo", - }, - { - type: 'doc', - id: "integrations/sources/quickbooks", - }, - { - type: 'doc', - id: "integrations/sources/recharge", - }, - { - type: 'doc', - id: "integrations/sources/recurly", - }, - { - type: 'doc', - id: "integrations/sources/redshift", - }, - { - type: 'doc', - id: "integrations/sources/s3", - }, - { - type: 'doc', - id: "integrations/sources/sap-business-one", - }, - { - type: 'doc', - id: "integrations/sources/search-metrics", - }, - { - type: 'doc', - id: "integrations/sources/salesforce", - }, - { - type: 'doc', - id: "integrations/sources/salesloft", - }, - { - type: 'doc', - id: "integrations/sources/sendgrid", - }, - { - type: 'doc', - id: "integrations/sources/sentry", - }, - { - type: 'doc', - id: "integrations/sources/shopify", - }, - { - type: 'doc', - id: "integrations/sources/shortio", - }, - { - type: 'doc', - id: "integrations/sources/slack", - }, - { - type: 'doc', - id: "integrations/sources/smartsheets", - }, - { - type: 'doc', - id: "integrations/sources/snapchat-marketing", - }, - { - type: 'doc', - id: "integrations/sources/snowflake", - }, - { - type: 'doc', - id: "integrations/sources/spree-commerce", - }, - { - type: 'doc', - id: "integrations/sources/square", - }, - { - type: 'doc', - id: "integrations/sources/strava", - }, - { - type: 'doc', - id: "integrations/sources/stripe", - }, - { - type: 'doc', - id: "integrations/sources/sugar-crm", - }, - { - type: 'doc', - id: "integrations/sources/surveymonkey", - }, - { - type: 'doc', - id: "integrations/sources/tempo", - }, - { - type: 'doc', - id: "integrations/sources/tiktok-marketing", - }, - { - type: 'doc', - id: "integrations/sources/trello", - }, - { - type: 'doc', - id: "integrations/sources/twilio", - }, - { - type: 'doc', - id: "integrations/sources/typeform", - }, - { - type: 'doc', - id: "integrations/sources/us-census", - }, - { - type: 'doc', - id: "integrations/sources/victorops", - }, - { - type: 'doc', - id: "integrations/sources/woocommerce", - }, - { - type: 'doc', - id: "integrations/sources/wordpress", - }, - { - type: 'doc', - id: "integrations/sources/youtube-analytics", - }, - { - type: 'doc', - id: "integrations/sources/zencart", - }, - { - type: 'doc', - id: "integrations/sources/zendesk-chat", - }, - { - type: 'doc', - id: "integrations/sources/zendesk-sunshine", - }, - { - type: 'doc', - id: "integrations/sources/zendesk-support", - }, - { - type: 'doc', - id: "integrations/sources/zendesk-talk", - }, - { - type: 'doc', - id: "integrations/sources/zenloop", - }, - { - type: 'doc', - id: "integrations/sources/zoho-crm", - }, - { - type: 'doc', - id: "integrations/sources/zoom", - }, - { - type: 'doc', - id: "integrations/sources/zuora", - }, - ] + items: getSourceConnectors() }, { type: 'category', label: 'Destinations', - items: [ - { - type: 'doc', - id: "integrations/destinations/amazon-sqs", - }, - { - type: 'doc', - id: "integrations/destinations/azureblobstorage", - }, - { - type: 'doc', - id: "integrations/destinations/bigquery", - }, - { - type: 'doc', - id: "integrations/destinations/clickhouse", - }, - { - type: 'doc', - id: "integrations/destinations/databricks", - }, - { - type: 'doc', - id: "integrations/destinations/dynamodb", - }, - { - type: 'doc', - id: "integrations/destinations/elasticsearch", - }, - { - type: 'doc', - id: "integrations/destinations/e2e-test", - }, - { - type: 'doc', - id: "integrations/destinations/chargify", - }, - { - type: 'doc', - id: "integrations/destinations/gcs", - }, - { - type: 'doc', - id: "integrations/destinations/google-sheets", - }, - { - type: 'doc', - id: "integrations/destinations/pubsub", - }, - { - type: 'doc', - id: "integrations/destinations/kafka", - }, - { - type: 'doc', - id: "integrations/destinations/keen", - }, - { - type: 'doc', - id: "integrations/destinations/local-csv", - }, - { - type: 'doc', - id: "integrations/destinations/local-json", - }, - { - type: 'doc', - id: "integrations/destinations/mariadb-columnstore", - }, - { - type: 'doc', - id: "integrations/destinations/meilisearch", - }, - { - type: 'doc', - id: "integrations/destinations/mongodb", - }, - { - type: 'doc', - id: "integrations/destinations/mqtt", - }, - { - type: 'doc', - id: "integrations/destinations/mssql", - }, - { - type: 'doc', - id: "integrations/destinations/mysql", - }, - { - type: 'doc', - id: "integrations/destinations/oracle", - }, - { - type: 'doc', - id: "integrations/destinations/postgres", - }, - { - type: 'doc', - id: "integrations/destinations/pulsar", - }, - { - type: 'doc', - id: "integrations/destinations/rabbitmq", - }, - { - type: 'doc', - id: "integrations/destinations/redshift", - }, - { - type: 'doc', - id: "integrations/destinations/rockset", - }, - { - type: 'doc', - id: "integrations/destinations/s3", - }, - { - type: 'doc', - id: "integrations/destinations/sftp-json", - }, - { - type: 'doc', - id: "integrations/destinations/snowflake", - }, - { - type: 'doc', - id: "integrations/destinations/cassandra", - }, - { - type: 'doc', - id: "integrations/destinations/scylla", - }, - { - type: 'doc', - id: "integrations/destinations/redis", - }, - { - type: 'doc', - id: "integrations/destinations/kinesis", - }, - { - type: 'doc', - id: "integrations/destinations/streamr", - }, - ] + items: getDestinationConnectors() }, { type: 'doc',