Skip to content

Commit 5a1ba0f

Browse files
authored
Merge pull request #18 from deepnote/chris/publish-packages-to-npm-workflow
chore: Prepare the publishing of the packages to npm.
1 parent f8efc06 commit 5a1ba0f

File tree

10 files changed

+124
-13
lines changed

10 files changed

+124
-13
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module.exports = {
2323
'node/no-unsupported-features/es-syntax': 'off',
2424
'node/no-extraneous-import': 'off',
2525
"node/no-missing-import": ["error", {
26-
"allowModules": ["vscode"]
26+
"allowModules": ["vscode", "@deepnote/sqlint", "@deepnote/sql-parser", "@deepnote/sql-language-server", "sql-language-server"]
2727
}],
2828
'import/first': 0,
2929
'import/named': 2,

.github/workflows/cd.yml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
name: CD
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
publish:
12+
name: Publish to npm
13+
runs-on: ubuntu-latest
14+
timeout-minutes: 10
15+
environment: release
16+
# Only run if the release tag follows the package-scoped pattern: @deepnote/package-name@version
17+
if: startsWith(github.event.release.tag_name, '@deepnote/')
18+
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
22+
23+
- name: Extract package info from tag
24+
id: package_info
25+
env:
26+
TAG: ${{ github.event.release.tag_name }}
27+
run: |
28+
# Extract package name and version from tag (format: @deepnote/package-name@version)
29+
if [[ ! "$TAG" =~ ^(@deepnote/[^@]+)@(.+)$ ]]; then
30+
echo "Error: Tag must follow format @deepnote/package-name@version"
31+
exit 1
32+
fi
33+
34+
PACKAGE_NAME="${BASH_REMATCH[1]}"
35+
TAG_VERSION="${BASH_REMATCH[2]}"
36+
37+
echo "package_name=$PACKAGE_NAME" >> $GITHUB_OUTPUT
38+
echo "tag_version=$TAG_VERSION" >> $GITHUB_OUTPUT
39+
40+
echo "Detected package: $PACKAGE_NAME"
41+
echo "Detected version: $TAG_VERSION"
42+
43+
- name: Setup Node.js
44+
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
45+
with:
46+
node-version: '18'
47+
cache: 'yarn'
48+
registry-url: 'https://registry.npmjs.org/'
49+
50+
- name: Install dependencies
51+
run: yarn install --frozen-lockfile
52+
53+
- name: Validate package version
54+
env:
55+
PACKAGE_NAME: ${{ steps.package_info.outputs.package_name }}
56+
TAG_VERSION: ${{ steps.package_info.outputs.tag_version }}
57+
run: |
58+
# Map package name to directory
59+
case "$PACKAGE_NAME" in
60+
"@deepnote/sql-parser") PACKAGE_PATH="packages/sql-parser" ;;
61+
"@deepnote/sqlint") PACKAGE_PATH="packages/sqlint" ;;
62+
"@deepnote/sql-language-server") PACKAGE_PATH="packages/server" ;;
63+
*) echo "Error: Unknown package $PACKAGE_NAME"; exit 1 ;;
64+
esac
65+
66+
if [[ ! -f "$PACKAGE_PATH/package.json" ]]; then
67+
echo "Error: Package not found at $PACKAGE_PATH"
68+
exit 1
69+
fi
70+
71+
PACKAGE_VERSION=$(node -p "require('./$PACKAGE_PATH/package.json').version")
72+
73+
if [[ "$PACKAGE_VERSION" != "$TAG_VERSION" ]]; then
74+
echo "Error: Version mismatch!"
75+
echo " Tag version: $TAG_VERSION"
76+
echo " Package version: $PACKAGE_VERSION"
77+
exit 1
78+
fi
79+
80+
echo "Version validation passed: $TAG_VERSION"
81+
82+
- name: Build dependencies and package
83+
env:
84+
PACKAGE_NAME: ${{ steps.package_info.outputs.package_name }}
85+
run: |
86+
case "$PACKAGE_NAME" in
87+
"@deepnote/sql-parser")
88+
yarn workspace @deepnote/sql-parser build
89+
;;
90+
"@deepnote/sqlint")
91+
yarn workspace @deepnote/sql-parser build
92+
yarn build:sqlint
93+
;;
94+
"@deepnote/sql-language-server")
95+
yarn npm:prepublish
96+
;;
97+
esac
98+
99+
- name: Publish to npm
100+
env:
101+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
102+
PACKAGE_NAME: ${{ steps.package_info.outputs.package_name }}
103+
run: |
104+
case "$PACKAGE_NAME" in
105+
"@deepnote/sql-parser") cd packages/sql-parser ;;
106+
"@deepnote/sqlint") cd packages/sqlint ;;
107+
"@deepnote/sql-language-server") cd packages/server ;;
108+
esac
109+
npm publish --access public

