Home | History | Annotate | Download | only in interpreter
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of 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,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under 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  */
     29 public interface InterpreterDescriptor {
     30 
     31   /**
     32    * Returns unique name of the interpreter.
     33    */
     34   public String getName();
     35 
     36   /**
     37    * Returns display name of the interpreter.
     38    */
     39   public String getNiceName();
     40 
     41   /**
     42    * Returns supported script-file extension.
     43    */
     44   public String getExtension();
     45 
     46   /**
     47    * Returns interpreter version number.
     48    */
     49   public int getVersion();
     50 
     51   /**
     52    * Returns the binary as a File object. Context is the InterpreterProvider's {@link Context} and
     53    * is provided to find the interpreter installation directory.
     54    */
     55   public File getBinary(Context context);
     56 
     57   /**
     58    * Returns execution parameters in case when script name is not provided (when interpreter is
     59    * started in a shell mode);
     60    */
     61   public String getInteractiveCommand(Context context);
     62 
     63   /**
     64    * Returns command line arguments to execute a with a given script (format string with one
     65    * argument).
     66    */
     67   public String getScriptCommand(Context context);
     68 
     69   /**
     70    * Returns an array of command line arguments required to execute the interpreter (it's essential
     71    * that the order in the array is consistent with order of arguments in the command line).
     72    */
     73   public List<String> getArguments(Context context);
     74 
     75   /**
     76    * Should return a map of environment variables names and their values (or null if interpreter
     77    * does not require any environment variables).
     78    */
     79   public Map<String, String> getEnvironmentVariables(Context context);
     80 
     81   /**
     82    * Returns true if interpreter has an archive.
     83    */
     84   public boolean hasInterpreterArchive();
     85 
     86   /**
     87    * Returns true if interpreter has an extras archive.
     88    */
     89   public boolean hasExtrasArchive();
     90 
     91   /**
     92    * Returns true if interpreter comes with a scripts archive.
     93    */
     94   public boolean hasScriptsArchive();
     95 
     96   /**
     97    * Returns file name of the interpreter archive.
     98    */
     99   public String getInterpreterArchiveName();
    100 
    101   /**
    102    * Returns file name of the extras archive.
    103    */
    104   public String getExtrasArchiveName();
    105 
    106   /**
    107    * Returns file name of the scripts archive.
    108    */
    109   public String getScriptsArchiveName();
    110 
    111   /**
    112    * Returns URL location of the interpreter archive.
    113    */
    114   public String getInterpreterArchiveUrl();
    115 
    116   /**
    117    * Returns URL location of the scripts archive.
    118    */
    119   public String getScriptsArchiveUrl();
    120 
    121   /**
    122    * Returns URL location of the extras archive.
    123    */
    124   public String getExtrasArchiveUrl();
    125 
    126   /**
    127    * Returns true if interpreter can be executed in interactive mode.
    128    */
    129   public boolean hasInteractiveMode();
    130 }
    131