@Override
    public void execute() throws CommandExecuteException, ConfigCheckException {
        if (abstractCommandArgs.isDecrypt()) {
            log.warn(
                    "When both --decrypt and --encrypt are specified, only --encrypt will take effect");
        }
        String encryptConfigFile = abstractCommandArgs.getConfigFile();
        Path configPath = Paths.get(encryptConfigFile);
        checkConfigExist(configPath);
        Config config =
                ConfigFactory.parseFile(configPath.toFile())
                        .resolve(ConfigResolveOptions.defaults().setAllowUnresolved(true));
        if (abstractCommandArgs.getVariables() != null) {
            abstractCommandArgs.getVariables().stream()
                    .filter(Objects::nonNull)
                    .map(variable -> variable.split("=", 2))
                    .filter(pair -> pair.length == 2)
                    .forEach(pair -> System.setProperty(pair[0], pair[1]));
            config =
                    config.resolveWith(
                            ConfigFactory.systemProperties(),
                            ConfigResolveOptions.defaults().setAllowUnresolved(true));
        }
        Config encryptConfig = ConfigShadeUtils.encryptConfig(config);
        log.info(
                "Encrypt config: \n{}",
                encryptConfig
                        .root()
                        .render(ConfigRenderOptions.defaults().setOriginComments(false)));
    }
@Test
    public void testEncrypt() throws URISyntaxException {
        TestCommandArgs testCommandArgs = new TestCommandArgs();
        Path filePath = getFilePath("/origin.conf");
        testCommandArgs.setEncrypt(true);
        testCommandArgs.setConfigFile(filePath.toString());
        ConfEncryptCommand confEncryptCommand = new ConfEncryptCommand(testCommandArgs);
        confEncryptCommand.execute();
    }