mintlify 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,31 +1,53 @@
1
- # Mintlify CLI
2
-
3
- The Mintlify CLI is used to automate migrations.
4
-
5
- ## Installation
6
-
7
- `npm i -g mintlify`
8
-
9
- If you installed a local version, you may need to uninstall it with
10
-
11
- `npm uninstall -g mintlify` before installing the published version.
12
-
13
- ## Local development & testing
14
-
15
- To test changes locally run:
16
-
17
- `npm run local`
18
-
19
- ## Commands
20
-
21
- ### Migrations
22
-
23
- We support automated migrations from ReadMe, GitBook, and Docusaurus.
24
-
25
- `mintlify scrape-page <url>` - Scrapes the page at the URL provided and creates a corresponding MDX file
26
-
27
- `mintlify scrape-section <url>` - Scrapes the section at the URL provided and creates the MDX files within that section
28
-
29
- #### Options
30
-
31
- `--overwrite` - By default if an existing file with the same path name is detected, the file will not be overwritten by the scraper. Use this option to force an overwrite.
1
+ <div align="center">
2
+ <a href="https://mintlify.com">
3
+ <img
4
+ src="https://res.cloudinary.com/mintlify/image/upload/v1665385627/logo-rounded_zuk7q1.svg"
5
+ alt="Mintlify Logo"
6
+ height="64"
7
+ />
8
+ </a>
9
+ <br />
10
+ <p>
11
+ <h3>
12
+ <b>
13
+ Mintlify CLI
14
+ </b>
15
+ </h3>
16
+ </p>
17
+ <p>
18
+ The Mintlify CLI is the easiest way to build Mintlify apps from the command line.
19
+ </p>
20
+ <p>
21
+
22
+ [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen?logo=github)](/) [![Website](https://img.shields.io/website?url=https%3A%2F%2Fmintlify.com&logo=mintlify)](https://mintlify.com) [![Tests](https://github.com/mintlify/mint/actions/workflows/manual.yml/badge.svg)](https://github.com/mintlify/mint/actions) [![Tweet](https://img.shields.io/twitter/url?url=https%3A%2F%2Fmintlify.com%2F)](https://twitter.com/intent/tweet?url=&text=Check%20out%20%40mintlify) [![Chat on Discord](https://img.shields.io/badge/chat-Discord-7289DA?logo=discord)](https://discord.gg/MPNgtSZkgK) [![Discuss on GitHub](https://img.shields.io/badge/discussions-GitHub-333333?logo=github)](https://github.com/mintlify/mint/discussions)
23
+
24
+ </p>
25
+ <p>
26
+ <sub>
27
+ Built with ❤︎ by
28
+ <a href="https://mintlify.com">
29
+ Mintlify
30
+ </a>
31
+ </sub>
32
+ </p>
33
+ </div>
34
+
35
+ ### 🚀 Installation
36
+
37
+ Download the Mintlify CLI using the following command
38
+
39
+ ```
40
+ npm i mintlify -g
41
+ ```
42
+
43
+ ### 👩‍💻 Development
44
+
45
+ Run the following command at the root of your Mintlify application to preview changes locally.
46
+
47
+ ```
48
+ mintlify dev
49
+ ```
50
+
51
+ ### 🏃 Get Started
52
+
53
+ [Create an account](https://mintlify.com/start) to start using Mintlify for your documentation.
package/bin/constants.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import path from "path";
2
2
  import * as url from "url";
3
+ import os from "os";
3
4
  // package installation location
4
5
  export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
6
+ export const HOME_DIR = os.homedir();
7
+ export const DOT_MINTLIFY = path.join(HOME_DIR, ".mintlify");
8
+ export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
5
9
  // command execution location
6
10
  export const CMD_EXEC_PATH = process.cwd();
7
- export const CLIENT_PATH = path.join(INSTALL_PATH, "mint", "client");
11
+ export const LAST_INVOCATION_PATH_FILE_LOCATION = path.join(CLIENT_PATH, "last-invocation-path");
8
12
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7E,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAErE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,IAAI,CACzD,WAAW,EACX,sBAAsB,CACvB,CAAC"}
@@ -6,13 +6,26 @@ import { isInternetAvailable } from "is-internet-available";
6
6
  import path from "path";
7
7
  import shell from "shelljs";
8
8
  import categorizeFiles from "./categorizeFiles.js";
9
- import { CMD_EXEC_PATH, CLIENT_PATH, INSTALL_PATH } from "../constants.js";
9
+ import { CMD_EXEC_PATH, CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, LAST_INVOCATION_PATH_FILE_LOCATION, } from "../constants.js";
10
10
  import { injectFavicons } from "./injectFavicons.js";
11
11
  import listener from "./listener.js";
12
12
  import { createPage, createMetadataFileFromPages } from "./metadata.js";
13
13
  import { updateConfigFile } from "./mintConfigFile.js";
14
14
  import { buildLogger } from "../util.js";
15
15
  const { readFile } = _promises;
16
+ const saveInvocationPath = async () => {
17
+ await fse.outputFile(LAST_INVOCATION_PATH_FILE_LOCATION, CMD_EXEC_PATH);
18
+ };
19
+ const cleanOldFiles = async () => {
20
+ const lastInvocationPathExists = await pathExists(LAST_INVOCATION_PATH_FILE_LOCATION);
21
+ if (!lastInvocationPathExists)
22
+ return;
23
+ const lastInvocationPath = (await readFile(LAST_INVOCATION_PATH_FILE_LOCATION)).toString();
24
+ if (lastInvocationPath !== CMD_EXEC_PATH) {
25
+ // clean if invoked in new location
26
+ shellExec("git clean -d -x -e node_modules -e last-invocation-path -f");
27
+ }
28
+ };
16
29
  const copyFiles = async (logger) => {
17
30
  logger.start("Syncing doc files...");
18
31
  shell.cd(CMD_EXEC_PATH);
@@ -73,22 +86,24 @@ const gitExists = () => {
73
86
  }
74
87
  return doesGitExist;
75
88
  };
89
+ const shellExec = (cmd) => {
90
+ return shell.exec(cmd, { silent: true });
91
+ };
76
92
  const dev = async () => {
77
- shell.cd(INSTALL_PATH);
93
+ shell.cd(HOME_DIR);
78
94
  const logger = buildLogger("Starting a local Mintlify instance...");
79
- if (!(await pathExists(path.join(INSTALL_PATH, "mint")))) {
80
- shell.exec("mkdir mint");
81
- }
82
- shell.cd("mint");
95
+ await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
96
+ shell.cd(path.join(HOME_DIR, ".mintlify", "mint"));
83
97
  let runYarn = true;
84
98
  const gitInstalled = gitExists();
85
99
  let firstInstallation = false;
86
- if (!(await pathExists(path.join(INSTALL_PATH, "mint", ".git")))) {
100
+ const gitRepoInitialized = await pathExists(path.join(DOT_MINTLIFY, "mint", ".git"));
101
+ if (!gitRepoInitialized) {
87
102
  firstInstallation = true;
88
103
  if (gitInstalled) {
89
104
  logger.start("Initializing local Mintlify instance...");
90
- shell.exec("git init", { silent: true });
91
- shell.exec("git remote add -f mint-origin https://github.com/mintlify/mint.git", { silent: true });
105
+ shellExec("git init");
106
+ shellExec("git remote add -f mint-origin https://github.com/mintlify/mint.git");
92
107
  }
93
108
  else {
94
109
  logger.fail("git must be installed (https://github.com/git-guides/install-git)");
@@ -98,13 +113,11 @@ const dev = async () => {
98
113
  const internet = await isInternetAvailable();
99
114
  let pullOutput = null;
100
115
  if (internet && gitInstalled) {
101
- shell.exec("git config core.sparseCheckout true", { silent: true });
102
- shell.exec('echo "client/" >> .git/info/sparse-checkout', { silent: true });
103
- pullOutput = shell.exec("git pull mint-origin main", {
104
- silent: true,
105
- }).stdout;
106
- shell.exec("git config core.sparseCheckout false", { silent: true });
107
- shell.exec("rm .git/info/sparse-checkout", { silent: true });
116
+ shellExec("git config core.sparseCheckout true");
117
+ shellExec('echo "client/" >> .git/info/sparse-checkout');
118
+ pullOutput = shellExec("git pull mint-origin main").stdout;
119
+ shellExec("git config core.sparseCheckout false");
120
+ shellExec("rm .git/info/sparse-checkout");
108
121
  }
109
122
  if (pullOutput === "Already up to date.\n") {
110
123
  runYarn = false;
@@ -115,7 +128,7 @@ const dev = async () => {
115
128
  logger.succeed("Local Mintlify instance initialized");
116
129
  }
117
130
  logger.start("Updating dependencies...");
118
- shell.exec("yarn", { silent: true });
131
+ shellExec("yarn");
119
132
  if (firstInstallation) {
120
133
  logger.succeed("Installation complete");
121
134
  }
@@ -123,7 +136,10 @@ const dev = async () => {
123
136
  logger.succeed("Dependencies updated");
124
137
  }
125
138
  }
126
- // TODO check for mint.json before copying over files
139
+ if (!firstInstallation) {
140
+ await cleanOldFiles();
141
+ }
142
+ await saveInvocationPath();
127
143
  await copyFiles(logger);
128
144
  run();
129
145
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "mintlify",
3
- "version": "1.0.8",
3
+ "version": "1.1.0",
4
4
  "description": "The Mintlify CLI",
5
5
  "engines": {
6
6
  "node": ">=14.16"
7
7
  },
8
8
  "scripts": {
9
+ "prepare": "tsc",
9
10
  "build": "tsc",
10
11
  "local": "npm uninstall -g mintlify && npm i -g ."
11
12
  },
package/src/constants.ts CHANGED
@@ -1,10 +1,20 @@
1
1
  import path from "path";
2
2
  import * as url from "url";
3
+ import os from "os";
3
4
 
4
5
  // package installation location
5
6
  export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
6
7
 
8
+ export const HOME_DIR = os.homedir();
9
+
10
+ export const DOT_MINTLIFY = path.join(HOME_DIR, ".mintlify");
11
+
12
+ export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
13
+
7
14
  // command execution location
8
15
  export const CMD_EXEC_PATH = process.cwd();
9
16
 
10
- export const CLIENT_PATH = path.join(INSTALL_PATH, "mint", "client");
17
+ export const LAST_INVOCATION_PATH_FILE_LOCATION = path.join(
18
+ CLIENT_PATH,
19
+ "last-invocation-path"
20
+ );
@@ -6,8 +6,13 @@ import { isInternetAvailable } from "is-internet-available";
6
6
  import path from "path";
7
7
  import shell from "shelljs";
8
8
  import categorizeFiles from "./categorizeFiles.js";
9
-
10
- import { CMD_EXEC_PATH, CLIENT_PATH, INSTALL_PATH } from "../constants.js";
9
+ import {
10
+ CMD_EXEC_PATH,
11
+ CLIENT_PATH,
12
+ HOME_DIR,
13
+ DOT_MINTLIFY,
14
+ LAST_INVOCATION_PATH_FILE_LOCATION,
15
+ } from "../constants.js";
11
16
  import { injectFavicons } from "./injectFavicons.js";
12
17
  import listener from "./listener.js";
13
18
  import { createPage, createMetadataFileFromPages } from "./metadata.js";
@@ -16,6 +21,24 @@ import { buildLogger } from "../util.js";
16
21
 
17
22
  const { readFile } = _promises;
18
23
 
24
+ const saveInvocationPath = async () => {
25
+ await fse.outputFile(LAST_INVOCATION_PATH_FILE_LOCATION, CMD_EXEC_PATH);
26
+ };
27
+
28
+ const cleanOldFiles = async () => {
29
+ const lastInvocationPathExists = await pathExists(
30
+ LAST_INVOCATION_PATH_FILE_LOCATION
31
+ );
32
+ if (!lastInvocationPathExists) return;
33
+ const lastInvocationPath = (
34
+ await readFile(LAST_INVOCATION_PATH_FILE_LOCATION)
35
+ ).toString();
36
+ if (lastInvocationPath !== CMD_EXEC_PATH) {
37
+ // clean if invoked in new location
38
+ shellExec("git clean -d -x -e node_modules -e last-invocation-path -f");
39
+ }
40
+ };
41
+
19
42
  const copyFiles = async (logger: any) => {
20
43
  logger.start("Syncing doc files...");
21
44
  shell.cd(CMD_EXEC_PATH);
@@ -88,24 +111,28 @@ const gitExists = () => {
88
111
  return doesGitExist;
89
112
  };
90
113
 
114
+ const shellExec = (cmd: string) => {
115
+ return shell.exec(cmd, { silent: true });
116
+ };
117
+
91
118
  const dev = async () => {
92
- shell.cd(INSTALL_PATH);
119
+ shell.cd(HOME_DIR);
93
120
  const logger = buildLogger("Starting a local Mintlify instance...");
94
- if (!(await pathExists(path.join(INSTALL_PATH, "mint")))) {
95
- shell.exec("mkdir mint");
96
- }
97
- shell.cd("mint");
121
+ await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
122
+ shell.cd(path.join(HOME_DIR, ".mintlify", "mint"));
98
123
  let runYarn = true;
99
124
  const gitInstalled = gitExists();
100
125
  let firstInstallation = false;
101
- if (!(await pathExists(path.join(INSTALL_PATH, "mint", ".git")))) {
126
+ const gitRepoInitialized = await pathExists(
127
+ path.join(DOT_MINTLIFY, "mint", ".git")
128
+ );
129
+ if (!gitRepoInitialized) {
102
130
  firstInstallation = true;
103
131
  if (gitInstalled) {
104
132
  logger.start("Initializing local Mintlify instance...");
105
- shell.exec("git init", { silent: true });
106
- shell.exec(
107
- "git remote add -f mint-origin https://github.com/mintlify/mint.git",
108
- { silent: true }
133
+ shellExec("git init");
134
+ shellExec(
135
+ "git remote add -f mint-origin https://github.com/mintlify/mint.git"
109
136
  );
110
137
  } else {
111
138
  logger.fail(
@@ -118,13 +145,11 @@ const dev = async () => {
118
145
  const internet = await isInternetAvailable();
119
146
  let pullOutput = null;
120
147
  if (internet && gitInstalled) {
121
- shell.exec("git config core.sparseCheckout true", { silent: true });
122
- shell.exec('echo "client/" >> .git/info/sparse-checkout', { silent: true });
123
- pullOutput = shell.exec("git pull mint-origin main", {
124
- silent: true,
125
- }).stdout;
126
- shell.exec("git config core.sparseCheckout false", { silent: true });
127
- shell.exec("rm .git/info/sparse-checkout", { silent: true });
148
+ shellExec("git config core.sparseCheckout true");
149
+ shellExec('echo "client/" >> .git/info/sparse-checkout');
150
+ pullOutput = shellExec("git pull mint-origin main").stdout;
151
+ shellExec("git config core.sparseCheckout false");
152
+ shellExec("rm .git/info/sparse-checkout");
128
153
  }
129
154
  if (pullOutput === "Already up to date.\n") {
130
155
  runYarn = false;
@@ -136,15 +161,17 @@ const dev = async () => {
136
161
  }
137
162
  logger.start("Updating dependencies...");
138
163
 
139
- shell.exec("yarn", { silent: true });
164
+ shellExec("yarn");
140
165
  if (firstInstallation) {
141
166
  logger.succeed("Installation complete");
142
167
  } else {
143
168
  logger.succeed("Dependencies updated");
144
169
  }
145
170
  }
146
-
147
- // TODO check for mint.json before copying over files
171
+ if (!firstInstallation) {
172
+ await cleanOldFiles();
173
+ }
174
+ await saveInvocationPath();
148
175
  await copyFiles(logger);
149
176
  run();
150
177
  };