summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/packages/details/components/additional_metadata.vue
blob: a3de6dd46c7c0f94f5bb94d37f7ba2908e19be70 (plain)
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
96
97
98
<script>
import { GlLink, GlSprintf } from '@gitlab/ui';
import { s__ } from '~/locale';
import DetailsRow from '~/registry/shared/components/details_row.vue';
import { generateConanRecipe } from '../utils';
import { PackageType } from '../../shared/constants';

export default {
  i18n: {
    sourceText: s__('PackageRegistry|Source project located at %{link}'),
    licenseText: s__('PackageRegistry|License information located at %{link}'),
    recipeText: s__('PackageRegistry|Recipe: %{recipe}'),
    appGroup: s__('PackageRegistry|App group: %{group}'),
    appName: s__('PackageRegistry|App name: %{name}'),
  },
  components: {
    DetailsRow,
    GlLink,
    GlSprintf,
  },
  props: {
    packageEntity: {
      type: Object,
      required: true,
    },
  },
  computed: {
    conanRecipe() {
      return generateConanRecipe(this.packageEntity);
    },
    showMetadata() {
      const visibilityConditions = {
        [PackageType.NUGET]: this.packageEntity.nuget_metadatum,
        [PackageType.CONAN]: this.packageEntity.conan_metadatum,
        [PackageType.MAVEN]: this.packageEntity.maven_metadatum,
      };
      return visibilityConditions[this.packageEntity.package_type];
    },
  },
};
</script>

<template>
  <div v-if="showMetadata">
    <h3 class="gl-font-lg" data-testid="title">{{ __('Additional Metadata') }}</h3>

    <div class="gl-bg-gray-50 gl-inset-border-1-gray-100 gl-rounded-base" data-testid="main">
      <template v-if="packageEntity.nuget_metadatum">
        <details-row icon="project" padding="gl-p-4" dashed data-testid="nuget-source">
          <gl-sprintf :message="$options.i18n.sourceText">
            <template #link>
              <gl-link :href="packageEntity.nuget_metadatum.project_url" target="_blank">{{
                packageEntity.nuget_metadatum.project_url
              }}</gl-link>
            </template>
          </gl-sprintf>
        </details-row>
        <details-row icon="license" padding="gl-p-4" data-testid="nuget-license">
          <gl-sprintf :message="$options.i18n.licenseText">
            <template #link>
              <gl-link :href="packageEntity.nuget_metadatum.license_url" target="_blank">{{
                packageEntity.nuget_metadatum.license_url
              }}</gl-link>
            </template>
          </gl-sprintf>
        </details-row>
      </template>

      <details-row
        v-else-if="packageEntity.conan_metadatum"
        icon="information-o"
        padding="gl-p-4"
        data-testid="conan-recipe"
      >
        <gl-sprintf :message="$options.i18n.recipeText">
          <template #recipe>{{ conanRecipe }}</template>
        </gl-sprintf>
      </details-row>

      <template v-else-if="packageEntity.maven_metadatum">
        <details-row icon="information-o" padding="gl-p-4" dashed data-testid="maven-app">
          <gl-sprintf :message="$options.i18n.appName">
            <template #name>
              <strong>{{ packageEntity.maven_metadatum.app_name }}</strong>
            </template>
          </gl-sprintf>
        </details-row>
        <details-row icon="information-o" padding="gl-p-4" data-testid="maven-group">
          <gl-sprintf :message="$options.i18n.appGroup">
            <template #group>
              <strong>{{ packageEntity.maven_metadatum.app_group }}</strong>
            </template>
          </gl-sprintf>
        </details-row>
      </template>
    </div>
  </div>
</template>