diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6355841..8dff563 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,16 +1,16 @@
# Change Log
-All notable changes to the "dwm-git-simpleuse" extension will be documented in this file.
-
-## [Unreleased] _(not in order)_
+## [Unreleased] _(not in order)_
- Task API
- No git msgs as errors
-- check if in git repository before running commands
- Progress bar for git commands
- Upload only active file
- Make it possible to receive a webhook to send info to user
+- check if in git repository before running commands
+- can "disable" extention if not in git repository
+
## [0.1.3] - 2024-07-18
- Fixed "commit message auto increment"
diff --git a/extension.js b/extension.js
index 0fcbc35..b819e77 100644
--- a/extension.js
+++ b/extension.js
@@ -1,40 +1,57 @@
-// The module 'vscode' contains the VS Code extensibility API
-// Import the module and reference it with the alias vscode in your code below
const vscode = require("vscode");
+const util = require("node:util");
const chp = require("child_process");
-
-// This method is called when your extension is activated
-// Your extension is activated the very first time the command is executed
+const execP = util.promisify(chp.exec);
/**
* @param {vscode.ExtensionContext} context
*/
-function activate(context) {
- // Use the console to output diagnostic information (console.log) and errors (console.error)
- // This line of code will only be executed once when your extension is activated
+async function activate(context) {
let lastGitCommitMsg = "";
- try {
- process.chdir(vscode.workspace.workspaceFolders[0].uri.fsPath);
- } catch (err) {
- vscode.window.showErrorMessage(err);
- }
- chp.execFile("git", ["pull"], (err, stdout, stderr) => {
- if (err) {
- vscode.window.showErrorMessage("GITPULL : " + err.message);
- return;
+ if (await vscode.workspace.getConfiguration("dwm-git-simpleuse", 2).get("isEnabled")) {
+ try {
+ process.chdir(vscode.workspace.workspaceFolders[0].uri.fsPath);
+ } catch (err) {
+ vscode.window.showErrorMessage(err);
}
- if (stderr) {
- vscode.window.showErrorMessage("GITPULL : " + stderr);
- return;
- }
- vscode.window.showInformationMessage("GITPULL : " + stdout);
- });
- // The command has been defined in the package.json file
- // Now provide the implementation of the command with registerCommand
- // The commandId parameter must match the command field in package.json
+ const { stdout } = await execP(`git rev-parse --is-inside-work-tree || echo false`, {
+ cwd: vscode.workspace.workspaceFolders[0].uri.fsPath,
+ });
+
+ if (stdout.trim() !== "true")
+ vscode.window
+ .showErrorMessage("Not a git repository", "Disable extension for current workspace")
+ .then((e) => {
+ if (e == undefined) return;
+ vscode.workspace.getConfiguration("dwm-git-simpleuse", 2).update("isEnabled", false);
+ });
+ else
+ chp.execFile("git", ["pull", "--ff"], (err, stdout, stderr) => {
+ if (err) {
+ vscode.window.showErrorMessage("GITPULL : " + err.message);
+ return;
+ }
+ if (stderr) {
+ vscode.window.showErrorMessage("GITPULL : " + stderr);
+ return;
+ }
+ vscode.window.showInformationMessage("GITPULL : " + stdout);
+ });
+ }
+
let disposable = vscode.commands.registerCommand("dwm-git-simpleuse.fullPush", async function () {
+ if (!(await vscode.workspace.getConfiguration("dwm-git-simpleuse", 2).get("isEnabled"))) {
+ vscode.window
+ .showErrorMessage("Extension disabled", "Enable extension for current workspace")
+ .then((e) => {
+ if (e == undefined) return;
+ vscode.workspace.getConfiguration("dwm-git-simpleuse", 2).update("isEnabled", true);
+ });
+ return;
+ }
+
const gitCommitMsg = await vscode.window.showInputBox({
placeHolder: "commit message",
prompt: "choose your commit message",
@@ -49,7 +66,10 @@ function activate(context) {
lastGitCommitMsg = gitCommitMsg;
chp.exec(
- `git add . && git commit -am "${gitCommitMsg.replace(/"/g, '\\"')}" && git pull --ff && git push`,
+ `git add . && git commit -am "${gitCommitMsg.replace(
+ /"/g,
+ '\\"'
+ )}" && git pull --ff && git push`,
{ cwd: vscode.workspace.workspaceFolders[0].uri.fsPath },
(err, stdout, stderr) => {
if (err) {
@@ -63,41 +83,20 @@ function activate(context) {
vscode.window.showInformationMessage(stdout);
}
);
- /* try {
- process.chdir(vscode.workspace.workspaceFolders[0].uri.fsPath);
- } catch (err) {
- vscode.window.showErrorMessage(err);
- } */
- /* chp.execFile("git", ["add", "*"], (err, stdout, stderr) => {
- if (err) {
- vscode.window.showErrorMessage("GITADD : " + err.message);
- return;
- }
- if (stderr) {
- vscode.window.showErrorMessage("GITADD : " + stderr);
- return;
- }
- vscode.window.showInformationMessage("GITADD : " + stdout);
- });
- chp.execFile(
- "git",
- ["commit", "-m test7", "-a"],
- (err, stdout, stderr) => {
- if (err) {
- vscode.window.showErrorMessage("GITCOM : " + err.message);
- return;
- }
- if (stderr) {
- vscode.window.showErrorMessage("GITCOM : " + stderr);
- return;
- }
- vscode.window.showInformationMessage("GITCOM : " + stdout);
- }
- ); */
});
context.subscriptions.push(disposable);
disposable = vscode.commands.registerCommand("dwm-git-simpleuse.initRepo", async function () {
+ if (!(await vscode.workspace.getConfiguration("dwm-git-simpleuse", 2).get("isEnabled"))) {
+ vscode.window
+ .showErrorMessage("Extension disabled", "Enable extension for current workspace")
+ .then((e) => {
+ if (e == undefined) return;
+ vscode.workspace.getConfiguration("dwm-git-simpleuse", 2).update("isEnabled", true);
+ });
+ return;
+ }
+
const gitLink = await vscode.window.showInputBox({
placeHolder: "git repo link",
prompt: "Initialize a git repository",
diff --git a/package.json b/package.json
index a6c29d0..23f71f9 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,19 @@
"key": "ctrl+alt+s",
"mac": "ctrl+alt+s"
}
- ]
+ ],
+ "configuration": {
+ "type": "object",
+ "title": "DWM Git Simple Use Configuration",
+ "properties": {
+ "dwm-git-simpleuse.isEnabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable DWM Git Simple Use extension",
+ "scope": "resource"
+ }
+ }
+ }
},
"scripts": {
"lint": "eslint .",