diff options
author | Aleksey Kladov <[email protected]> | 2020-03-19 08:32:57 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-03-19 08:37:03 +0000 |
commit | 3d1cb5e20f7a05314f6fd4261076b0a85546cfe4 (patch) | |
tree | 6fd47ffb498891ca24b2972dabfdd58a3f737644 | |
parent | aca3c3086ee99f5770a60970e20af640c895d42a (diff) |
Simplify extension tag sniffing
-rw-r--r-- | .github/workflows/release.yaml | 5 | ||||
-rw-r--r-- | editors/code/package.json | 4 | ||||
-rw-r--r-- | editors/code/src/config.ts | 20 | ||||
-rw-r--r-- | editors/code/src/main.ts | 4 | ||||
-rw-r--r-- | xtask/src/dist.rs | 23 | ||||
-rw-r--r-- | xtask/src/main.rs | 5 |
6 files changed, 27 insertions, 34 deletions
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0434b6128..13bc172ba 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml | |||
@@ -6,6 +6,7 @@ on: | |||
6 | push: | 6 | push: |
7 | branches: | 7 | branches: |
8 | - release | 8 | - release |
9 | - nightly | ||
9 | 10 | ||
10 | jobs: | 11 | jobs: |
11 | dist: | 12 | dist: |
@@ -49,11 +50,11 @@ jobs: | |||
49 | 50 | ||
50 | - name: Dist | 51 | - name: Dist |
51 | if: github.event_name == 'push' | 52 | if: github.event_name == 'push' |
52 | run: cargo xtask dist | 53 | run: cargo xtask dist --version 0.2.$GITHUB_RUN_NUMBER --tag $(date --iso --utc) |
53 | 54 | ||
54 | - name: Dist | 55 | - name: Dist |
55 | if: github.event_name != 'push' | 56 | if: github.event_name != 'push' |
56 | run: cargo xtask dist --nightly | 57 | run: cargo xtask dist --version 0.3.$GITHUB_RUN_NUMBER-nightly --tag nightly |
57 | 58 | ||
58 | - name: Upload artifacts | 59 | - name: Upload artifacts |
59 | uses: actions/upload-artifact@v1 | 60 | uses: actions/upload-artifact@v1 |
diff --git a/editors/code/package.json b/editors/code/package.json index 150c36845..9f2fe06f3 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -5,8 +5,8 @@ | |||
5 | "preview": true, | 5 | "preview": true, |
6 | "private": true, | 6 | "private": true, |
7 | "icon": "icon.png", | 7 | "icon": "icon.png", |
8 | "//": "The real version is in release.yaml, this one just needs to be bigger", | 8 | "version": "0.4.0-dev", |
9 | "version": "0.2.20200309-nightly", | 9 | "releaseTag": "nightly", |
10 | "publisher": "matklad", | 10 | "publisher": "matklad", |
11 | "repository": { | 11 | "repository": { |
12 | "url": "https://github.com/rust-analyzer/rust-analyzer.git", | 12 | "url": "https://github.com/rust-analyzer/rust-analyzer.git", |
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 28698ab8e..54b905303 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -38,23 +38,17 @@ export class Config { | |||
38 | ] | 38 | ] |
39 | .map(opt => `${this.rootSection}.${opt}`); | 39 | .map(opt => `${this.rootSection}.${opt}`); |
40 | 40 | ||
41 | readonly packageJsonVersion = vscode | 41 | readonly packageJsonVersion: string = vscode |
42 | .extensions | 42 | .extensions |
43 | .getExtension(this.extensionId)! | 43 | .getExtension(this.extensionId)! |
44 | .packageJSON | 44 | .packageJSON |
45 | .version as string; // n.n.YYYYMMDD[-nightly] | 45 | .version; |
46 | 46 | ||
47 | /** | 47 | readonly releaseTag: string = vscode |
48 | * Either `nightly` or `YYYY-MM-DD` (i.e. `stable` release) | 48 | .extensions |
49 | */ | 49 | .getExtension(this.extensionId)! |
50 | readonly extensionReleaseTag: string = (() => { | 50 | .packageJSON |
51 | if (this.packageJsonVersion.endsWith(NIGHTLY_TAG)) return NIGHTLY_TAG; | 51 | .releaseTag; |
52 | |||
53 | const realVersionRegexp = /^\d+\.\d+\.(\d{4})(\d{2})(\d{2})/; | ||
54 | const [, yyyy, mm, dd] = this.packageJsonVersion.match(realVersionRegexp)!; | ||
55 | |||
56 | return `${yyyy}-${mm}-${dd}`; | ||
57 | })(); | ||
58 | 52 | ||
59 | private cfg!: vscode.WorkspaceConfiguration; | 53 | private cfg!: vscode.WorkspaceConfiguration; |
60 | 54 | ||
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index d907f3e6f..5297614a9 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts | |||
@@ -111,7 +111,7 @@ async function bootstrap(config: Config, state: PersistentState): Promise<string | |||
111 | 111 | ||
112 | async function bootstrapExtension(config: Config, state: PersistentState): Promise<void> { | 112 | async function bootstrapExtension(config: Config, state: PersistentState): Promise<void> { |
113 | if (config.channel === "stable") { | 113 | if (config.channel === "stable") { |
114 | if (config.extensionReleaseTag === NIGHTLY_TAG) { | 114 | if (config.releaseTag === NIGHTLY_TAG) { |
115 | vscode.window.showWarningMessage(`You are running a nightly version of rust-analyzer extension. | 115 | vscode.window.showWarningMessage(`You are running a nightly version of rust-analyzer extension. |
116 | To switch to stable, uninstall the extension and re-install it from the marketplace`); | 116 | To switch to stable, uninstall the extension and re-install it from the marketplace`); |
117 | } | 117 | } |
@@ -219,7 +219,7 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
219 | if (userResponse !== "Download now") return dest; | 219 | if (userResponse !== "Download now") return dest; |
220 | } | 220 | } |
221 | 221 | ||
222 | const release = await fetchRelease(config.extensionReleaseTag); | 222 | const release = await fetchRelease(config.releaseTag); |
223 | const artifact = release.assets.find(artifact => artifact.name === binaryName); | 223 | const artifact = release.assets.find(artifact => artifact.name === binaryName); |
224 | assert(!!artifact, `Bad release: ${JSON.stringify(release)}`); | 224 | assert(!!artifact, `Bad release: ${JSON.stringify(release)}`); |
225 | 225 | ||
diff --git a/xtask/src/dist.rs b/xtask/src/dist.rs index e3dddd9b1..3a14f8a63 100644 --- a/xtask/src/dist.rs +++ b/xtask/src/dist.rs | |||
@@ -7,31 +7,27 @@ use crate::{ | |||
7 | project_root, | 7 | project_root, |
8 | }; | 8 | }; |
9 | 9 | ||
10 | pub fn run_dist(nightly: bool) -> Result<()> { | 10 | pub fn run_dist(version: &str, release_tag: &str) -> Result<()> { |
11 | let dist = project_root().join("dist"); | 11 | let dist = project_root().join("dist"); |
12 | rm_rf(&dist)?; | 12 | rm_rf(&dist)?; |
13 | fs2::create_dir_all(&dist)?; | 13 | fs2::create_dir_all(&dist)?; |
14 | 14 | ||
15 | if cfg!(target_os = "linux") { | 15 | if cfg!(target_os = "linux") { |
16 | dist_client(nightly)?; | 16 | dist_client(version, release_tag)?; |
17 | } | 17 | } |
18 | dist_server()?; | 18 | dist_server()?; |
19 | Ok(()) | 19 | Ok(()) |
20 | } | 20 | } |
21 | 21 | ||
22 | fn dist_client(nightly: bool) -> Result<()> { | 22 | fn dist_client(version: &str, release_tag: &str) -> Result<()> { |
23 | let _d = pushd("./editors/code"); | 23 | let _d = pushd("./editors/code"); |
24 | let nightly = release_tag == "nightly"; | ||
24 | 25 | ||
25 | let package_json_path = PathBuf::from("./package.json"); | 26 | let mut patch = Patch::new("./package.json")?; |
26 | let mut patch = Patch::new(package_json_path.clone())?; | ||
27 | 27 | ||
28 | let date = run!("date --utc +%Y%m%d")?; | 28 | patch |
29 | let version_suffix = if nightly { "-nightly" } else { "" }; | 29 | .replace(r#""version": "0.4.0-dev""#, &format!(r#""version": "{}""#, version)) |
30 | 30 | .replace(r#""releaseTag": "nightly""#, &format!(r#""releaseTag": "{}""#, release_tag)); | |
31 | patch.replace( | ||
32 | r#""version": "0.2.20200309-nightly""#, | ||
33 | &format!(r#""version": "0.1.{}{}""#, date, version_suffix), | ||
34 | ); | ||
35 | 31 | ||
36 | if nightly { | 32 | if nightly { |
37 | patch.replace( | 33 | patch.replace( |
@@ -86,7 +82,8 @@ struct Patch { | |||
86 | } | 82 | } |
87 | 83 | ||
88 | impl Patch { | 84 | impl Patch { |
89 | fn new(path: PathBuf) -> Result<Patch> { | 85 | fn new(path: impl Into<PathBuf>) -> Result<Patch> { |
86 | let path = path.into(); | ||
90 | let contents = fs2::read_to_string(&path)?; | 87 | let contents = fs2::read_to_string(&path)?; |
91 | Ok(Patch { path, original_contents: contents.clone(), contents }) | 88 | Ok(Patch { path, original_contents: contents.clone(), contents }) |
92 | } | 89 | } |
diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 7c8ea9001..aafa73610 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs | |||
@@ -103,9 +103,10 @@ FLAGS: | |||
103 | run_release(dry_run) | 103 | run_release(dry_run) |
104 | } | 104 | } |
105 | "dist" => { | 105 | "dist" => { |
106 | let nightly = args.contains("--nightly"); | 106 | let version: String = args.value_from_str("--version")?; |
107 | let release_tag: String = args.value_from_str("--tag")?; | ||
107 | args.finish()?; | 108 | args.finish()?; |
108 | run_dist(nightly) | 109 | run_dist(&version, &release_tag) |
109 | } | 110 | } |
110 | _ => { | 111 | _ => { |
111 | eprintln!( | 112 | eprintln!( |