15 Commits

7 changed files with 2369 additions and 109 deletions

104
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,104 @@
name: "Main"
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
name: Lint
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: "14"
- run: /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & echo "Started xvfb"
shell: bash
- run: npm install
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- run: npm run lint
env:
DISPLAY: ":99.0"
package:
runs-on: ubuntu-latest
needs: lint
name: Package
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: "14"
- run: npm install
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- run: npm install -g vsce
- run: vsce package
- run: echo "VSIX_PATH=$(find . -maxdepth 1 -type f -iname "*.vsix" | head -1)" >> $GITHUB_ENV
- run: echo "VSIX_NAME=$(basename $(find . -maxdepth 1 -type f -iname "*.vsix" | head -1))" >> $GITHUB_ENV
- uses: actions/upload-artifact@v2
with:
path: ${{ env.VSIX_PATH }}
name: ${{ env.VSIX_NAME }}
release:
runs-on: ubuntu-latest
needs: package
if: startsWith(github.ref, 'refs/tags/v')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VSCE_PAT: ${{ secrets.VSCE_PAT }}
DISPLAY: ":99.0"
name: Release
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: "14"
- run: /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & echo "Started xvfb"
shell: bash
- run: npm install
- run: npm install -g vsce
- run: vsce package
- run: echo "VSIX_PATH=$(find . -maxdepth 1 -type f -iname "*.vsix" | head -1)" >> $GITHUB_ENV
- run: echo "VSIX_NAME=$(basename $(find . -maxdepth 1 -type f -iname "*.vsix" | head -1))" >> $GITHUB_ENV
- uses: actions/create-release@v1
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VSCE_PAT: ${{ secrets.VSCE_PAT }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
body: See [CHANGE LOG](https://github.com/maksim77/gitcheck/blob/main/CHANGELOG.md) for details.
draft: false
prerelease: false
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VSCE_PAT: ${{ secrets.VSCE_PAT }}
DISPLAY: ":99.0"
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.VSIX_PATH }}
asset_name: ${{ env.VSIX_NAME }}
asset_content_type: application/zip
- run: vsce publish

1
.gitignore vendored
View File

@@ -1 +1,2 @@
out
.vscode-test/

View File

@@ -1,5 +1,17 @@
# Change Log
All notable changes to this project will be documented in this file.
## [0.0.1]
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.0.3] - 2021-12-07
### Fixed
- Small fixes
## [0.0.2] - 2021-12-06
### Added
- README 😂
### Changed
- Rename `user` => `name` in settings options
## [0.0.1] - 2021-12-06
- Initial release

View File

@@ -1 +1,9 @@
# gitcheck
# Git User Check
Sometimes, after cloning a repository from a corporate server and having already sent several commits there, you notice that you forgot to change the user settings in git.
This extension is written to avoid this.
## Configuration
* `gitcheck.domain` The domain (or just a substring) for which the check will be performed (you can see in the output of the command `git remote -v`).
* `gitcheck.name` This value will be checked against the value of the git parameter `user.name`.
* `gitcheck.email` This value will be checked against the value of the git parameter `user.email`.

2126
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "gitcheck",
"displayName": "Git User Check",
"description": "Checking the user's compliance with the repository",
"version": "0.0.1",
"version": "0.0.3",
"preview": true,
"engines": {
"vscode": "^1.62.0"
@@ -27,21 +27,21 @@
],
"main": "./out/extension.js",
"contributes": {
"configuration":[
"configuration": [
{
"title": "Git User Check",
"properties": {
"gitcheck.domain": {
"type": "string",
"description": "remote domain for check"
"description": "Remote domain for check"
},
"gitcheck.user": {
"type":"string",
"description": "Username for gitcheck domain"
"gitcheck.name": {
"type": "string",
"description": "user.name for gitcheck domain"
},
"gitcheck.email": {
"type":"string",
"description": "Email for gitcheck domain"
"type": "string",
"description": "user.email for gitcheck domain"
}
}
}
@@ -56,16 +56,17 @@
"test": "node ./out/test/runTest.js"
},
"devDependencies": {
"@types/vscode": "^1.62.0",
"@types/glob": "^7.1.4",
"@types/mocha": "^9.0.0",
"@types/node": "14.17.27",
"@types/vscode": "^1.62.0",
"@typescript-eslint/eslint-plugin": "^5.1.0",
"@typescript-eslint/parser": "^5.1.0",
"@vscode/test-electron": "^1.6.2",
"eslint": "^8.1.0",
"glob": "^7.1.7",
"mocha": "^9.1.3",
"typescript": "^4.4.4",
"@vscode/test-electron": "^1.6.2"
"vsce": "^2.5.1"
}
}

View File

@@ -1,24 +1,38 @@
import * as vscode from 'vscode';
import { GitExtension } from './git';
export function activate() {
export async function activate() {
var conf = vscode.workspace.getConfiguration("gitcheck");
const domain = conf.get<string>("domain");
const user = conf.get<string>("user");
const name = conf.get<string>("name");
const email = conf.get<string>("email");
if (!(domain && user && email)) {
if (!vscode.workspace.workspaceFolders) {
return;
}
if (!(domain && name && email)) {
console.log("Missing config params");
return;
}
const git = vscode.extensions.getExtension<GitExtension>('vscode.git')!.exports.getAPI(1)!;
const repository = git.repositories[0];
const gitExt = vscode.extensions.getExtension<GitExtension>('vscode.git')!;
const git = gitExt.exports.getAPI(1);
if (!git) {
return;
}
const repository = await git.openRepository(vscode.workspace.workspaceFolders[0].uri);
if (!repository) {
return;
}
repository.state.remotes.forEach(async remote => {
const pushUrl = remote.pushUrl;
if (pushUrl && pushUrl.includes(domain)) {
var gitConfig = await repository.getConfigs();
var gitUser:string = "";
var gitName:string = "";
var gitEmail:string = "";
gitConfig = gitConfig.filter( elem => {
return elem.key === "user.name" || elem.key === "user.email";
@@ -30,7 +44,7 @@ export function activate() {
gitConfig.forEach(c => {
switch (c.key) {
case "user.name":
gitUser = c.value;
gitName = c.value;
break;
case "user.email":
@@ -41,7 +55,7 @@ export function activate() {
console.log(c.key);
}
});
if (gitUser !== user || gitEmail !== email) {
if (gitName !== name || gitEmail !== email) {
vscode.window.showErrorMessage("Wrong user creds in git");
}
}