You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.3 KiB
JavaScript

let githubRawReg = /^https:\/\/raw\.githubusercontent\.com\/(.*?)\/(.*?)\/master\/(.*?)$/
const FILE = 'data.js'
function getRulesReplacement(content = '') {
let advanceSettings = content ? content : JSON.parse($file.read(FILE).string)
if (advanceSettings.customSettings) {
let cs = advanceSettings.customSettings;
let pat = cs.match(/\/\/\s*replacement\s*:\s*(.*?)[\n\r]/);
if (pat && pat[1]) {
return pat[1];
}
}
return null;
}
function getSoftwareType() {
let file = JSON.parse($file.read(FILE).string)
let workspace = file.workspace
let outputFormat = workspace.outputFormat
if (outputFormat === 'Surge 3 TF') {
return 0
} else if (outputFormat === 'Surge 2') {
return 2
} else if (outputFormat === 'Quantumult') {
return 3
}
return 1
}
function checkUpdate(oldSha, newSha) {
return Object.keys(newSha).some(i => oldSha[i] !== newSha[i])
}
function setFilesSha(sha) {
let file = JSON.parse($file.read(FILE).string)
file['repoSha'] = sha
$file.write({
data: $data({ "string": JSON.stringify(file) }),
path: FILE
})
}
function getFilesSha() {
let file = JSON.parse($file.read(FILE).string)
return file['repoSha'] || {}
}
function getGitHubFilesSha(params) {
params.handler({})
}
function getRepoInfo() {
let owner = 'lhie1';
let repoName = 'Rules';
let filePath = 'Auto';
let softwareType = getSoftwareType()
if (softwareType === 0) {
filePath = 'Auto_New'
} else if (softwareType === 3) {
filePath = 'Quantumult'
}
console.log(filePath)
let rulesRep = getRulesReplacement();
if (rulesRep) {
let reg = rulesRep.match(githubRawReg);
if (reg && reg.length === 4) {
owner = reg[1];
repoName = reg[2];
filePath = reg[3];
}
}
return { owner, repoName, filePath };
}
function getLatestCommitMessage(params) {
params.handler(null)
}
module.exports = {
checkUpdate: checkUpdate,
getGitHubFilesSha: getGitHubFilesSha,
setFilesSha: setFilesSha,
getFilesSha: getFilesSha,
getLatestCommitMessage: getLatestCommitMessage,
getRepoInfo: getRepoInfo
}