forked from mymindstorm/rpm-spec-changelog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimprove.patch
95 lines (87 loc) · 3.5 KB
/
improve.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
diff --git a/src/extension.ts b/src/extension.ts
index d17e021..6af31c5 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -1,5 +1,5 @@
import * as vscode from "vscode";
-import * as cp from "child_process";
+import { exec } from "child_process";
export function activate(context: vscode.ExtensionContext) {
let disposable = vscode.commands.registerTextEditorCommand(
@@ -10,55 +10,47 @@ export function activate(context: vscode.ExtensionContext) {
if (!currentDocument) {
return;
}
+ const date = new Date(Date.now());
+ // Results below assume UTC timezone - your results may vary
- const snippet = new vscode.SnippetString(
- "* ${CURRENT_DAY_NAME_SHORT} ${CURRENT_MONTH_NAME_SHORT} ${CURRENT_DATE} ${CURRENT_YEAR}"
- );
+ const options: { [key: string]: any; } = {
+ weekday: "short",
+ month: "short",
+ day: "2-digit",
+ year: "numeric",
+ };
- const name = await new Promise(resolve => {
- cp.exec("git config user.name", (error, stdout, stderr) => {
- resolve(stdout.trim());
- });
- });
- const email = await new Promise(resolve => {
- cp.exec("git config user.email", (error, stdout, stderr) => {
- resolve(stdout.trim());
- });
- });
+ // Specify default date formatting for language (locale)
+ const parts = new Intl.DateTimeFormat('en-us', options).formatToParts(date);
+ const curdate = parts.filter((v) => { if (v.type !== 'literal') { return v.value; } }).map((v) => v.value).join(' ');
+
+ const snippet = new vscode.SnippetString("* " + curdate);
+
+ const name = await new Promise(resolve => exec("git config user.name", (_error, stdout: string) => {
+ resolve(stdout.trim());
+ }));
+
+ const email = await new Promise(resolve => exec("git config user.email", (_error, stdout: string) => {
+ resolve(stdout.trim());
+ }));
if (name || email) {
snippet.appendText(` ${name} <${email}>`);
}
- const text = currentDocument.document.getText();
- const foundVersion = text.match(/Version:(.*)/);
- const foundRelease = text.match(/Release:(.*)/);
-
- if (foundVersion && foundRelease) {
- const macroRegex = /%{[^}]+}/g;
- let version = foundVersion[1].trim();
- let release = foundRelease[1].trim();
+ const file = currentDocument.document.fileName;
- // If macros are found evaluate
- if (macroRegex.test(version) || macroRegex.test(release)) {
- version = await new Promise(resolve => {
- cp.exec(`rpm -E "${version}"`, (error, stdout, stderr) => {
- resolve(stdout.trim());
- });
- });
- release = await new Promise(resolve => {
- cp.exec(`rpm -E ${release}`, (error, stdout, stderr) => {
- resolve(stdout.trim());
- });
- });
- }
+ const fullversion = await new Promise(resolve => exec(`rpmspec -P ${file} | awk '/^Version/ { ver=$2; } /^Release/ { gsub(/\.[a-z]+[0-9]+$/, "", $2); rel=$2; } END { printf("%s-%s", ver, rel); }'`, (error, stdout) => {
+ resolve(stdout.trim());
+ }));
- snippet.appendText(` - ${version}-${release}`);
+ if (fullversion) {
+ snippet.appendText(` - ${fullversion}`);
}
snippet.appendText("\n- ");
snippet.appendTabstop();
- snippet.appendText("\n");
+ snippet.appendText("\n\n");
currentDocument.insertSnippet(snippet);
}
);