From 442cd2f34129f4c43cb71f464541c45134a6a340 Mon Sep 17 00:00:00 2001 From: Bankk <106103625+BankkRoll@users.noreply.github.com> Date: Fri, 8 Sep 2023 13:21:13 -0400 Subject: [PATCH] init --- README.md | 233 +++++++++++++++++++++++++++++ dist/extension.js | 249 +++++++++++++++++++++++++++++++ dist/extension.js.map | 1 + package.json | 132 ++++++++++++++++ src/extension.ts | 224 +++++++++++++++++++++++++++ src/test/runTest.ts | 24 +++ src/test/suite/extension.test.ts | 16 ++ src/test/suite/index.ts | 41 +++++ tsconfig.json | 16 ++ webpack.config.js | 48 ++++++ 10 files changed, 984 insertions(+) create mode 100644 README.md create mode 100644 dist/extension.js create mode 100644 dist/extension.js.map create mode 100644 package.json create mode 100644 src/extension.ts create mode 100644 src/test/runTest.ts create mode 100644 src/test/suite/extension.test.ts create mode 100644 src/test/suite/index.ts create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..2cf644a --- /dev/null +++ b/README.md @@ -0,0 +1,233 @@ +
+

+
auto-header-est2023 +

+

◦ Easily name your files with custom header text, you have the freedom to choose between single-line or multi-line comment styles to suit your preference. Use the built-in command or the auto-tagging feature for effortless header generation or just use autotag we will figure out the langue and do it for you on each new file you make

