• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

HicServices / RDMP / 6245535001

20 Sep 2023 07:44AM UTC coverage: 57.013%. First build
6245535001

push

github

web-flow
8.1.0 Release (#1628)

* Bump Newtonsoft.Json from 13.0.1 to 13.0.2

Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 13.0.1 to 13.0.2.
- [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases)
- [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/13.0.1...13.0.2)

---
updated-dependencies:
- dependency-name: Newtonsoft.Json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump NLog from 5.0.5 to 5.1.0

Bumps [NLog](https://github.com/NLog/NLog) from 5.0.5 to 5.1.0.
- [Release notes](https://github.com/NLog/NLog/releases)
- [Changelog](https://github.com/NLog/NLog/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/NLog/NLog/compare/v5.0.5...v5.1.0)

---
updated-dependencies:
- dependency-name: NLog
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump NLog from 5.0.5 to 5.1.0

* Fix -r flag - should have been --results-directory all along

* Bump Newtonsoft.Json from 13.0.1 to 13.0.2

* Bump YamlDotNet from 12.0.2 to 12.1.0

Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 12.0.2 to 12.1.0.
- [Release notes](https://github.com/aaubry/YamlDotNet/releases)
- [Commits](https://github.com/aaubry/YamlDotNet/compare/v12.0.2...v12.1.0)

---
updated-dependencies:
- dependency-name: YamlDotNet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump Moq from 4.18.2 to 4.18.3

Bumps [Moq](https://github.com/moq/moq4) from 4.18.2 to 4.18.3.
- [Release notes](https://github.com/moq/moq4/releases)
- [Changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/moq/moq4/compare/v4.18.2...v4.18.3)

---
updated-dependencies:
- dependency-name: Moq
... (continued)

10732 of 20257 branches covered (0.0%)

Branch coverage included in aggregate %.

48141 of 48141 new or added lines in 1086 files covered. (100.0%)

30685 of 52388 relevant lines covered (58.57%)

7387.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

63.33
/Rdmp.Core/CommandExecution/AtomicCommands/ExecuteCommandSetUserSetting.cs
1
// Copyright (c) The University of Dundee 2018-2019
2
// This file is part of the Research Data Management Platform (RDMP).
3
// RDMP is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
4
// RDMP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
5
// You should have received a copy of the GNU General Public License along with RDMP. If not, see <https://www.gnu.org/licenses/>.
6

7
using System;
8
using System.Globalization;
9
using System.Linq;
10
using System.Reflection;
11
using System.Text;
12
using Rdmp.Core.CommandLine.Interactive.Picking;
13
using Rdmp.Core.Curation.Data;
14
using Rdmp.Core.Curation.Data.ImportExport;
15
using Rdmp.Core.Repositories.Construction;
16
using Rdmp.Core.ReusableLibraryCode.Checks;
17
using Rdmp.Core.ReusableLibraryCode.Settings;
18

19
namespace Rdmp.Core.CommandExecution.AtomicCommands;
20

21
public sealed class ExecuteCommandSetUserSetting : BasicCommandExecution
22
{
23
    private readonly PropertyInfo _property;
24
    private readonly ErrorCode _errorCode;
25
    private readonly CheckResult _errorCodeValue;
26

27
    /// <summary>
28
    /// The new value chosen by the user during command execution
29
    /// </summary>
30
    public object NewValue { get; private set; }
18✔
31

32
    /// <summary>
33
    /// True if the command was successfully completed
34
    /// </summary>
35
    public bool Success { get; private set; }
10✔
36

37
    [UseWithObjectConstructor]
38
    public ExecuteCommandSetUserSetting(IBasicActivateItems activator,
39
        [DemandsInitialization("Name of a property you want to change e.g. AllowIdentifiableExtractions")]
40
        string property,
41
        [DemandsInitialization(
42
            "New value to assign, this will be parsed into a valid Type if property is not a string")]
43
        string value) : base(activator)
12✔
44
    {
45
        // if user is calling to set an error code e.g. 'rdmp SetUserSetting R001 Success'
46
        var isCode = ErrorCodes.KnownCodes.FirstOrDefault(e => e.Code.Equals(property));
152✔
47

48
        if (isCode != null)
12✔
49
        {
50
            _errorCode = isCode;
4✔
51
            if (!Enum.TryParse<CheckResult>(value, out var result))
4✔
52
            {
53
                SetImpossible(
2✔
54
                    $"Invalid enum value.  When setting an error code you must supply a value of one of :{string.Join(',', Enum.GetNames<CheckResult>())}");
2✔
55
            }
56
            else
57
            {
58
                _errorCodeValue = result;
2✔
59
                NewValue = _errorCodeValue;
2✔
60
            }
61

62
            return;
2✔
63
        }
64

65
        _property = typeof(UserSettings).GetProperty(property, BindingFlags.Public | BindingFlags.Static);
8✔
66

67
        if (_property == null)
8!
68
        {
69
            SetImpossible($"Unknown Property '{property}'");
×
70

71
            //suggest similar sounding properties
72
            var suggestions =
×
73
                typeof(UserSettings).GetProperties(BindingFlags.Public | BindingFlags.Static).Where(c =>
×
74
                        CultureInfo.CurrentCulture.CompareInfo.IndexOf(c.Name, property, CompareOptions.IgnoreCase) >=
×
75
                        0)
×
76
                    .ToArray();
×
77

78
            if (suggestions.Any())
×
79
            {
80
                var msg = new StringBuilder($"Unknown Property '{property}'");
×
81
                msg.AppendLine();
×
82
                msg.AppendLine("Did you mean:");
×
83
                foreach (var s in suggestions)
×
84
                    msg.AppendLine(s.Name);
×
85
                activator.Show(msg.ToString());
×
86
            }
87
        }
88
        else
89
        {
90
            var picker = new CommandLineObjectPicker(new string[] { value ?? "NULL" }, activator);
8!
91

92
            if (!picker.HasArgumentOfType(0, _property.PropertyType))
8!
93
                SetImpossible($"Provided value could not be converted to '{_property.PropertyType}'");
×
94
            else
95
                NewValue = picker[0].GetValueForParameterOfType(_property.PropertyType);
8✔
96
        }
97
    }
8✔
98

99

100
    public override void Execute()
101
    {
102
        base.Execute();
10✔
103

104
        if (_errorCode != null)
10✔
105
        {
106
            UserSettings.SetErrorReportingLevelFor(_errorCode, _errorCodeValue);
2✔
107
            Success = true;
2✔
108
            return;
2✔
109
        }
110

111
        if (_property == null)
8!
112
            return;
×
113

114
        ShareManager.SetValue(_property, NewValue, null);
8✔
115
        Success = true;
8✔
116
    }
8✔
117
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc