Merge branch 'stable-3.2'
* stable-3.2:
Convert to Polymer 3
Change-Id: I66363b9759d83d9b8e5ee8a458c5cae0108fe0aa
diff --git a/BUILD b/BUILD
index d00bb76..5e186ed 100644
--- a/BUILD
+++ b/BUILD
@@ -1,3 +1,4 @@
+load("@npm//@bazel/rollup:index.bzl", "rollup_bundle")
load("@rules_java//java:defs.bzl", "java_library")
load("//tools/bzl:junit.bzl", "junit_tests")
load(
@@ -6,6 +7,8 @@
"PLUGIN_TEST_DEPS",
"gerrit_plugin",
)
+load("//tools/bzl:genrule2.bzl", "genrule2")
+load("//tools/bzl:js.bzl", "polygerrit_plugin")
LFS_DEPS = [
"@jgit//org.eclipse.jgit.lfs.server:jgit-lfs-server",
@@ -38,10 +41,41 @@
"Gerrit-SshModule: com.googlesource.gerrit.plugins.lfs.SshModule",
"Gerrit-InitStep: com.googlesource.gerrit.plugins.lfs.InitLfs",
],
+ resource_jars = [":gr-lfs-static"],
resources = glob(["src/main/resources/**/*"]),
deps = LFS_DEPS,
)
+genrule2(
+ name = "gr-lfs-static",
+ srcs = [":gr-lfs"],
+ outs = ["gr-lfs-static.jar"],
+ cmd = " && ".join([
+ "mkdir $$TMP/static",
+ "cp -r $(locations :gr-lfs) $$TMP/static",
+ "cd $$TMP",
+ "zip -Drq $$ROOT/$@ -g .",
+ ]),
+)
+
+polygerrit_plugin(
+ name = "gr-lfs",
+ app = "gr-lfs-bundle.js",
+ plugin_name = "gr-lfs",
+)
+
+rollup_bundle(
+ name = "gr-lfs-bundle",
+ srcs = glob(["gr-lfs/*.js"]),
+ entry_point = "gr-lfs/plugin.js",
+ format = "iife",
+ rollup_bin = "//tools/node_tools:rollup-bin",
+ sourcemap = "hidden",
+ deps = [
+ "@tools_npm//rollup-plugin-node-resolve",
+ ],
+)
+
junit_tests(
name = "lfs_tests",
srcs = glob(["src/test/java/**/*.java"]),
diff --git a/gr-lfs/gr-lfs-project-info.js b/gr-lfs/gr-lfs-project-info.js
new file mode 100644
index 0000000..980ce20
--- /dev/null
+++ b/gr-lfs/gr-lfs-project-info.js
@@ -0,0 +1,54 @@
+// Copyright (C) 2021 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {htmlTemplate} from './gr-lfs-project-info_html.js';
+
+class GrLfsProjectInfo extends Polymer.Element {
+ static get is() {
+ return 'gr-lfs-project-info';
+ }
+
+ static get template() {
+ return htmlTemplate;
+ }
+
+ static get properties() {
+ return {
+ repoName: String,
+ _appliedConfig: Object,
+ };
+ }
+
+ connectedCallback() {
+ super.connectedCallback();
+
+ this._getPreferences();
+ }
+
+ _getPreferences() {
+ let encodedRepoName = encodeURIComponent(this.repoName);
+ return this.plugin.restApi('/projects/')
+ .get(`${encodedRepoName}/${this.plugin.getPluginName()}~lfs:config-project`)
+ .then(config => {
+ if (!config || Object.entries(config).length === 0) {
+ this.$.lfsProjectInfo.hidden = true;
+ return;
+ }
+
+ this._appliedConfig = config
+ })
+ }
+}
+
+customElements.define(GrLfsProjectInfo.is, GrLfsProjectInfo);
diff --git a/gr-lfs/gr-lfs-project-info_html.js b/gr-lfs/gr-lfs-project-info_html.js
new file mode 100644
index 0000000..953d594
--- /dev/null
+++ b/gr-lfs/gr-lfs-project-info_html.js
@@ -0,0 +1,44 @@
+/**
+ * @license
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export const htmlTemplate = Polymer.html`
+<style include="shared-styles"></style>
+<style include="gr-form-styles"></style>
+<style>
+ .sectionTitle {
+ padding-top: 2em;
+ }
+</style>
+<fieldset id="lfsProjectInfo" class="gr-form-styles">
+ <h2 class="sectionTitle">LFS Info</h2>
+ <section>
+ <span class="title">Enabled</span>
+ <span class="value">[[_appliedConfig.enabled]]</span>
+ </section>
+ <section>
+ <span class="title">Max Object Size</span>
+ <span class="value">[[_appliedConfig.max_object_size]]</span>
+ </section>
+ <section>
+ <span class="title">Read Only</span>
+ <span class="value">[[_appliedConfig.read_only]]</span>
+ </section>
+ <section hidden="[[!_appliedConfig.backend]]">
+ <span class="title">Backend</span>
+ <span class="value">[[_appliedConfig.backend]]</span>
+ </section>
+</fieldset>`;
diff --git a/gr-lfs/plugin.js b/gr-lfs/plugin.js
new file mode 100644
index 0000000..afeacd5
--- /dev/null
+++ b/gr-lfs/plugin.js
@@ -0,0 +1,23 @@
+/**
+ * @license
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import './gr-lfs-project-info.js';
+
+Gerrit.install(plugin => {
+ plugin.registerCustomComponent(
+ 'repo-config', 'gr-lfs-project-info');
+});
diff --git a/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java
index aabbd69..640704b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/lfs/HttpModule.java
@@ -62,7 +62,7 @@
populateRepository(backend);
}
- DynamicSet.bind(binder(), WebUiPlugin.class).toInstance(new JavaScriptPlugin("gr-lfs.html"));
+ DynamicSet.bind(binder(), WebUiPlugin.class).toInstance(new JavaScriptPlugin("gr-lfs.js"));
}
private void populateRepository(LfsBackend backend) {
diff --git a/src/main/resources/static/gr-lfs-project-info.html b/src/main/resources/static/gr-lfs-project-info.html
deleted file mode 100644
index 4008f89..0000000
--- a/src/main/resources/static/gr-lfs-project-info.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!--
-@license
-Copyright (C) 2019 The Android Open Source Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-<dom-module id="gr-lfs-project-info">
- <template>
- <style include="shared-styles"></style>
- <style include="gr-form-styles"></style>
- <style>
- .sectionTitle {
- padding-top: 2em;
- }
- </style>
- <fieldset id="lfsProjectInfo" class="gr-form-styles">
- <h2 class="sectionTitle">LFS Info</h2>
- <section>
- <span class="title">Enabled</span>
- <span class="value">[[_appliedConfig.enabled]]</span>
- </section>
- <section>
- <span class="title">Max Object Size</span>
- <span class="value">[[_appliedConfig.max_object_size]]</span>
- </section>
- <section>
- <span class="title">Read Only</span>
- <span class="value">[[_appliedConfig.read_only]]</span>
- </section>
- <section hidden="[[!_appliedConfig.backend]]">
- <span class="title">Backend</span>
- <span class="value">[[_appliedConfig.backend]]</span>
- </section>
- </fieldset>
- </template>
- <script src="gr-lfs-project-info.js"></script>
-</dom-module>
diff --git a/src/main/resources/static/gr-lfs-project-info.js b/src/main/resources/static/gr-lfs-project-info.js
deleted file mode 100644
index 8eff229..0000000
--- a/src/main/resources/static/gr-lfs-project-info.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the 'License');
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an 'AS IS' BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-(function () {
- 'use strict';
-
- Polymer({
- is: 'gr-lfs-project-info',
-
- properties: {
- repoName: String,
- _appliedConfig: Object,
- },
-
- attached() {
- this._getPreferences()
- },
-
- _getPreferences() {
- let encodedRepoName = encodeURIComponent(this.repoName);
- return this.plugin.restApi('/projects/')
- .get(`${encodedRepoName}/${this.plugin.getPluginName()}~lfs:config-project`)
- .then(config => {
- if (!config || Object.entries(config).length === 0) {
- this.$.lfsProjectInfo.hidden = true;
- return;
- }
-
- this._appliedConfig = config
- })
- },
- });
-})();
diff --git a/src/main/resources/static/gr-lfs.html b/src/main/resources/static/gr-lfs.html
deleted file mode 100644
index 1a82aa8..0000000
--- a/src/main/resources/static/gr-lfs.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-@license
-Copyright (C) 2019 The Android Open Source Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-<link rel="import" href="./gr-lfs-project-info.html">
-
-<dom-module id="gr-lfs">
- <script>
- Gerrit.install(plugin => {
- plugin.registerCustomComponent('repo-config', 'gr-lfs-project-info');
- });
- </script>
-</dom-module>