+
+ +--- + +
+License JavaScript TypeScript GitHub Stars GitHub Last Commit GitHub Repo Size
+ + + +--- + +## 🗂️ Table of Contents + +- [Features](#️-features) +- [Installation](#-installation) +- [Usage](#-usage) +- [Scripts](#-scripts) +- [Configuration](#-configuration) +- [Directory Tree](#-directory-tree) +- [Language Usage](#-language-usage) +- [Contributing](#-contributing) +- [License](#-license) +- [Author](#-author) + +--- + + + +## ⚙️ Features + +| Feature | Description | +| ------- | ----------- | +| **Multiple Language Support** | Supports over **100 programming languages** and counting! The extension automatically detects the language's comment syntax for precise header insertion. | +| **Auto Header Insertion (Beta)** | Allows for headers to be automatically inserted into new files of recognized languages. | +| **File Naming Feature** | Directly place headers in files or entire folders, ensuring a consistent and organized codebase. | +| **Extendable** | For those niche languages or specific use cases, easily define custom comment syntax that may not be covered by default. | +| **Customization** | Personalize your headers with dynamic placeholders such as:
- `{author}`: Designate the file's author.
- `{date}`: Timestamp your work with the creation or last modified date.
- `{company}`: Attribute the work to a particular organization or entity. | + + +--- + +## 📦 Installation + +1. Launch Visual Studio Code. +2. Navigate to Extensions or press `Ctrl+Shift+X`. +3. In the search bar, type "Header Naming" and select the corresponding result to install. + +--- + +## 🚀 Usage + +To seamlessly insert headers into your code, follow the steps below: + +1. **Auto-Tagging Configuration:** + - Navigate to your VSCode settings. + - Enable `auto-header-est2023.autoHeader`. + - This sets the extension to automatically append headers to new files of supported languages. + +2. **Quick Header Generation:** + - Use the `Ctrl+Shift+SpaceBar` shortcut for immediate header generation. + +3. **Command Palette:** + - Activate the command palette with `Ctrl+Shift+P`. + - Search for and select "Add Header". + +## 🛠️ Scripts + +Here are some common scripts you can run: + +#### vscode:prepublish + +Prepares the extension for publishing. + +You can run this script using npm or yarn: + +```shell +npm run vscode:prepublish +``` + +Or with yarn: + +```shell +yarn vscode:prepublish +``` + +#### compile + +Uses webpack to compile the TypeScript source code. + +You can run this script using npm or yarn: + +```shell +npm run compile +``` + +Or with yarn: + +```shell +yarn compile +``` + +#### watch + +Uses webpack in watch mode to automatically recompile when files change. + +You can run this script using npm or yarn: + +```shell +npm run watch +``` + +Or with yarn: + +```shell +yarn watch +``` + +#### package + +Packages the extension in production mode. + +You can run this script using npm or yarn: + +```shell +npm run package +``` + +Or with yarn: + +```shell +yarn package +``` + +--- + +## Configuration + +Harness the full potential of "Auto Header EST.2023" by tailoring it to your preferences using the VSCode settings: + +- `auto-header-est2023.autoHeader`: Enable this option to automatically insert headers into new files of supported languages. + +- `auto-header-est2023.autoGenerateFilePath`: If enabled, the extension will automatically generate and insert the relative path of the file as a comment, providing a clearer context within larger projects. + +- `auto-header-est2023.commentType`: Choose your preferred comment style. Options include: + - "singleline": All header content is condensed into a single line. + - "multiline": The header content spans across multiple lines. + +- `auto-header-est2023.author`: Specify the author's name which replaces the `{author}` placeholder in the header. + +- `auto-header-est2023.company`: Register your company's name, which will replace the `{company}` placeholder. + +- `auto-header-est2023.date`: By default, set to `{timestamp}` which inputs the current timestamp. This replaces the `{date}` placeholder in the header. If you wish to have a custom date format, this can be defined here. + +- `auto-header-est2023.line1`, `line2`, `line3`: Fine-tune each line of the header with dynamic placeholders. Available placeholders include `{author}`, `{date}`, and `{company}`. If you prefer to exclude any of these lines from the header, simply leave the corresponding setting blank. + +- `auto-header-est2023.customCommentSyntax`: Define custom comment syntax for specific or niche languages that might not be covered by default. This allows you to extend the utility of the extension to virtually any language. + +--- + +## 🌳 Directory Tree + +```graphql +├── 📄 .eslintrc.json +├── 📦 .vscode/ + ├── 📄 extensions.json + ├── 📄 launch.json + ├── 📄 settings.json + └── 📄 tasks.json +├── 📄 .vscodeignore +├── 📄 README.md +├── 📄 CHANGELOG.md +├── 📦 dist/ + ├── 📄 extension.js + └── 📄 extension.js.map +├── 📄 package-lock.json +├── 📄 package.json +├── 📦 src/ + ├── 📄 extension.ts + └── 📂 test/ + ├── 📄 runTest.ts + └── 📂 suite/ + ├── 📄 extension.test.ts + └── 📄 index.ts +├── 📄 tsconfig.json +├── 📄 vsc-extension-quickstart.md +└── 📄 webpack.config.js +``` + +--- + +## 💻 Language Usage + +``` +JSON: ██████ 52.42% +TypeScript: ██ 35% +Other: █ 11.58% +``` + +--- + +## 🤝 Contributing + +1. Fork the Project +2. Create your Feature Branch +3. Commit your Changes +4. Push to the Branch +5. Open a Pull Request +6. Code review +7. Merge the changes +8. Update the documentation + +--- + +## 📝 License + +This project is licensed under [MIT](./LICENSE). + +## 👤 Author + +**[BankkRoll](https://github.com/BankkRoll)** + +- Twitter: [@bankkroll_eth](https://twitter.com/bankkroll_eth) +- GitHub: [@BankkRoll](https://github.com/BankkRoll) + + +--- + +

This README.md has been generated with ❤️ using quick-readme

