Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
7ef5b154ea
|
|||
|
75260016c8
|
|||
|
93ed637537
|
|||
|
19d8a93f3f
|
|||
|
d000c7b0ee
|
|||
|
6fd42bea39
|
|||
|
7d70129495
|
17
CHANGELOG.md
17
CHANGELOG.md
@@ -4,14 +4,25 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
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).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [0.0.3] - 2021-12-07
|
## [v0.2.0] - 2021-12-10
|
||||||
|
### Fixed
|
||||||
|
-Fix async work with repository state
|
||||||
|
## [v0.1.1] - 2021-12-09
|
||||||
|
### Added
|
||||||
|
- icon
|
||||||
|
## [v0.1.0] - 2021-12-07
|
||||||
|
### Added
|
||||||
|
- Overwrite button in error message
|
||||||
|
|
||||||
|
## [v0.0.3] - 2021-12-07
|
||||||
### Fixed
|
### Fixed
|
||||||
- Small fixes
|
- Small fixes
|
||||||
## [0.0.2] - 2021-12-06
|
|
||||||
|
## [v0.0.2] - 2021-12-06
|
||||||
### Added
|
### Added
|
||||||
- README 😂
|
- README 😂
|
||||||
### Changed
|
### Changed
|
||||||
- Rename `user` => `name` in settings options
|
- Rename `user` => `name` in settings options
|
||||||
|
|
||||||
## [0.0.1] - 2021-12-06
|
## [v0.0.1] - 2021-12-06
|
||||||
- Initial release
|
- Initial release
|
||||||
BIN
media/folder-green-git-icon.png
Normal file
BIN
media/folder-green-git-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "gitcheck",
|
"name": "gitcheck",
|
||||||
"version": "0.1.0",
|
"version": "0.2.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "gitcheck",
|
"name": "gitcheck",
|
||||||
"version": "0.1.0",
|
"version": "0.2.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/glob": "^7.1.4",
|
"@types/glob": "^7.1.4",
|
||||||
"@types/mocha": "^9.0.0",
|
"@types/mocha": "^9.0.0",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "gitcheck",
|
"name": "gitcheck",
|
||||||
"displayName": "Git User Check",
|
"displayName": "Git User Check",
|
||||||
"description": "Checking the user's compliance with the repository",
|
"description": "Checking the user's compliance with the repository",
|
||||||
"version": "0.1.0",
|
"version": "0.2.0",
|
||||||
"preview": false,
|
"preview": false,
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.62.0"
|
"vscode": "^1.62.0"
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/maksim77/gitcheck.git"
|
"url": "https://github.com/maksim77/gitcheck.git"
|
||||||
},
|
},
|
||||||
|
"icon": "media/folder-green-git-icon.png",
|
||||||
"activationEvents": [
|
"activationEvents": [
|
||||||
"workspaceContains:.git/"
|
"workspaceContains:.git/"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,21 +1,41 @@
|
|||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
import { GitExtension } from './git';
|
import { GitExtension, Repository } from './git';
|
||||||
|
|
||||||
|
class UserConf {
|
||||||
|
domain: string = "";
|
||||||
|
name: string = "";
|
||||||
|
email:string = "";
|
||||||
|
|
||||||
|
valid: boolean = false;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
var conf = vscode.workspace.getConfiguration("gitcheck");
|
||||||
|
const _domain = conf.get<string>("domain");
|
||||||
|
const _name = conf.get<string>("name");
|
||||||
|
const _email = conf.get<string>("email");
|
||||||
|
if (!(_domain && _name && _email)) {
|
||||||
|
console.log("Missing config params");
|
||||||
|
this.valid = false;
|
||||||
|
} else {
|
||||||
|
this.domain = _domain;
|
||||||
|
this.name = _name;
|
||||||
|
this.email = _email;
|
||||||
|
this.valid = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function activate() {
|
export async function activate() {
|
||||||
var conf = vscode.workspace.getConfiguration("gitcheck");
|
const userConf = new UserConf();
|
||||||
const domain = conf.get<string>("domain");
|
if (!userConf.valid) {
|
||||||
const name = conf.get<string>("name");
|
return;
|
||||||
const email = conf.get<string>("email");
|
}
|
||||||
|
|
||||||
if (!vscode.workspace.workspaceFolders) {
|
if (!vscode.workspace.workspaceFolders) {
|
||||||
console.log("No opened workspace");
|
console.log("No opened workspace");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(domain && name && email)) {
|
|
||||||
console.log("Missing config params");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const gitExt = vscode.extensions.getExtension<GitExtension>('vscode.git')!;
|
const gitExt = vscode.extensions.getExtension<GitExtension>('vscode.git')!;
|
||||||
const git = gitExt.exports.getAPI(1);
|
const git = gitExt.exports.getAPI(1);
|
||||||
@@ -25,16 +45,29 @@ export async function activate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const repository = await git.openRepository(vscode.workspace.workspaceFolders[0].uri);
|
const repository = await git.openRepository(vscode.workspace.workspaceFolders[0].uri);
|
||||||
|
|
||||||
if (!repository) {
|
if (!repository) {
|
||||||
console.error("Cannot open git repository");
|
console.error("Cannot open git repository");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
repository.state.remotes.forEach(async remote => {
|
let remotesLen:number = 0;
|
||||||
|
repository.state.onDidChange(() => {
|
||||||
|
if (remotesLen > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
remotesLen = repository.state.remotes.length;
|
||||||
|
|
||||||
|
if (remotesLen > 0) {
|
||||||
|
gitCheck(repository, userConf);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function gitCheck(repo:Repository, conf:UserConf) {
|
||||||
|
repo.state.remotes.forEach(async remote => {
|
||||||
const pushUrl = remote.pushUrl;
|
const pushUrl = remote.pushUrl;
|
||||||
if (pushUrl && pushUrl.includes(domain)) {
|
if (pushUrl && pushUrl.includes(conf.domain)) {
|
||||||
var gitConfig = await repository.getConfigs();
|
var gitConfig = await repo.getConfigs();
|
||||||
var gitName:string = "";
|
var gitName:string = "";
|
||||||
var gitEmail:string = "";
|
var gitEmail:string = "";
|
||||||
gitConfig = gitConfig.filter( elem => {
|
gitConfig = gitConfig.filter( elem => {
|
||||||
@@ -44,8 +77,8 @@ export async function activate() {
|
|||||||
console.error("Missing user creds in git");
|
console.error("Missing user creds in git");
|
||||||
const option = await vscode.window.showErrorMessage("Missing user settings in git", "Overwrite");
|
const option = await vscode.window.showErrorMessage("Missing user settings in git", "Overwrite");
|
||||||
if (option && option === "Overwrite") {
|
if (option && option === "Overwrite") {
|
||||||
await repository.setConfig("user.name", name);
|
await repo.setConfig("user.name", conf.name);
|
||||||
await repository.setConfig("user.email", email);
|
await repo.setConfig("user.email", conf.email);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -63,12 +96,12 @@ export async function activate() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (gitName !== name || gitEmail !== email) {
|
if (gitName !== conf.name || gitEmail !== conf.email) {
|
||||||
console.error("Wrong user settings in git");
|
console.error("Wrong user settings in git");
|
||||||
const option = await vscode.window.showErrorMessage("Wrong user settings in git", "Overwrite");
|
const option = await vscode.window.showErrorMessage("Wrong user settings in git", "Overwrite");
|
||||||
if (option && option === "Overwrite") {
|
if (option && option === "Overwrite") {
|
||||||
await repository.setConfig("user.name", name);
|
await repo.setConfig("user.name", conf.name);
|
||||||
await repository.setConfig("user.email", email);
|
await repo.setConfig("user.email", conf.email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user