Skip to content

Commit bbcb5b1

Browse files
committed
Basic working extension
1 parent a349b68 commit bbcb5b1

6 files changed

Lines changed: 79 additions & 7 deletions

File tree

package-lock.json

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,20 @@
3030
"test": "node ./out/test/runTest.js"
3131
},
3232
"devDependencies": {
33-
"@types/vscode": "^1.52.0",
3433
"@types/glob": "^7.1.3",
34+
"@types/lodash": "^4.14.167",
3535
"@types/mocha": "^8.0.4",
3636
"@types/node": "^12.11.7",
37-
"eslint": "^7.15.0",
37+
"@types/vscode": "^1.52.0",
3838
"@typescript-eslint/eslint-plugin": "^4.9.0",
3939
"@typescript-eslint/parser": "^4.9.0",
40+
"eslint": "^7.15.0",
4041
"glob": "^7.1.6",
4142
"mocha": "^8.1.3",
4243
"typescript": "^4.1.2",
4344
"vscode-test": "^1.4.1"
45+
},
46+
"dependencies": {
47+
"lodash": "^4.17.20"
4448
}
45-
}
49+
}

src/extension.ts

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,55 @@
11
import * as vscode from 'vscode';
2+
const path = require('path');
3+
import * as fs from 'fs';
4+
const templatePath = path.join(__dirname, '../templates');
5+
import * as _ from 'lodash';
26

37
export function activate(context: vscode.ExtensionContext) {
48

59
console.log('Congratulations, your extension "dockerfiletemplate" is now active!');
610

7-
let disposable = vscode.commands.registerCommand('dockerfiletemplate.generatedockerfile', () => {
8-
vscode.window.showInformationMessage('Hello World from DockerFileTemplate!');
11+
const templates: Array<string> = [];
12+
let allFiles: Array<string>;
13+
fs.readdir(templatePath, function (err:any, files:Array<string>) {
14+
if (err) {
15+
return console.log('Unable to scan directory: ' + err);
16+
}
17+
allFiles = files;
18+
files.filter(e => e.includes(".dockerignore") ? false : true).forEach(file => {
19+
20+
templates.push(_.trimEnd(file, ".dockerfile"))
21+
})
22+
923
});
24+
25+
let disposable = vscode.commands.registerCommand('dockerfiletemplate.generatedockerfile', () => {
26+
const { workspace: { workspaceFolders } } = vscode;
27+
console.log(workspaceFolders)
28+
const workspaceFolder = workspaceFolders ? workspaceFolders[0].uri.fsPath : null;
29+
30+
vscode.window.showQuickPick(templates).then(option => {
31+
if (!option) return;
32+
allFiles.forEach((file) => {
33+
// check if a ignore file exist
34+
if (file === `.dockerignore ${option}`) {
35+
vscode.window.showInformationMessage("A .dockerignore file exist for this template , do you want to use it ?", "yes", "no").then(response => {
36+
if (response === "yes") {
37+
fs.readFile(`${templatePath}/.dockerignore ${option}`, (err: any , data: Buffer) => {
38+
console.log(data)
39+
fs.writeFileSync (`${workspaceFolder}/.dockerignore`, data)
40+
})
41+
}
42+
})
43+
}
44+
fs.readFile(`${templatePath}/${option}.dockerfile`, (err: any , data: Buffer) => {
45+
console.log(`${workspaceFolder}/Dockerfile`)
46+
fs.writeFileSync (`${workspaceFolder}/Dockerfile`, data);
47+
})
48+
})
49+
50+
})
51+
52+
})
1053

1154
context.subscriptions.push(disposable);
1255
}

templates/.dockerignore Nodejs app

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/node_modules
2+
/Docker
3+
.gitignore
4+
.gitattributes
5+
LICENSE
6+
README.md

templates/Nodejs app.dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM node:12
2+
WORKDIR /usr/src/app
3+
COPY package*.json ./
4+
RUN npm ci
5+
COPY . .
6+
EXPOSE 3000
7+
CMD [ "npm", "start" ]

templates/Reactjs app.dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM node:12
2+
WORKDIR /usr/src/app
3+
COPY package*.json ./
4+
RUN npm ci
5+
COPY . .
6+
EXPOSE 3000
7+
CMD [ "npm", "start" ]

0 commit comments

Comments
 (0)