VS code Extension 개발 2 (터미널 활용 1)

Hong·2022년 8월 20일
0

VS code Extionsion

목록 보기
2/3

개발 환경

  • mac

터미널 기본

터미널에서 mkdir 커맨드를 사용해 원하는

이름의 폴더를 생성하는 간단한 커맨드를 만들어 보려고 한다.

커맨드 추가하기

먼저

extension.ts 파일의 activate 함수 안에서만 커맨드를 생성,사용하다 보면

기능이 추가 될 수록 보기 어렵고 복잡해지기 때문에 파일을 나눠주는게 좋다.

testminal.ts를 만들었고

import * as vscode from 'vscode';

export function mkdir() {
	let terminal = vscode.window.createTerminal({
		name: "Make Folder",
		hideFromUser: false,
	});
	terminal.show();
	terminal.sendText("mkdir folderName");
}

기본적으로 vscode에서 터미널을 열어 폴더를 생성해주는 함수를 만들었다.

사용하려면 커맨드를 추가해야한다.

import * as vscode from 'vscode';
import * as terminal from './terminal';

export function activate(context: vscode.ExtensionContext) {
	let makeFolder = vscode.commands.registerCommand('terminal.mkdir', async () => terminal.mkdir());
	context.subscriptions.push(makeFolder);
}

export function deactivate() {}

package.json, extension.ts 파일에서 커맨드를 추가해주었다.

desktop 폴더를 열고 커맨드를 실행하면
(기본적으로 터미널실행시 열린 폴더 경로부터 시작)

터미널에서 해당 명령어를 실행한다.


원하는 폴더명으로 생성하기

이제 원하는 이름을 받아 폴더를 생성해보자

	let folderName = await vscode.window.showInputBox({
		placeHolder: "Folder Name",
		prompt: "Folder Name",
	});

vscode.window.showInputBox 함수는 vscode에서 제공하는 함수이다.

await를 사용하기 때문에 함수 정의 부분에 async를 추가해야한다.(비동기 함수 선언)

export async function mkdir() {
	const folderName = await vscode.window.showInputBox({
		placeHolder: "Folder Name",
		prompt: "Folder Name",
	});

	if(folderName === "" || folderName === "undefined"){
		vscode.window.showErrorMessage("다시 입력해주세요.");
        return ;
	}

	let terminal = vscode.window.createTerminal({
		name: "Make Folder",
		hideFromUser: false,
	});
	terminal.show();
	terminal.sendText("mkdir " + folderName);
}

실행 해보자.

성공적으로 생성된다.


원하는 경로에 폴더 생성하기

열린 프로젝트 경로에 원하는 이름의 폴더를 생성하는건 성공했으나

원하는 경로에 생성하고 싶다.

const openFolder = await vscode.window.showOpenDialog({
		filters: {
			'All files (*.*)': ['*']
		},
		canSelectFolders: true,
		canSelectFiles: false,
		canSelectMany: false,
		openLabel: 'Select Folder',
	});

해당 명령어는 파일 및 폴더를 선택 할 수 있는 vscode 명령어이다.

export async function mkdir() {
	const openFolder = await vscode.window.showOpenDialog({
		filters: {
			'All files (*.*)': ['*']
		},
		canSelectFolders: true,
		canSelectFiles: false,
		canSelectMany: false,
		openLabel: 'Select Folder',
	});
	if (!openFolder || openFolder.length < 1) {
		vscode.window.showErrorMessage("다시 선택하세요.");
		return;
	}

	const folderName = await vscode.window.showInputBox({
		placeHolder: "Folder Name",
		prompt: "Folder Name",
	});

	if(folderName === "" || folderName === "undefined"){
		vscode.window.showErrorMessage("다시 입력해주세요.");
		return;
	}

	let terminal = vscode.window.createTerminal({
		name: "Make Folder",
		hideFromUser: false,
	});
	const forderPath = openFolder[0].fsPath;

	terminal.show();
	terminal.sendText("mkdir " + forderPath + "/" + folderName);
}

원하는 폴더에 원하는 이름의 폴더가 생성됐다.

위에서 사용한 것들만으로도 응용한다면 정말 편해진다.

profile
게임 개발자

0개의 댓글