microsoft/vscode-react-native

Public

mirrored fromhttps://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
a4e6c22812fb2deeafd58f614c7ec796676b9559

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

gulp_scripts/release.js

109lines · modecode

1const gulp = require("gulp");
2const log = require("fancy-log");
3const path = require("path");
4const os = require("os");
5const fs = require("fs");
6const GulpExtras = require("../tools/gulp-extras");
7
8const isNightly = process.argv.includes("--nightly");
9const extensionName = isNightly ? "vscode-react-native-preview" : "vscode-react-native";
10const executeCommand = GulpExtras.executeCommand;
11
12function release(cb) {
13 prepareLicenses();
14 cb();
15}
16
17function prepareLicenses() {
18 const backupFiles = [
19 "LICENSE.txt",
20 "ThirdPartyNotices.txt",
21 "package.json",
22 "package-lock.json",
23 ];
24 const backupFolder = path.resolve(path.join(os.tmpdir(), "vscode-react-native"));
25 if (!fs.existsSync(backupFolder)) {
26 fs.mkdirSync(backupFolder);
27 }
28
29 return Promise.resolve()
30 .then(() => {
31 /* back up LICENSE.txt, ThirdPartyNotices.txt, README.md */
32 log("Backing up license files to " + backupFolder + "...");
33 backupFiles.forEach(fileName => {
34 fs.writeFileSync(path.join(backupFolder, fileName), fs.readFileSync(fileName));
35 });
36
37 /* copy over the release package license files */
38 log("Preparing license files for release...");
39 fs.writeFileSync("LICENSE.txt", fs.readFileSync("release/LICENSE.txt"));
40 fs.writeFileSync(
41 "ThirdPartyNotices.txt",
42 fs.readFileSync("release/ThirdPartyNotices.txt"),
43 );
44 })
45 .then(() => {
46 let packageJson = readJson("/package.json");
47 packageJson.main = "/dist/rn-extension";
48 if (isNightly) {
49 log("Performing gul release...");
50 packageJson.version = getVersionNumber();
51 packageJson.name = extensionName;
52 packageJson.preview = true;
53 packageJson.displayName += " (Preview)";
54 }
55 writeJson("/package.json", packageJson);
56 log("Creating release package...");
57 return new Promise((resolve, reject) => {
58 // NOTE: vsce must see npm 3.X otherwise it will not correctly strip out dev dependencies.
59 executeCommand(
60 "vsce",
61 ["package"],
62 arg => {
63 if (arg) {
64 reject(arg);
65 }
66 resolve();
67 },
68 { cwd: appRoot },
69 );
70 });
71 })
72 .finally(() => {
73 /* restore backed up files */
74 log("Restoring modified files...");
75 backupFiles.forEach(fileName => {
76 fs.writeFileSync(
77 path.join(appRoot, fileName),
78 fs.readFileSync(path.join(backupFolder, fileName)),
79 );
80 });
81 });
82}
83
84function readJson(file) {
85 const contents = fs.readFileSync(path.join(appRoot, file), "utf-8").toString();
86 return JSON.parse(contents);
87}
88
89function writeJson(file, jsonObj) {
90 const content = JSON.stringify(jsonObj, null, 2);
91 fs.writeFileSync(path.join(appRoot, file), content);
92}
93
94const getVersionNumber = () => {
95 const date = new Date(new Date().toLocaleString("en-US", { timeZone: "America/Los_Angeles" }));
96
97 return [
98 // YY
99 date.getFullYear(),
100 // MM,
101 date.getMonth() + 1,
102 //DDHH
103 `${date.getDate()}${String(date.getHours()).padStart(2, "0")}`,
104 ].join(".");
105};
106
107module.exports = {
108 release,
109};