1 /* 2 * Copyright (C) 2016 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17 package com.googlecode.android_scripting.interpreter; 18 19 import android.content.Context; 20 21 import java.io.File; 22 import java.util.List; 23 import java.util.Map; 24 25 /** 26 * Provides interpreter-specific info for execution/installation/removal purposes. 27 * 28 * @author Alexey Reznichenko (alexey.reznichenko@gmail.com) 29 */ 30 public interface InterpreterDescriptor { 31 32 /** 33 * Returns unique name of the interpreter. 34 */ getName()35 public String getName(); 36 37 /** 38 * Returns display name of the interpreter. 39 */ getNiceName()40 public String getNiceName(); 41 42 /** 43 * Returns supported script-file extension. 44 */ getExtension()45 public String getExtension(); 46 47 /** 48 * Returns interpreter version number. 49 */ getVersion()50 public int getVersion(); 51 52 /** 53 * Returns the binary as a File object. Context is the InterpreterProvider's {@link Context} and 54 * is provided to find the interpreter installation directory. 55 */ getBinary(Context context)56 public File getBinary(Context context); 57 58 /** 59 * Returns execution parameters in case when script name is not provided (when interpreter is 60 * started in a shell mode); 61 */ getInteractiveCommand(Context context)62 public String getInteractiveCommand(Context context); 63 64 /** 65 * Returns command line arguments to execute a with a given script (format string with one 66 * argument). 67 */ getScriptCommand(Context context)68 public String getScriptCommand(Context context); 69 70 /** 71 * Returns an array of command line arguments required to execute the interpreter (it's essential 72 * that the order in the array is consistent with order of arguments in the command line). 73 */ getArguments(Context context)74 public List<String> getArguments(Context context); 75 76 /** 77 * Should return a map of environment variables names and their values (or null if interpreter 78 * does not require any environment variables). 79 */ getEnvironmentVariables(Context context)80 public Map<String, String> getEnvironmentVariables(Context context); 81 82 /** 83 * Returns true if interpreter has an archive. 84 */ hasInterpreterArchive()85 public boolean hasInterpreterArchive(); 86 87 /** 88 * Returns true if interpreter has an extras archive. 89 */ hasExtrasArchive()90 public boolean hasExtrasArchive(); 91 92 /** 93 * Returns true if interpreter comes with a scripts archive. 94 */ hasScriptsArchive()95 public boolean hasScriptsArchive(); 96 97 /** 98 * Returns file name of the interpreter archive. 99 */ getInterpreterArchiveName()100 public String getInterpreterArchiveName(); 101 102 /** 103 * Returns file name of the extras archive. 104 */ getExtrasArchiveName()105 public String getExtrasArchiveName(); 106 107 /** 108 * Returns file name of the scripts archive. 109 */ getScriptsArchiveName()110 public String getScriptsArchiveName(); 111 112 /** 113 * Returns URL location of the interpreter archive. 114 */ getInterpreterArchiveUrl()115 public String getInterpreterArchiveUrl(); 116 117 /** 118 * Returns URL location of the scripts archive. 119 */ getScriptsArchiveUrl()120 public String getScriptsArchiveUrl(); 121 122 /** 123 * Returns URL location of the extras archive. 124 */ getExtrasArchiveUrl()125 public String getExtrasArchiveUrl(); 126 127 /** 128 * Returns true if interpreter can be executed in interactive mode. 129 */ hasInteractiveMode()130 public boolean hasInteractiveMode(); 131 } 132