Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,5 @@ public interface Script {
/**
* Evaluates and executes this script.
*/
void eval();
void eval(String script);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.instancify.scriptify.api.script.function;

import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;

/**
* Represents a function that can be used within scripts.
Expand All @@ -17,9 +18,10 @@ public interface ScriptFunction {
/**
* Invokes the function with the provided arguments.
*
* @param script The script in which the function will be invoked
* @param args The arguments to pass to the function
* @return The result of the function execution
* @throws ScriptFunctionException If there's an error during invocation
*/
Object invoke(Object[] args) throws ScriptFunctionException;
Object invoke(Script script, Object[] args) throws ScriptFunctionException;
}
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ java {

allprojects {
group = "com.instancify.scriptify"
version = "1.0.3-SNAPSHOT"
version = "1.1.3-SNAPSHOT"
}

subprojects {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.instancify.scriptify.api.script.constant.ScriptConstant;
import com.instancify.scriptify.api.script.constant.ScriptConstantManager;
import com.instancify.scriptify.core.script.constant.impl.ScriptConstantBaseDir;
import com.instancify.scriptify.core.script.constant.impl.ScriptConstantOsName;

import java.util.HashMap;
import java.util.Map;
Expand All @@ -10,6 +12,11 @@ public class StandardConstantManager implements ScriptConstantManager {

private final Map<String, ScriptConstant> constants = new HashMap<>();

public StandardConstantManager() {
this.register(new ScriptConstantOsName());
this.register(new ScriptConstantBaseDir());
}

@Override
public Map<String, ScriptConstant> getConstants() {
return constants;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.instancify.scriptify.core.script.constant.impl;

import com.instancify.scriptify.api.script.constant.ScriptConstant;

import java.nio.file.Paths;

/**
* Represents a constant with base dir
*/
public class ScriptConstantBaseDir implements ScriptConstant {

@Override
public String getName() {
return "baseDir";
}

@Override
public Object getValue() {
return Paths.get("").toAbsolutePath().toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.instancify.scriptify.core.script.constant.impl;

import com.instancify.scriptify.api.script.constant.ScriptConstant;

/**
* Represents a constant with os name
*/
public class ScriptConstantOsName implements ScriptConstant {

@Override
public String getName() {
return "osName";
}

@Override
public Object getValue() {
return System.getProperty("os.name");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
import com.instancify.scriptify.api.script.function.ScriptFunction;
import com.instancify.scriptify.api.script.function.ScriptFunctionManager;
import com.instancify.scriptify.core.script.function.impl.*;
import com.instancify.scriptify.core.script.function.impl.crypto.*;
import com.instancify.scriptify.core.script.function.impl.file.*;
import com.instancify.scriptify.core.script.function.impl.os.*;
import com.instancify.scriptify.core.script.function.impl.random.*;
import com.instancify.scriptify.core.script.function.impl.zip.*;

import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -35,6 +40,7 @@ public StandardFunctionManager() {
this.register(new ScriptFunctionMD5());
this.register(new ScriptFunctionSHA256());
this.register(new ScriptFunctionExecCommand());
this.register(new ScriptFunctionEnv());
this.register(new ScriptFunctionShuffleArray());
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.instancify.scriptify.core.script.function.impl;

import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.util.Arrays;
Expand All @@ -16,7 +17,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) {
public Object invoke(Script script, Object[] args) {
System.out.println(Arrays.stream(args).map(String::valueOf).collect(Collectors.joining(" ")));
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;
import org.mozilla.javascript.NativeArray;

Expand All @@ -21,7 +22,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) throws ScriptFunctionException {
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length != 1) {
throw new ScriptFunctionArgsCountException(1, args.length);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.instancify.scriptify.core.script.function.impl;
package com.instancify.scriptify.core.script.function.impl.crypto;

import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.nio.charset.StandardCharsets;
Expand All @@ -18,7 +19,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) throws ScriptFunctionException {
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length != 1) {
throw new ScriptFunctionArgsCountException(1, args.length);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.instancify.scriptify.core.script.function.impl;
package com.instancify.scriptify.core.script.function.impl.crypto;

import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.util.Base64;
Expand All @@ -17,7 +18,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) throws ScriptFunctionException {
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length != 1) {
throw new ScriptFunctionArgsCountException(1, args.length);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.instancify.scriptify.core.script.function.impl;
package com.instancify.scriptify.core.script.function.impl.crypto;

import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.math.BigInteger;
Expand All @@ -20,7 +21,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) throws ScriptFunctionException {
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length != 1) {
throw new ScriptFunctionArgsCountException(1, args.length);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.instancify.scriptify.core.script.function.impl;
package com.instancify.scriptify.core.script.function.impl.crypto;

import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.math.BigInteger;
Expand All @@ -20,7 +21,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) throws ScriptFunctionException {
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length != 1) {
throw new ScriptFunctionArgsCountException(1, args.length);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.instancify.scriptify.core.script.function.impl.file;

import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.io.File;
import java.util.List;

/**
* Represents a function to delete a file in the normal or recursive way
*/
public class ScriptFunctionDeleteFile implements ScriptFunction {

@Override
public String getName() {
return "deleteFile";
}

@Override
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length > 2 || args.length < 1) {
throw new ScriptFunctionArgsCountException(1, args.length);
}
if (!(args[0] instanceof String filePath)) {
throw new ScriptFunctionArgTypeException(String.class, args[0].getClass());
}

if (args.length == 1) {
try {
return new File(filePath).delete();
} catch (Exception e) {
return null;
}
}

if (!(args[1] instanceof Boolean recursive)) {
throw new ScriptFunctionArgTypeException(Boolean.class, args[1].getClass());
}

try {
File file = new File(filePath);
if (recursive) {
deleteDirectoryRecursively(file);
return null;
} else {
return file.delete();
}
} catch (Exception e) {
return null;
}
}

private void deleteDirectoryRecursively(File file) throws ScriptFunctionException {
if (file.isDirectory()) {
File[] entries = file.listFiles();
if (entries != null) {
for (File entry : entries) {
deleteDirectoryRecursively(entry);
}
}
}
if (!file.delete()) {
throw new ScriptFunctionException("Failed to delete " + file);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.instancify.scriptify.core.script.function.impl;
package com.instancify.scriptify.core.script.function.impl.file;

import com.instancify.scriptify.api.exception.ScriptFunctionArgTypeException;
import com.instancify.scriptify.api.exception.ScriptFunctionArgsCountException;
import com.instancify.scriptify.api.exception.ScriptFunctionException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.function.ScriptFunction;

import java.io.File;
Expand All @@ -22,7 +23,7 @@ public String getName() {
}

@Override
public Object invoke(Object[] args) throws ScriptFunctionException {
public Object invoke(Script script, Object[] args) throws ScriptFunctionException {
if (args.length != 2) {
throw new ScriptFunctionArgsCountException(2, args.length);
}
Expand Down
Loading
Loading