diff --git a/build.gradle b/build.gradle index 681c8cf..63c0a96 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'io.zhile.research.intellij' -version '1.0.3' +version '1.0.4' repositories { mavenCentral() @@ -25,6 +25,8 @@ intellij { patchPluginXml { changeNotes """ + release v1.0.4 + 1. reset completely release v1.0.3 1. bug fix release v1.0.2 diff --git a/reset_eval/reset_jetbrains_eval_mac_linux.sh b/reset_eval/reset_jetbrains_eval_mac_linux.sh index 329be9d..1ef24eb 100755 --- a/reset_eval/reset_jetbrains_eval_mac_linux.sh +++ b/reset_eval/reset_jetbrains_eval_mac_linux.sh @@ -1,5 +1,5 @@ #!/bin/bash -# reset jetbrains ide evals +# reset jetbrains ide evals v1.0.4 OS_NAME=$(uname -s) JB_PRODUCTS="IntelliJIdea CLion PhpStorm GoLand PyCharm WebStorm Rider DataGrip RubyMine AppCode" @@ -9,7 +9,9 @@ if [ "$OS_NAME" == "Darwin" ]; then for PRD in $JB_PRODUCTS; do rm -rf ~/Library/Preferences/"${PRD}"*/eval + sed -i '' '/name="evlsprt.*"/d' ~/Library/Preferences/"${PRD}"*/options/other.xml >/dev/null 2>&1 rm -rf ~/Library/Application\ Support/JetBrains/"${PRD}"*/eval + sed -i '' '/name="evlsprt.*"/d' ~/Library/Application\ Support/JetBrains/"${PRD}"*/options/other.xml >/dev/null 2>&1 done plutil -remove "/.JetBrains\.UserIdOnMachine" ~/Library/Preferences/com.apple.java.util.prefs.plist >/dev/null @@ -20,7 +22,9 @@ elif [ "$OS_NAME" == "Linux" ]; then for PRD in $JB_PRODUCTS; do rm -rf ~/."${PRD}"*/config/eval + sed -i '/name="evlsprt.*"/d' ~/."${PRD}"*/config/options/other.xml >/dev/null 2>&1 rm -rf ~/.config/JetBrains/"${PRD}"*/eval + sed -i '/name="evlsprt.*"/d' ~/.config/JetBrains/"${PRD}"*/options/other.xml >/dev/null 2>&1 done sed -i '/key="JetBrains\.UserIdOnMachine"/d' ~/.java/.userPrefs/prefs.xml diff --git a/reset_eval/reset_jetbrains_eval_windows.vbs b/reset_eval/reset_jetbrains_eval_windows.vbs index ec4bcd5..28b1cb6 100644 --- a/reset_eval/reset_jetbrains_eval_windows.vbs +++ b/reset_eval/reset_jetbrains_eval_windows.vbs @@ -1,3 +1,4 @@ +' reset jetbrains ide evals v1.0.4 Set oShell = CreateObject("WScript.Shell") Set oFS = CreateObject("Scripting.FileSystemObject") sHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%") @@ -9,26 +10,43 @@ re.IgnoreCase = True re.Pattern = "\.?(IntelliJIdea|GoLand|CLion|PyCharm|DataGrip|RubyMine|AppCode|PhpStorm|WebStorm|Rider).*" Sub removeEval(ByVal file, ByVal sEvalPath) - bMatch = re.Test(file.Name) + bMatch = re.Test(file.Name) If Not bMatch Then - Exit Sub - End If + Exit Sub + End If - If oFS.FolderExists(sEvalPath) Then - oFS.DeleteFolder sEvalPath, True - End If + If oFS.FolderExists(sEvalPath) Then + oFS.DeleteFolder sEvalPath, True + End If + + content = "" + otherFile = oFS.GetParentFolderName(sEvalPath) + "\options\other.xml" + If oFS.FileExists(otherFile) Then + Set txtStream = oFS.OpenTextFile(otherFile, 1, False) + Do While Not txtStream.AtEndOfStream + line = txtStream.ReadLine + If InStr(line, "name=""evlsprt") = 0 Then + content = content + line + vbLf + End If + Loop + txtStream.Close + + Set txtStream = oFS.OpenTextFile(otherFile, 2, False) + txtStream.Write content + txtStream.Close + End If End Sub If oFS.FolderExists(sHomeFolder) Then - For Each oFile In oFS.GetFolder(sHomeFolder).SubFolders - removeEval oFile, sHomeFolder + "\" + oFile.Name + "\config\eval" - Next + For Each oFile In oFS.GetFolder(sHomeFolder).SubFolders + removeEval oFile, sHomeFolder + "\" + oFile.Name + "\config\eval" + Next End If If oFS.FolderExists(sJBDataFolder) Then - For Each oFile In oFS.GetFolder(sJBDataFolder).SubFolders - removeEval oFile, sJBDataFolder + "\" + oFile.Name + "\eval" - Next + For Each oFile In oFS.GetFolder(sJBDataFolder).SubFolders + removeEval oFile, sJBDataFolder + "\" + oFile.Name + "\eval" + Next End If On Error Resume Next diff --git a/src/main/java/io/zhile/research/intellij/action/ResetAction.java b/src/main/java/io/zhile/research/intellij/action/ResetAction.java index 77dcb29..d0c1c63 100644 --- a/src/main/java/io/zhile/research/intellij/action/ResetAction.java +++ b/src/main/java/io/zhile/research/intellij/action/ResetAction.java @@ -16,12 +16,16 @@ import io.zhile.research.intellij.helper.NotificationHelper; import org.jetbrains.annotations.NotNull; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Paths; -import java.util.prefs.BackingStoreException; +import java.util.Scanner; import java.util.prefs.Preferences; public class ResetAction extends AnAction { private static final String OLD_MACHINE_ID_KEY = "JetBrains.UserIdOnMachine"; + private static final String NEW_MACHINE_ID_KEY = "user_id_on_machine"; + private static final String DEVICE_ID_KEY = "device_id"; private static final String DEFAULT_COMPANY_NAME = "jetbrains"; public ResetAction() { @@ -39,18 +43,35 @@ public class ResetAction extends AnAction { } } + File optionsFile = getOptionsFile(); + if (optionsFile.exists()) { + try (Scanner scanner = new Scanner(optionsFile)) { + StringBuilder sbContent = new StringBuilder(); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + if (!line.contains("name=\"evlsprt")) { + sbContent.append(line).append("\n"); + } + } + + Files.write(Paths.get(optionsFile.toURI()), sbContent.toString().getBytes()); + } catch (IOException e) { + NotificationHelper.showError(project, e.getMessage()); + return; + } + } + ApplicationInfoEx appInfo = ApplicationInfoImpl.getShadowInstance(); String companyName = appInfo.getShortCompanyName(); String node = StringUtil.isEmptyOrSpaces(companyName) ? DEFAULT_COMPANY_NAME : companyName.toLowerCase(); - try { - Preferences.userRoot().remove(OLD_MACHINE_ID_KEY); - Preferences.userRoot().node(node).removeNode(); - } catch (BackingStoreException e) { - NotificationHelper.showError(project, e.getMessage()); - return; - } + Preferences prefsRoot = Preferences.userRoot(); + Preferences prefs = prefsRoot.node(node); + + prefsRoot.remove(OLD_MACHINE_ID_KEY); + prefs.remove(NEW_MACHINE_ID_KEY); + prefs.remove(DEVICE_ID_KEY); Preferences.userRoot().node(Constants.PLUGIN_NAME).put(Constants.PRODUCT_NAME + Constants.PRODUCT_HASH, Long.toString(System.currentTimeMillis())); @@ -91,4 +112,10 @@ public class ResetAction extends AnAction { return new File(configPath, "eval"); } + + protected File getOptionsFile() { + String configPath = PathManager.getConfigPath(); + + return new File(new File(configPath, "options"), "other.xml"); + } }