publish-docs.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #!/usr/bin/env bash
  2. set -e
  3. if [[ -d .vercel ]]; then
  4. rm -r .vercel
  5. fi
  6. CONFIG_FILE=vercel.json
  7. if [[ -n $CI_TAG ]]; then
  8. PROJECT_NAME=docs-solana-com
  9. else
  10. eval "$(../ci/channel-info.sh)"
  11. case $CHANNEL in
  12. edge)
  13. PROJECT_NAME=edge-docs-solana-com
  14. ;;
  15. beta)
  16. PROJECT_NAME=beta-docs-solana-com
  17. ;;
  18. *)
  19. PROJECT_NAME=docs
  20. ;;
  21. esac
  22. fi
  23. cat > "$CONFIG_FILE" <<EOF
  24. {
  25. "name": "$PROJECT_NAME",
  26. "scope": "$VERCEL_SCOPE",
  27. "redirects": [
  28. { "source": "/apps", "destination": "/developers" },
  29. { "source": "/developing/programming-model/overview", "destination": "https://solana.com/docs/programs" },
  30. { "source": "/apps/break", "destination": "https://solana.com/docs/programs/examples" },
  31. { "source": "/apps/drones", "destination": "https://solana.com/docs/programs/examples" },
  32. { "source": "/apps/hello-world", "destination": "https://solana.com/docs/programs/examples" },
  33. { "source": "/apps/javascript-api", "destination": "https://solana.com/docs/clients/javascript" },
  34. { "source": "/apps/programming-faq", "destination": "https://solana.com/docs/programs/faq" },
  35. { "source": "/apps/rent", "destination": "https://solana.com/docs/core/rent" },
  36. { "source": "/apps/webwallet", "destination": "https://solana.com/docs/intro/wallets" },
  37. { "source": "/implemented-proposals/cross-program-invocation", "destination": "https://solana.com/docs/core/cpi" },
  38. { "source": "/implemented-proposals/program-derived-addresses", "destination": "https://solana.com/docs/core/cpi#program-derived-addresses" },
  39. { "source": "/apps/sysvars", "destination": "/developing/runtime-facilities/sysvars" },
  40. { "source": "/apps/builtins", "destination": "/developing/runtime-facilities/programs" },
  41. { "source": "/apps/backwards-compatibility", "destination": "/developing/backwards-compatibility" },
  42. { "source": "/implemented-proposals/secp256k1_instruction", "destination": "/developing/runtime-facilities/programs#secp256k1-program" },
  43. { "source": "/implemented-proposals/implemented-proposals", "destination": "/implemented-proposals" },
  44. { "source": "/cli/install-solana-cli-tools", "destination": "/cli/install" },
  45. { "source": "/cli/conventions", "destination": "/cli/intro" },
  46. { "source": "/cli/choose-a-cluster", "destination": "/cli/examples/choose-a-cluster" },
  47. { "source": "/cli/delegate-stake", "destination": "/cli/examples/delegate-stake" },
  48. { "source": "/delegate-stake", "destination": "/cli/examples/delegate-stake" },
  49. { "source": "/cli/sign-offchain-message", "destination": "/cli/examples/sign-offchain-message" },
  50. { "source": "/cli/deploy-a-program", "destination": "/cli/examples/deploy-a-program" },
  51. { "source": "/cli/transfer-tokens", "destination": "/cli/examples/transfer-tokens" },
  52. { "source": "/offline-signing/durable-nonce", "destination": "/cli/examples/durable-nonce" },
  53. { "source": "/offline-signing", "destination": "/cli/examples/offline-signing" },
  54. { "source": "/developing/test-validator", "destination": "/cli/examples/test-validator" },
  55. { "source": "/wallet-guide/cli", "destination": "/cli/wallets" },
  56. { "source": "/wallet-guide/paper-wallet", "destination": "/cli/wallets/paper" },
  57. { "source": "/wallet-guide/file-system-wallet", "destination": "/cli/wallets/file-system" },
  58. { "source": "/wallet-guide/hardware-wallet", "destination": "/cli/wallets/hardware-wallet" },
  59. { "source": "/wallet-guide/hardware-wallet/ledger", "destination": "/cli/wallets/hardware-wallet/ledger" },
  60. { "source": "/cluster/overview", "destination": "/clusters" },
  61. { "source": "/cluster/bench-tps", "destination": "/clusters/benchmark" },
  62. { "source": "/cluster/performance-metrics", "destination": "/clusters/metrics" },
  63. { "source": "/running-validator", "destination": "/operations" },
  64. { "source": "/validator/get-started/setup-a-validator", "destination": "/operations/setup-a-validator" },
  65. { "source": "/validator/get-started/setup-an-rpc-node", "destination": "/operations/setup-an-rpc-node" },
  66. { "source": "/validator/best-practices/operations", "destination": "/operations/best-practices/general" },
  67. { "source": "/validator/best-practices/monitoring", "destination": "/operations/best-practices/monitoring" },
  68. { "source": "/validator/best-practices/security", "destination": "/operations/best-practices/security" },
  69. { "source": "/validator/overview/running-validator-or-rpc-node", "destination": "/operations/validator-or-rpc-node" },
  70. { "source": "/validator/overview/validator-prerequisites", "destination": "/operations/prerequisites" },
  71. { "source": "/validator/overview/validator-initiatives", "destination": "/operations/validator-initiatives" },
  72. { "source": "/running-validator/validator-reqs", "destination": "/operations/requirements" },
  73. { "source": "/running-validator/validator-troubleshoot", "destination": "/operations/guides/validator-troubleshoot" },
  74. { "source": "/running-validator/validator-start", "destination": "/operations/guides/validator-start" },
  75. { "source": "/running-validator/vote-accounts", "destination": "/operations/guides/vote-accounts" },
  76. { "source": "/running-validator/validator-stake", "destination": "/operations/guides/validator-stake" },
  77. { "source": "/running-validator/validator-monitor", "destination": "/operations/guides/validator-monitor" },
  78. { "source": "/running-validator/validator-info", "destination": "/operations/guides/validator-info" },
  79. { "source": "/running-validator/validator-failover", "destination": "/operations/guides/validator-failover" },
  80. { "source": "/running-validator/restart-cluster", "destination": "/operations/guides/restart-cluster" },
  81. { "source": "/cluster/synchronization", "destination": "/consensus/synchronization" },
  82. { "source": "/cluster/leader-rotation", "destination": "/consensus/leader-rotation" },
  83. { "source": "/cluster/fork-generation", "destination": "/consensus/fork-generation" },
  84. { "source": "/cluster/managing-forks", "destination": "/consensus/managing-forks" },
  85. { "source": "/cluster/turbine-block-propagation", "destination": "/consensus/turbine-block-propagation" },
  86. { "source": "/cluster/commitments", "destination": "/consensus/commitments" },
  87. { "source": "/cluster/vote-signing", "destination": "/consensus/vote-signing" },
  88. { "source": "/cluster/stake-delegation-and-rewards", "destination": "/consensus/stake-delegation-and-rewards" },
  89. { "source": "/developing/backwards-compatibility", "destination": "/backwards-compatibility" },
  90. { "source": "/validator/faq", "destination": "/faq" },
  91. { "source": "/developing/plugins/geyser-plugins", "destination": "/validator/geyser" },
  92. { "source": "/validator/overview/what-is-an-rpc-node", "destination": "/what-is-an-rpc-node" },
  93. { "source": "/validator/overview/what-is-a-validator", "destination": "/what-is-a-validator" },
  94. { "source": "/developing/runtime-facilities/:path*", "destination": "/runtime/:path*" },
  95. { "destination": "https://solana.com/docs/rpc/:path*", "source": "/api/:path*" },
  96. { "destination": "https://solana.com/docs/rpc", "source": "/developing/clients/jsonrpc-api" },
  97. { "destination": "https://solana.com/docs/rpc", "source": "/apps/jsonrpc-api" },
  98. { "destination": "https://solana.com/docs/terminology", "source": "/terminology" },
  99. { "destination": "https://solana.com/docs/core/rent", "source": "/developing/intro/rent" },
  100. { "destination": "https://solana.com/docs/core/programs", "source": "/developing/intro/programs" },
  101. { "destination": "https://solana.com/docs/core/accounts", "source": "/developing/programming-model/accounts" },
  102. { "destination": "https://solana.com/docs/core/cpi", "source": "/developing/programming-model/calling-between-programs" },
  103. { "destination": "https://solana.com/docs/core/runtime", "source": "/developing/programming-model/runtime" },
  104. { "destination": "https://solana.com/docs/core/transactions", "source": "/developing/programming-model/transactions" },
  105. { "destination": "https://solana.com/docs/core/transactions/fees", "source": "/developing/intro/transaction_fees" },
  106. { "destination": "https://solana.com/docs/core/transactions/confirmation", "source": "/developing/transaction_confirmation" },
  107. { "destination": "https://solana.com/docs/core/transactions/versions", "source": "/developing/versioned-transactions" },
  108. { "destination": "https://solana.com/docs/core/transactions/retry", "source": "/integrations/retrying-transactions" },
  109. { "destination": "https://solana.com/docs/intro/dev", "source": "/developing/programming-model/overview" },
  110. { "destination": "https://solana.com/docs/advanced/lookup-tables", "source": "/developing/lookup-tables" },
  111. { "destination": "https://solana.com/docs", "source": "/developers" },
  112. { "destination": "https://solana.com/docs/advanced/state-compression", "source": "/learn/state-compression" },
  113. { "destination": "https://solana.com/developers/guides/javascript/compressed-nfts", "source": "/developing/guides/compressed-nfts" },
  114. { "destination": "https://solana.com/docs/programs", "source": "/developing/on-chain-programs/overview" },
  115. { "destination": "https://solana.com/docs/programs/debugging", "source": "/developing/on-chain-programs/debugging" },
  116. { "destination": "https://solana.com/docs/programs/deploying", "source": "/developing/on-chain-programs/deploying" },
  117. { "destination": "https://solana.com/docs/programs/examples", "source": "/developing/on-chain-programs/examples" },
  118. { "destination": "https://solana.com/docs/programs/faq", "source": "/developing/on-chain-programs/faq" },
  119. { "destination": "https://solana.com/docs/programs/limitations", "source": "/developing/on-chain-programs/limitations" },
  120. { "destination": "https://solana.com/docs/programs/lang-rust", "source": "/developing/on-chain-programs/developing-rust" },
  121. { "destination": "https://solana.com/docs/programs/lang-c", "source": "/developing/on-chain-programs/developing-c" },
  122. { "destination": "https://solana.com/docs/clients/javascript-reference", "source": "/developing/clients/javascript-reference" },
  123. { "destination": "https://solana.com/docs/clients/javascript", "source": "/developing/clients/javascript-api" },
  124. { "destination": "https://solana.com/docs/clients/rust", "source": "/developing/clients/rust-api" },
  125. { "destination": "https://solana.com/docs/intro/dev", "source": "/getstarted/overview" },
  126. { "destination": "https://solana.com/developers/guides/getstarted/hello-world-in-your-browser", "source": "/getstarted/hello-world" },
  127. { "destination": "https://solana.com/developers/guides/getstarted/setup-local-development", "source": "/getstarted/local" },
  128. { "destination": "https://solana.com/developers/guides/getstarted/local-rust-hello-world", "source": "/getstarted/rust" },
  129. { "destination": "https://solana.com/docs/core/clusters", "source": "/clusters/rpc-endpoints" },
  130. { "destination": "https://solana.com/docs/economics/staking", "source": "/staking" },
  131. { "destination": "https://solana.com/docs/economics/staking/:path*", "source": "/staking/:path*" },
  132. { "destination": "https://solana.com/docs/economics/inflation/:path*", "source": "/inflation/:path*" },
  133. { "destination": "https://solana.com/docs/more/exchange", "source": "/integrations/exchange" },
  134. { "destination": "https://solana.com/docs/intro/transaction_fees", "source": "/transaction_fees" },
  135. { "destination": "https://solana.com/docs/intro/economics", "source": "/storage_rent_economics" },
  136. { "destination": "https://solana.com/docs/intro/economics", "source": "/economics_overview" },
  137. { "destination": "https://solana.com/docs/intro/history", "source": "/history" },
  138. { "destination": "https://solana.com/docs/intro/wallets", "source": "/wallet-guide/support" },
  139. { "destination": "https://solana.com/docs/intro/wallets", "source": "/wallet-guide" },
  140. { "destination": "https://solana.com/docs/intro", "source": "/introduction" }
  141. ]
  142. }
  143. EOF
  144. [[ -n $VERCEL_TOKEN ]] || {
  145. echo "VERCEL_TOKEN is undefined. Needed for Vercel authentication."
  146. exit 1
  147. }
  148. vercel deploy . --local-config="$CONFIG_FILE" --confirm --token "$VERCEL_TOKEN" --prod