packages/server/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "sql-language-server",
2+
"name": "@deepnote/sql-language-server",
33
"version": "1.7.0",
44
"main": "dist/src/index.js",
55
"bin": {
@@ -48,7 +48,7 @@
4848
"mysql2": "^2.3.0",
4949
"node-ssh-forward": "^0.6.3",
5050
"pg": "^8.9.0",
51-
"sqlint": "^1.7.0",
51+
"@deepnote/sqlint": "^1.7.0",
5252
"sqlite3": "^5.0.3",
5353
"vscode-languageclient": "^6.1.3",
5454
"vscode-languageserver": "8.0.0-next.8",

packages/server/src/cache.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Diagnostic as SQLintDiagnostic } from 'sqlint'
1+
import { Diagnostic as SQLintDiagnostic } from '@deepnote/sqlint'
22
import { Diagnostic, Range } from 'vscode-languageserver'
33
import { stubLogger } from './logger'
44

packages/server/src/createDiagnostics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { parse, ParseError } from '@deepnote/sql-parser'
22
import { PublishDiagnosticsParams, Diagnostic } from 'vscode-languageserver'
33
import { DiagnosticSeverity } from 'vscode-languageserver-types'
4-
import { lint, ErrorLevel, LintResult, RawConfig } from 'sqlint'
4+
import { lint, ErrorLevel, LintResult, RawConfig } from '@deepnote/sqlint'
55
import cache, { LintCache } from './cache'
66
import { stubLogger } from './logger'
77

packages/server/src/createServer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import {
1717
Position,
1818
CodeActionKind,
1919
} from 'vscode-languageserver-types'
20-
import { lint, LintResult } from 'sqlint'
21-
import { RawConfig } from 'sqlint'
20+
import { lint, LintResult, FixDescription } from '@deepnote/sqlint'
21+
import { RawConfig } from '@deepnote/sqlint'
2222
import cache from './cache'
2323
import { complete } from './complete'
2424
import createDiagnostics from './createDiagnostics'
@@ -291,7 +291,7 @@ export function createServerWithConnection(connection: Connection) {
291291
documentChanges: [
292292
TextDocumentEdit.create(
293293
{ uri: params.textDocument.uri, version: document.version },
294-
fixes.map((v) => {
294+
fixes.map((v: FixDescription) => {
295295
const edit =
296296
v.range.startOffset === v.range.endOffset
297297
? TextEdit.insert(

packages/sqlint/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "sqlint",
2+
"name": "@deepnote/sqlint",
33
"version": "1.7.0",
44
"main": "dist/src/index",
55
"bin": "bin/cli.js",

packages/sqlint/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { lint, LintResult } from './cli/lint'
22
import { RawConfig } from './cli/loadConfig'
33
import { ErrorLevel, Diagnostic, Config } from './rules/index'
4-
import { applyFixes } from './fixer'
4+
import { applyFixes, FixDescription } from './fixer'
55

66
export {
77
lint,
@@ -11,4 +11,5 @@ export {
1111
RawConfig,
1212
Config,
1313
applyFixes,
14+
FixDescription,
1415
}

packages/sqlint/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"compilerOptions": {
44
"rootDir": ".",
55
"outDir": "dist",
6-
"declaration": true
6+
"declaration": true,
7+
"composite": true
78
},
89
"exclude": [
910
"node_modules",

tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
"baseUrl": ".",
1414
"composite": true,
1515
"paths": {
16-
"sql-language-server": ["packages/server/*"],
16+
"@deepnote/sql-language-server": ["packages/server/*"],
1717
"@deepnote/sql-parser": ["packages/sql-parser/*"],
18-
"sqlint": ["packages/sqlint/*"]
18+
"@deepnote/sqlint": ["packages/sqlint/*"]
1919
}
2020
},
2121
}

0 commit comments

Comments
 (0)