Skip to content

Commit a69fff8

Browse files
feat: add nursery package
1 parent 4e430cf commit a69fff8

File tree

9 files changed

+85
-33
lines changed

9 files changed

+85
-33
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"name": "@ast-grep/langs",
33
"private": true,
44
"workspaces": [
5-
"packages/*"
5+
"packages/*",
6+
"scripts/*"
67
],
78
"version": "0.0.1",
89
"description": "Monorepo for `@ast-grep/lang-*` packages",

packages/toml/build.js

-10
This file was deleted.

packages/toml/nursery.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const { setup } = require('@ast-grep/nursery')
2+
const toml = require('./index')
3+
4+
setup({
5+
name: 'toml',
6+
packageName: '@tree-sitter-grammars/tree-sitter-toml',
7+
testConfig: {
8+
languageRegistration: toml,
9+
code: `
10+
$NAME = "toml"
11+
`
12+
}
13+
})

packages/toml/package.json

+8-6
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@
44
"description": "",
55
"main": "index.js",
66
"scripts": {
7-
"build": "node build.js && tree-sitter build -o parser.so",
8-
"test": "node test.js"
7+
"copy-src": "node nursery.js copy",
8+
"build": "tree-sitter build -o parser.so",
9+
"postinstall": "npm run build",
10+
"test": "node nursery.js test"
911
},
1012
"keywords": [],
1113
"author": "",
1214
"license": "ISC",
13-
"dependencies": {
14-
"tree-sitter-cli": "0.24.6",
15-
"@tree-sitter-grammars/tree-sitter-toml": "0.7.0"
15+
"peerDependencies": {
16+
"tree-sitter-cli": "0.24.6"
1617
},
1718
"devDependencies": {
18-
"@ast-grep/napi": "0.33.0"
19+
"@tree-sitter-grammars/tree-sitter-toml": "0.7.0",
20+
"@ast-grep/nursery": "workspace:*"
1921
}
2022
}

packages/toml/test.js

-13
This file was deleted.

pnpm-lock.yaml

+12-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
packages:
22
- 'packages/*'
3+
- 'scripts/*'
34

scripts/nursery/index.js

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const { cp } = require('fs').promises
2+
const { parse, registerDynamicLanguage } = require('@ast-grep/napi')
3+
4+
const path = require('path')
5+
6+
async function copySrc(packageName) {
7+
const src = path.join(process.cwd(), 'node_modules', packageName, 'src')
8+
await cp(src, 'src', { recursive: true })
9+
}
10+
11+
function test(name, lang, code) {
12+
registerDynamicLanguage({ [name]: lang })
13+
const tree = parse(name, code)
14+
const root = tree.root()
15+
const node = root.find('$NAME = "toml"')
16+
console.log(node.kind())
17+
}
18+
19+
// jsdoc for setupConfig
20+
// @param {Object} setupConfig
21+
// @param {string} setupConfig.packageName
22+
// @param {string} setupConfig.name
23+
// @param {Object} setupConfig.testConfig
24+
// @param {Object} setupConfig.testConfig.languageRegistration
25+
// @param {string} setupConfig.testConfig.code
26+
//
27+
//
28+
exports.setup = function setup(setupConfig){
29+
const arg = process.argv[2]
30+
if (arg === 'copy') {
31+
copySrc(setupConfig.packageName)
32+
} else if (arg === 'test') {
33+
const testConfig = setupConfig.testConfig
34+
test(setupConfig.name, testConfig.languageRegistration, testConfig.code)
35+
}
36+
}

scripts/nursery/package.json

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"name": "@ast-grep/nursery",
3+
"version": "0.0.1",
4+
"description": "",
5+
"main": "index.js",
6+
"keywords": [],
7+
"author": "",
8+
"license": "ISC",
9+
"dependencies": {
10+
"tree-sitter-cli": "0.24.6",
11+
"@ast-grep/napi": "0.33.0"
12+
}
13+
}

0 commit comments

Comments
 (0)