get dockerImage()

in client/src/components/runs/logs/forms/CommitRunForm.js [166:225]


  get dockerImage () {
    if (!this.props.dockerRegistries.loaded) {
      return null;
    }
    if (this.props.defaultDockerImage) {
      const parts = this.props.defaultDockerImage.split('/');
      if (parts.length === 3) {
        let tool = parts[2];
        if (tool) {
          tool = tool.split(':')[0];
        }
        let [selectedRegistry] = this.registries.filter(r => r.path === parts[0]);
        let group = parts[1];
        if (!selectedRegistry) {
          selectedRegistry = this.registries[0];
          group = selectedRegistry && selectedRegistry.groups
            ? selectedRegistry.groups[0].name : '';
          tool = '';
        }
        if (selectedRegistry) {
          const personalGroup = (selectedRegistry.groups || []).find(group => group.privateGroup);
          if (personalGroup) {
            group = personalGroup.name;
          }
        }
        if (selectedRegistry && group) {
          const [registryGroup] = (selectedRegistry.groups || []).filter(g => g.name === group);
          if (registryGroup) {
            const [groupTool] = (registryGroup.tools || [])
              .filter(t => t.image === `${group}/${tool}`);
            if (groupTool) {
              if (!roleModel.writeAllowed(groupTool) && roleModel.writeAllowed(registryGroup)) {
                tool = '';
              } else if (!roleModel.writeAllowed(groupTool) &&
                !roleModel.writeAllowed(registryGroup)) {
                tool = '';
                const selectFirstWritableGroup = g =>
                roleModel.writeAllowed(g) || (g.tools || [])
                    .filter(t => roleModel.writeAllowed(t)).length > 0;
                const selectFirstWritableRegistry = r =>
                  (r.groups || []).filter(selectFirstWritableGroup).length > 0;
                [selectedRegistry] = this.registries.filter(selectFirstWritableRegistry);
                if (selectedRegistry) {
                  const [writableGroup] = (selectedRegistry.groups || [])
                    .filter(selectFirstWritableGroup);
                  if (writableGroup) {
                    group = writableGroup.name;
                  }
                }
              }
            }
          }
        }
        if (selectedRegistry && group) {
          return `${selectedRegistry.path}/${group}/${tool}`;
        }
      }
    }
    return null;
  }