diff --git a/dist/extension.js b/dist/extension.js new file mode 100644 index 0000000..95d32c9 --- /dev/null +++ b/dist/extension.js @@ -0,0 +1,249 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((module) => { + +module.exports = require("vscode"); + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.deactivate = exports.activate = void 0; +// src/extension.ts +const vscode = __webpack_require__(1); +// Mapping of programming languages to their respective comment syntax. +const languageCommentMapping = { + "javascript": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "python": { "single": "#", "multiStart": "'''", "multiEnd": "'''" }, + "java": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "c": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "cpp": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "csharp": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "go": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "rust": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "ruby": { "single": "#", "multiStart": "=begin", "multiEnd": "=end" }, + "php": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "vbnet": { "single": "'", "multiStart": "", "multiEnd": "" }, + "kotlin": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "swift": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "typescript": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "r": { "single": "#", "multiStart": "", "multiEnd": "" }, + "perl": { "single": "#", "multiStart": "=pod", "multiEnd": "=cut" }, + "erlang": { "single": "%", "multiStart": "", "multiEnd": "" }, + "elixir": { "single": "#", "multiStart": "", "multiEnd": "" }, + "haskell": { "single": "--", "multiStart": "{-", "multiEnd": "-}" }, + "scala": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "lua": { "single": "--", "multiStart": "--[[", "multiEnd": "]]" }, + "bash": { "single": "#", "multiStart": ": <<'END'", "multiEnd": "END" }, + "assembly": { "single": ";", "multiStart": "", "multiEnd": "" }, + "matlab": { "single": "%", "multiStart": "%{", "multiEnd": "%}" }, + "fortran": { "single": "!", "multiStart": "", "multiEnd": "" }, + "groovy": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "pascal": { "single": "//", "multiStart": "{", "multiEnd": "}" }, + "prolog": { "single": "%", "multiStart": "/*", "multiEnd": "*/" }, + "shell": { "single": "#", "multiStart": "", "multiEnd": "" }, + "html": { "single": "" }, + "css": { "single": "/*", "multiStart": "/*", "multiEnd": "*/" }, + "xml": { "single": "" }, + "yaml": { "single": "#", "multiStart": "", "multiEnd": "" }, + "lisp": { "single": ";", "multiStart": "", "multiEnd": "" }, + "fsharp": { "single": "//", "multiStart": "(*", "multiEnd": "*)" }, + "clojure": { "single": ";", "multiStart": "", "multiEnd": "" }, + "dart": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "coffeescript": { "single": "#", "multiStart": "###", "multiEnd": "###" }, + "graphql": { "single": "#", "multiStart": "", "multiEnd": "" }, + "markdown": { "single": "" }, + "objectivec": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "objectivecpp": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "powershell": { "single": "#", "multiStart": "<#", "multiEnd": "#>" }, + "pug": { "single": "//-", "multiStart": "", "multiEnd": "" }, + "rmarkdown": { "single": "" }, + "sass": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "scss": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "sql": { "single": "--", "multiStart": "/*", "multiEnd": "*/" }, + "stylus": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "tex": { "single": "%", "multiStart": "", "multiEnd": "" }, + "toml": { "single": "#", "multiStart": "", "multiEnd": "" }, + "vue": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "xaml": { "single": "" }, + "zig": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "apex": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "azurescript": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "batchfile": { "single": "REM", "multiStart": "", "multiEnd": "" }, + "dockerfile": { "single": "#", "multiStart": "", "multiEnd": "" }, + "graphqls": { "single": "#", "multiStart": "", "multiEnd": "" }, + "handlebars": { "single": "{{!--", "multiStart": "{{!--", "multiEnd": "--}}" }, + "ini": { "single": ";", "multiStart": "", "multiEnd": "" }, + "latex": { "single": "%", "multiStart": "", "multiEnd": "" }, + "makefile": { "single": "#", "multiStart": "", "multiEnd": "" }, + "nginx": { "single": "#", "multiStart": "", "multiEnd": "" }, + "properties": { "single": "#", "multiStart": "", "multiEnd": "" }, + "twig": { "single": "{#", "multiStart": "{#", "multiEnd": "#}" }, + "typescriptreact": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "verilog": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "vhdl": { "single": "--", "multiStart": "", "multiEnd": "" }, + "visualforce": { "single": "" }, + "wolfram": { "single": "(*", "multiStart": "(*", "multiEnd": "*)" }, + "xsl": { "single": "" }, + "yamlpipeline": { "single": "#", "multiStart": "", "multiEnd": "" }, + "abap": { "single": "*", "multiStart": "“", "multiEnd": "”" }, + "cobol": { "single": "*>", "multiStart": "", "multiEnd": "" }, + "delphi": { "single": "//", "multiStart": "{", "multiEnd": "}" }, + "julia": { "single": "#", "multiStart": "#=", "multiEnd": "=#" }, + "ocaml": { "single": "(*", "multiStart": "(*", "multiEnd": "*)" }, + "racket": { "single": ";", "multiStart": "#|", "multiEnd": "|#" }, + "scheme": { "single": ";", "multiStart": "#|", "multiEnd": "|#" }, + "spss": { "single": "*.", "multiStart": "/*", "multiEnd": "*/" }, + "vbscript": { "single": "'", "multiStart": "", "multiEnd": "" }, + "jcl": { "single": "//*", "multiStart": "", "multiEnd": "" }, + "plsql": { "single": "--", "multiStart": "/*", "multiEnd": "*/" }, + "algol": { "single": "COMMENT", "multiStart": "", "multiEnd": ";" }, + "applescript": { "single": "--", "multiStart": "(*", "multiEnd": "*)" }, + "awk": { "single": "#", "multiStart": "", "multiEnd": "" }, + "glsl": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "jsonc": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "less": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "logos": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "postscript": { "single": "%", "multiStart": "", "multiEnd": "" }, + "restructuredtext": { "single": "..", "multiStart": "", "multiEnd": "" }, + "sas": { "single": "*", "multiStart": "/*", "multiEnd": "*/" }, + "sml": { "single": "", "multiStart": "(*", "multiEnd": "*)" }, + "solidity": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "systemverilog": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "terraform": { "single": "#", "multiStart": "/*", "multiEnd": "*/" }, + "vala": { "single": "//", "multiStart": "/*", "multiEnd": "*/" } +}; +/** + * Adds a header comment to the provided document based on its language. + * @param {vscode.TextDocument} document - The VS Code document to which the header should be added. + */ +function addHeaderToDocument(document) { + const langId = document.languageId; + const commentSyntax = languageCommentMapping[langId]; + if (!commentSyntax) { + return; + } + const config = vscode.workspace.getConfiguration('auto-header-est2023'); + const autoGenerateFilePath = config.get('autoGenerateFilePath'); + let filePathComment = ''; + if (autoGenerateFilePath) { + const filePath = document.fileName; + const relativePath = vscode.workspace.asRelativePath(filePath); + filePathComment = `${commentSyntax.single} ${relativePath}\n`; + } + const author = config.get('author') || 'Unknown Author'; + let date = config.get('date'); + if (!date || date === '{timestamp}') { + date = new Date().toLocaleDateString(); + } + else { + date = date; + } + const company = config.get('company') || 'Unknown Company'; + let line1 = config.get('line1') || ''; + let line2 = config.get('line2') || ''; + let line3 = config.get('line3') || ''; + const commentType = config.get('commentType') || 'multiline'; + const formatLine = (line) => { + return line.replace('{author}', author ?? '') + .replace('{date}', date ?? '') + .replace('{company}', company ?? ''); + }; + line1 = formatLine(line1); + line2 = formatLine(line2); + line3 = formatLine(line3); + let headerLines = []; + if (line1) { + headerLines.push(line1); + } + if (line2) { + headerLines.push(line2); + } + if (line3) { + headerLines.push(line3); + } + let headerComment; + if (commentType === 'singleline') { + headerComment = filePathComment + headerLines.map(line => `${commentSyntax.single} ${line}`).join('\n'); + } + else { + headerLines = headerLines.map(line => `* ${line}`); + headerComment = filePathComment + `${commentSyntax.multiStart}\n${headerLines.join('\n')}\n${commentSyntax.multiEnd}`; + } + const editor = vscode.window.activeTextEditor; + if (editor) { + editor.edit((editBuilder) => { + const startPosition = new vscode.Position(0, 0); + const endPosition = new vscode.Position(0, 0); + editBuilder.replace(new vscode.Range(startPosition, endPosition), headerComment); + }); + } +} +function isSupportedLanguage(langId) { + return !!languageCommentMapping[langId]; +} +function activate(context) { + console.log('Your extension "Auto Header EST.2023" is now active!'); + let disposable = vscode.commands.registerCommand('auto-header-est2023.addHeader', () => { + const editor = vscode.window.activeTextEditor; + if (editor) { + addHeaderToDocument(editor.document); + } + }); + const watcher = vscode.workspace.createFileSystemWatcher('**/*.*'); + watcher.onDidCreate(async (e) => { + const config = vscode.workspace.getConfiguration('auto-header-est2023'); + const autoHeader = config.get('autoHeader'); + if (autoHeader) { + const doc = await vscode.workspace.openTextDocument(e.fsPath); + if (doc.getText() === '' && isSupportedLanguage(doc.languageId)) { + const editor = await vscode.window.showTextDocument(doc, { preview: false }); + addHeaderToDocument(doc); + } + } + }); + context.subscriptions.push(disposable, watcher); +} +exports.activate = activate; +function deactivate() { } +exports.deactivate = deactivate; + +})(); + +module.exports = __webpack_exports__; +/******/ })() +; +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/dist/extension.js.map b/dist/extension.js.map new file mode 100644 index 0000000..11ac607 --- /dev/null +++ b/dist/extension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension.js","mappings":"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","sources":["webpack://auto-header-est2023/external commonjs \"vscode\"","webpack://auto-header-est2023/webpack/bootstrap","webpack://auto-header-est2023/./src/extension.ts"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..23fb7ef --- /dev/null +++ b/package.json @@ -0,0 +1,132 @@ +{ + "name": "auto-header-est2023", + "displayName": "Auto Header EST.2023", + "description": "Easily name your files with custom header text", + "version": "0.0.1", + "author": "BankkRoll ", + "engines": { + "vscode": "^1.81.0" + }, + "categories": [ + "Other" + ], + "activationEvents": [ + "workspaceContains:**/*", + "onFileSystem:*" + ], + "main": "./dist/extension.js", + "contributes": { + "commands": [ + { + "command": "auto-header-est2023.addHeader", + "title": "Add Header" + } + ], + "keybindings": [ + { + "command": "auto-header-est2023.addHeader", + "key": "ctrl+shift+space", + "mac": "cmd+shift+space", + "when": "editorTextFocus" + } + ], + "configuration": { + "title": "Auto Header EST.2023", + "properties": { + "auto-header-est2023.autoHeader": { + "type": "boolean", + "default": false, + "description": "Automatically insert headers into new files of supported languages.", + "order": 1 + }, + "auto-header-est2023.autoGenerateFilePath": { + "type": "boolean", + "default": false, + "description": "Automatically generate and insert the file's relative path as a comment.", + "order": 2 + }, + "auto-header-est2023.commentType": { + "type": "string", + "default": "multiline", + "enum": [ + "singleline", + "multiline" + ], + "description": "Preferred comment style.", + "order": 3 + }, + "auto-header-est2023.author": { + "type": "string", + "default": "", + "description": "Author's name. Replaces the {author} placeholder.", + "order": 4 + }, + "auto-header-est2023.company": { + "type": "string", + "default": "", + "description": "Company's name. Replaces the {company} placeholder.", + "order": 5 + }, + "auto-header-est2023.date": { + "type": "string", + "default": "{timestamp}", + "description": "Set to 'timestamp' for the current date. Replaces the {date} placeholder.", + "order": 6 + }, + "auto-header-est2023.line1": { + "type": "string", + "default": "Author: {author}", + "description": "First header line. Placeholders: {author}, {date}, {company}. Leave blank to skip.", + "order": 7 + }, + "auto-header-est2023.line2": { + "type": "string", + "default": "Created: {date}", + "description": "Second header line. Placeholders: {author}, {date}, {company}. Leave blank to skip.", + "order": 8 + }, + "auto-header-est2023.line3": { + "type": "string", + "default": "(c) Copyright by {company}", + "description": "Third header line. Placeholders: {author}, {date}, {company}. Leave blank to skip.", + "order": 9 + }, + "auto-header-est2023.customCommentSyntax": { + "type": "object", + "default": {}, + "description": "Custom comment syntax for specific languages. Example: {'mylang': {'single': '##', 'multiStart': '/**', 'multiEnd': '**/'} }.", + "order": 10 + } + } + } + }, + "scripts": { + "vscode:prepublish": "npm run package", + "compile": "webpack", + "watch": "webpack --watch", + "package": "webpack --mode production --devtool hidden-source-map", + "compile-tests": "tsc -p . --outDir out", + "watch-tests": "tsc -p . -w --outDir out", + "pretest": "npm run compile-tests && npm run compile && npm run lint", + "lint": "eslint src --ext ts", + "test": "node ./out/test/runTest.js" + }, + "devDependencies": { + "@types/mocha": "^10.0.1", + "@types/node": "16.x", + "@types/vscode": "^1.81.0", + "@typescript-eslint/eslint-plugin": "^6.4.1", + "@typescript-eslint/parser": "^6.4.1", + "@vscode/test-electron": "^2.3.4", + "eslint": "^8.47.0", + "glob": "^10.3.3", + "mocha": "^10.2.0", + "ts-loader": "^9.4.4", + "typescript": "^5.1.6", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "quick-readme": "^1.1.2" + } +} diff --git a/src/extension.ts b/src/extension.ts new file mode 100644 index 0000000..f1c84b7 --- /dev/null +++ b/src/extension.ts @@ -0,0 +1,224 @@ +// src/extension.ts +import * as vscode from 'vscode'; + +/** + * Interface defining the comment syntax for different programming languages. + */ +interface CommentSyntax { + single: string; + multiStart: string; + multiEnd: string; +} + +// Mapping of programming languages to their respective comment syntax. +const languageCommentMapping: { [key: string]: CommentSyntax } = { + "javascript": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "python": { "single": "#", "multiStart": "'''", "multiEnd": "'''" }, + "java": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "c": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "cpp": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "csharp": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "go": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "rust": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "ruby": { "single": "#", "multiStart": "=begin", "multiEnd": "=end" }, + "php": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "vbnet": { "single": "'", "multiStart": "", "multiEnd": "" }, + "kotlin": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "swift": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "typescript": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "r": { "single": "#", "multiStart": "", "multiEnd": "" }, + "perl": { "single": "#", "multiStart": "=pod", "multiEnd": "=cut" }, + "erlang": { "single": "%", "multiStart": "", "multiEnd": "" }, + "elixir": { "single": "#", "multiStart": "", "multiEnd": "" }, + "haskell": { "single": "--", "multiStart": "{-", "multiEnd": "-}" }, + "scala": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "lua": { "single": "--", "multiStart": "--[[", "multiEnd": "]]" }, + "bash": { "single": "#", "multiStart": ": <<'END'", "multiEnd": "END" }, + "assembly": { "single": ";", "multiStart": "", "multiEnd": "" }, + "matlab": { "single": "%", "multiStart": "%{", "multiEnd": "%}" }, + "fortran": { "single": "!", "multiStart": "", "multiEnd": "" }, + "groovy": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "pascal": { "single": "//", "multiStart": "{", "multiEnd": "}" }, + "prolog": { "single": "%", "multiStart": "/*", "multiEnd": "*/" }, + "shell": { "single": "#", "multiStart": "", "multiEnd": "" }, + "html": { "single": "" }, + "css": { "single": "/*", "multiStart": "/*", "multiEnd": "*/" }, + "xml": { "single": "" }, + "yaml": { "single": "#", "multiStart": "", "multiEnd": "" }, + "lisp": { "single": ";", "multiStart": "", "multiEnd": "" }, + "fsharp": { "single": "//", "multiStart": "(*", "multiEnd": "*)" }, + "clojure": { "single": ";", "multiStart": "", "multiEnd": "" }, + "dart": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "coffeescript": { "single": "#", "multiStart": "###", "multiEnd": "###" }, + "graphql": { "single": "#", "multiStart": "", "multiEnd": "" }, + "markdown": { "single": "" }, + "objectivec": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "objectivecpp": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "powershell": { "single": "#", "multiStart": "<#", "multiEnd": "#>" }, + "pug": { "single": "//-", "multiStart": "", "multiEnd": "" }, + "rmarkdown": { "single": "" }, + "sass": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "scss": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "sql": { "single": "--", "multiStart": "/*", "multiEnd": "*/" }, + "stylus": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "tex": { "single": "%", "multiStart": "", "multiEnd": "" }, + "toml": { "single": "#", "multiStart": "", "multiEnd": "" }, + "vue": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "xaml": { "single": "" }, + "zig": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "apex": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "azurescript": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "batchfile": { "single": "REM", "multiStart": "", "multiEnd": "" }, + "dockerfile": { "single": "#", "multiStart": "", "multiEnd": "" }, + "graphqls": { "single": "#", "multiStart": "", "multiEnd": "" }, + "handlebars": { "single": "{{!--", "multiStart": "{{!--", "multiEnd": "--}}" }, + "ini": { "single": ";", "multiStart": "", "multiEnd": "" }, + "latex": { "single": "%", "multiStart": "", "multiEnd": "" }, + "makefile": { "single": "#", "multiStart": "", "multiEnd": "" }, + "nginx": { "single": "#", "multiStart": "", "multiEnd": "" }, + "properties": { "single": "#", "multiStart": "", "multiEnd": "" }, + "twig": { "single": "{#", "multiStart": "{#", "multiEnd": "#}" }, + "typescriptreact": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "verilog": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "vhdl": { "single": "--", "multiStart": "", "multiEnd": "" }, + "visualforce": { "single": "" }, + "wolfram": { "single": "(*", "multiStart": "(*", "multiEnd": "*)" }, + "xsl": { "single": "" }, + "yamlpipeline": { "single": "#", "multiStart": "", "multiEnd": "" }, + "abap": { "single": "*", "multiStart": "“", "multiEnd": "”" }, + "cobol": { "single": "*>", "multiStart": "", "multiEnd": "" }, + "delphi": { "single": "//", "multiStart": "{", "multiEnd": "}" }, + "julia": { "single": "#", "multiStart": "#=", "multiEnd": "=#" }, + "ocaml": { "single": "(*", "multiStart": "(*", "multiEnd": "*)" }, + "racket": { "single": ";", "multiStart": "#|", "multiEnd": "|#" }, + "scheme": { "single": ";", "multiStart": "#|", "multiEnd": "|#" }, + "spss": { "single": "*.", "multiStart": "/*", "multiEnd": "*/" }, + "vbscript": { "single": "'", "multiStart": "", "multiEnd": "" }, + "jcl": { "single": "//*", "multiStart": "", "multiEnd": "" }, + "plsql": { "single": "--", "multiStart": "/*", "multiEnd": "*/" }, + "algol": { "single": "COMMENT", "multiStart": "", "multiEnd": ";" }, + "applescript": { "single": "--", "multiStart": "(*", "multiEnd": "*)" }, + "awk": { "single": "#", "multiStart": "", "multiEnd": "" }, + "glsl": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "jsonc": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "less": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "logos": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "postscript": { "single": "%", "multiStart": "", "multiEnd": "" }, + "restructuredtext": { "single": "..", "multiStart": "", "multiEnd": "" }, + "sas": { "single": "*", "multiStart": "/*", "multiEnd": "*/" }, + "sml": { "single": "", "multiStart": "(*", "multiEnd": "*)" }, + "solidity": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "systemverilog": { "single": "//", "multiStart": "/*", "multiEnd": "*/" }, + "terraform": { "single": "#", "multiStart": "/*", "multiEnd": "*/" }, + "vala": { "single": "//", "multiStart": "/*", "multiEnd": "*/" } +}; + +/** + * Adds a header comment to the provided document based on its language. + * @param {vscode.TextDocument} document - The VS Code document to which the header should be added. + */ +function addHeaderToDocument(document: vscode.TextDocument) { + const langId = document.languageId; + const commentSyntax = languageCommentMapping[langId]; + if (!commentSyntax) { + return; + } + + const config = vscode.workspace.getConfiguration('auto-header-est2023'); + + const autoGenerateFilePath = config.get('autoGenerateFilePath'); + let filePathComment = ''; + if (autoGenerateFilePath) { + const filePath = document.fileName; + const relativePath = vscode.workspace.asRelativePath(filePath); + filePathComment = `${commentSyntax.single} ${relativePath}\n`; + } + + const author = config.get('author') || 'Unknown Author'; + let date = config.get('date'); + if (!date || date === '{timestamp}') { + date = new Date().toLocaleDateString(); + } else { + date = date; + } + + const company = config.get('company') || 'Unknown Company'; + + let line1 = config.get('line1') || ''; + let line2 = config.get('line2') || ''; + let line3 = config.get('line3') || ''; + + const commentType = config.get('commentType') || 'multiline'; + + const formatLine = (line: string) => { + return line.replace('{author}', author ?? '') + .replace('{date}', date ?? '') + .replace('{company}', company ?? ''); + }; + + line1 = formatLine(line1); + line2 = formatLine(line2); + line3 = formatLine(line3); + + let headerLines: string[] = []; + if (line1) { + headerLines.push(line1); + } + if (line2) { + headerLines.push(line2); + } + if (line3) { + headerLines.push(line3); + } + + let headerComment: string; + if (commentType === 'singleline') { + headerComment = filePathComment + headerLines.map(line => `${commentSyntax.single} ${line}`).join('\n'); + } else { + headerLines = headerLines.map(line => `* ${line}`); + headerComment = filePathComment + `${commentSyntax.multiStart}\n${headerLines.join('\n')}\n${commentSyntax.multiEnd}`; + } + + const editor = vscode.window.activeTextEditor; + if (editor) { + editor.edit((editBuilder) => { + const startPosition = new vscode.Position(0, 0); + const endPosition = new vscode.Position(0, 0); + editBuilder.replace(new vscode.Range(startPosition, endPosition), headerComment); + }); + } +} + + +function isSupportedLanguage(langId: string): boolean { + return !!languageCommentMapping[langId]; +} + +export function activate(context: vscode.ExtensionContext) { + console.log('Your extension "Auto Header EST.2023" is now active!'); + + let disposable = vscode.commands.registerCommand('auto-header-est2023.addHeader', () => { + const editor = vscode.window.activeTextEditor; + if (editor) { + addHeaderToDocument(editor.document); + } + }); + + const watcher = vscode.workspace.createFileSystemWatcher('**/*.*'); + watcher.onDidCreate(async (e) => { + const config = vscode.workspace.getConfiguration('auto-header-est2023'); + const autoHeader = config.get('autoHeader'); + + if (autoHeader) { + const doc = await vscode.workspace.openTextDocument(e.fsPath); + if (doc.getText() === '' && isSupportedLanguage(doc.languageId)) { + const editor = await vscode.window.showTextDocument(doc, { preview: false }); + addHeaderToDocument(doc); + } + } + }); + + context.subscriptions.push(disposable, watcher); +} + +export function deactivate() {} \ No newline at end of file diff --git a/src/test/runTest.ts b/src/test/runTest.ts new file mode 100644 index 0000000..764596b --- /dev/null +++ b/src/test/runTest.ts @@ -0,0 +1,24 @@ +// src/test/runTest.ts +import * as path from 'path'; + +import { runTests } from '@vscode/test-electron'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../../'); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './suite/index'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error('Failed to run tests', err); + process.exit(1); + } +} + +main(); diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts new file mode 100644 index 0000000..e64b961 --- /dev/null +++ b/src/test/suite/extension.test.ts @@ -0,0 +1,16 @@ +// src/test/suite/extension.test.ts +import * as assert from 'assert'; + +// You can import and use all API from the 'vscode' module +// as well as import your extension to test it +import * as vscode from 'vscode'; +// import * as myExtension from '../../extension'; + +suite('Extension Test Suite', () => { + vscode.window.showInformationMessage('Start all tests.'); + + test('Sample test', () => { + assert.strictEqual(-1, [1, 2, 3].indexOf(5)); + assert.strictEqual(-1, [1, 2, 3].indexOf(0)); + }); +}); diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts new file mode 100644 index 0000000..09c8b66 --- /dev/null +++ b/src/test/suite/index.ts @@ -0,0 +1,41 @@ +// src/test/suite/index.ts +import * as path from 'path'; +import * as Mocha from 'mocha'; +import * as glob from 'glob'; + +export function run(): Promise { + // Create the mocha test + const mocha = new Mocha({ + ui: 'tdd', + color: true + }); + + const testsRoot = path.resolve(__dirname, '..'); + + return new Promise((c, e) => { + const testFiles = new glob.Glob("**/**.test.js", { cwd: testsRoot }); + const testFileStream = testFiles.stream(); + + testFileStream.on("data", (file) => { + mocha.addFile(path.resolve(testsRoot, file)); + }); + testFileStream.on("error", (err) => { + e(err); + }); + testFileStream.on("end", () => { + try { + // Run the mocha test + mocha.run(failures => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + console.error(err); + e(err); + } + }); + }); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..965a7b4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES2020", + "lib": [ + "ES2020" + ], + "sourceMap": true, + "rootDir": "src", + "strict": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + } +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..37d7024 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,48 @@ +//@ts-check + +'use strict'; + +const path = require('path'); + +//@ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +/** @type WebpackConfig */ +const extensionConfig = { + target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + + entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { + // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2' + }, + externals: { + vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // modules added here also need to be added in the .vscodeignore file + }, + resolve: { + // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader + extensions: ['.ts', '.js'] + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader' + } + ] + } + ] + }, + devtool: 'nosources-source-map', + infrastructureLogging: { + level: "log", // enables logging required for problem matchers + }, +}; +module.exports = [ extensionConfig ]; \ No newline at end of file