[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#49946] [WIP PATCH v3 19/26] gnu: Add tree-sitter-typescript.
From: |
Pierre Langlois |
Subject: |
[bug#49946] [WIP PATCH v3 19/26] gnu: Add tree-sitter-typescript. |
Date: |
Thu, 10 Feb 2022 22:55:20 +0000 |
* gnu/packages/tree-sitter.scm (tree-sitter-typescript): New variable.
---
gnu/packages/tree-sitter.scm | 87 ++++++++++++++++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 63e558f50f..2dcf4dae87 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -488,3 +488,90 @@ (define-public tree-sitter-rust
(description
"This package provides a Rust grammar for the Tree-sitter library.")
(license license:expat)))
+
+(define-public tree-sitter-typescript
+ (let ((commit "111b07762e86efab9a918b7c721f720c37e76b0a")
+ (revision "1"))
+ (package (inherit tree-sitter-c)
+ (name "tree-sitter-typescript")
+ (version (git-version "0.20.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
"https://github.com/tree-sitter/tree-sitter-typescript")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
"1364bm3wbqqzvp03cvpx1w89bbqynb1v62i46gy7f6rhib9bf63a"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each
+ (lambda (lang)
+ (with-directory-excursion lang
+ (delete-file "src/grammar.json")
+ (delete-file "src/node-types.json")
+ (delete-file "src/parser.c")
+ (delete-file-recursively "src/tree_sitter")))
+ '("typescript" "tsx"))
+ #t))))
+ (inputs
+ (list node-nan
+ `(,tree-sitter-javascript "js")))
+ (arguments
+ (substitute-keyword-arguments (package-arguments tree-sitter-c)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ ;; The parse-example script tries to clone git repositories.
+ (add-after 'unpack 'remove-parse-example
+ (lambda _
+ (substitute* "package.json"
+ ((" && script\\/parse-examples") ""))))
+ (add-after 'build 'build-gyp
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke
+ (search-input-file
+ inputs
+ "/lib/node_modules/npm/bin/node-gyp-bin/node-gyp")
+ "build")))
+ (replace 'tree-sitter-generate
+ (lambda _
+ (for-each (lambda (dir)
+ (with-directory-excursion dir
+ (invoke "tree-sitter" "generate")))
+ '("typescript" "tsx"))))
+ (replace 'build-and-install-lib
+ (lambda* (#:key outputs #:allow-other-keys)
+ (use-modules (guix build json))
+ (let ((name (assoc-ref
+ (call-with-input-file "package.json" read-json)
+ "name"))
+ (lib (string-append #$output "/lib/tree-sitter/")))
+ (mkdir-p lib)
+ (define (source-file? basename)
+ "document me"
+ (let ((path (string-append src "/" basename)))
+ (if (file-exists? path)
+ path
+ #f)))
+ (for-each
+ (lambda (lang)
+ (let ((src (string-append #$output:js
+ "/lib/node_modules/"
+ name "/" lang "/src")))
+ (invoke #$(cc-for-target)
+ "-shared"
+ "-fPIC"
+ "-fno-exceptions"
+ "-O2"
+ "-g"
+ "-o" (string-append lib "/" lang ".so")
+ (string-append src "/scanner.c")
+ (string-append src "/parser.c"))))
+ '("typescript" "tsx")))))))))
+ (home-page "https://github.com/tree-sitter/tree-sitter-typescript")
+ (synopsis "Tree-sitter Typescript grammar")
+ (description
+ "This package provides Typescript and TSX grammars for the Tree-sitter
+library.")
+ (license license:expat))))
--
2.34.0
- [bug#49946] [WIP PATCH v3 14/26] gnu: Add tree-sitter-json., (continued)
- [bug#49946] [WIP PATCH v3 14/26] gnu: Add tree-sitter-json., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 16/26] gnu: Add tree-sitter-php., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 20/26] gnu: Add rust-tree-sitter-for-emacs., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 15/26] gnu: Add tree-sitter-julia., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 22/26] gnu: rust-emacs-macros: Update to 0.17., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 24/26] gnu: Add emacs-tree-sitter-core., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 02/26] gnu: Add rust-html-escape., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 17/26] gnu: Add tree-sitter-python., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 18/26] gnu: Add tree-sitter-rust., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 21/26] gnu: rust-emacs-module: Update to 0.18., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 19/26] gnu: Add tree-sitter-typescript.,
Pierre Langlois <=
- [bug#49946] [WIP PATCH v3 26/26] gnu: Add emacs-tree-sitter-langs., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 23/26] gnu: rust-emacs: Update to 0.18., Pierre Langlois, 2022/02/10
- [bug#49946] [WIP PATCH v3 25/26] gnu: Add emacs-tree-sitter., Pierre Langlois, 2022/02/10
- [bug#49946] [PATCH v4 00/31] gnu: Add tree-sitter for emacs., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 01/31] gnu: Add rust-smallbitvec., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 03/31] gnu: Add rust-spin@0.7., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 02/31] gnu: Add rust-html-escape., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 08/31] gnu: Add tree-sitter-bash., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 09/31] gnu: Add tree-sitter-css., Pierre Langlois, 2022/02/18
- [bug#49946] [PATCH v4 14/31] gnu: Add tree-sitter-html., Pierre Langlois, 2022/02/18