microsoft/vscode-react-native

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
e9123b75b8ef8ce6c09ebc810c8ef1b39db21d40

Branches

Tags

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

Clone

HTTPS

Download ZIP

gulp_scripts/release.js

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