User Rating: / 1
PoorBest 
Share
I'm going to be updating the syntax of each of these functions/commands in the edify scripting language used by Android to run updater-scripts. At this point, all I have done is extracted the edify commands and listed which file they are in, next I will be documenting the syntax of each command, and after that, we'll get some examples for reference up for everyone. Also, it appears that the version of the update-binary that you use affects the syntax that you are using.   The syntax detailed here is for the latest update-binary per the source on kernel.org

This is just a draft scratch-pad for my work in progress.

Virtually all of the commands in Edify are functions, and return data to the script when the function call is completed.  You can use the returned value of the function to test for success or failure.

For example:

ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Mounted!"), ui_print("Mount Failed!");

This command would attempt to mound the MTD partition named "system" to "/system".

If the mount succeeds, the script will display "Mounted!", otherwise it will display "Mount Failed!"

edify commands:
********************

Functions from: platform/bootable/recovery.git/updater/install.c
Function Name: mount
Function Syntax: mount(fs_type, partition_type, location, mount_point)
Parameter Details:

fs_type = "yaffs2" | "ext4"

partition_type="MTD" | "EMMC"

location = partition | device

mount_point = target folder to mount FS.

Description:

Action: Mounts a filesystem in the defined mount point.

Returns: The mount point. if successful, null if failed.
Example:
Function Name: is_mounted
Function Syntax: is_mounted(mount_point)
Parameter Details: mount_point = string, mount point to check if is mounted.
Description:

Action: Checks if a filesystem is mounted.

Returns: The mount point if it is mounted, otherwise, returns null.

Example:
Function Name: unmount
Function Syntax: unmount(mount_point)
Parameter Details: mount_point = string, mount point to unmount.
Description:

Action: Unmounts the filesystem.

Returns: The mount point that was dismounted if successful, otherwise it returns null.

Example:
Function Name: format
Function Syntax: format(fs_type, partition_type, location)
Parameter Details: fs_type = string,"yaffs2" | "ext4"

partition_type= string, "MTD" | "EMMC"

location = string, partition | device

Description: Formats a filesystem as specified.
Example:
Function Name: delete
Function Syntax: delete(file1, file2, ..., fileN)
Parameter Details: string, file to delete
Description: Delete's a file.  at least 1 file must be specified.  Multiple files can be specified as multiple arguments.
Example:
Function Name: delete_recursive
Function Syntax: delete_recursive(dir1, dir2,...,dirN)
Parameter Details: string, directory to recursively delete.
Description: Delete's a folder and all contents under that folder.  At least 1 directory must be specified.  Multiple directories can be specified as additional arguments.
Example:
Function Name: show_progress
Function Syntax: show_progress(frac, sec)
Parameter Details:

frac = fraction of progress completed

sec = total seconds?

Description: need to test.
Example:
Function Name: set_progress
Function Syntax: set_prograss(frac)
Parameter Details: frac=fraction of progress
Description: I assume it updates progress bar with new progress, need to test.
Example:
Function Name: package_extract_dir
Function Syntax: package_extract_dir(package_path, destination_path)
Parameter Details:

package_path = string, directory in package to extract

destination_path = string, target point to extract files to

Description: Extract the all of the files in a directory in the package to the target specified.
Example:
Function Name: package_extract_file
Function Syntax:

package_extract_file(package_path)

or

package_extract_file(package_path, destination_path)

Parameter Details:

package_path = string, file in the package you want to extract

destination_path, target folder to extract the file to.

Description:

If a single argument is specified returns the contents of the file.

Extract a single file from your update package to the target specified

Example:
Function Name: file_getprop
Function Syntax: file_getprop(file, key)
Parameter Details:

file = string, filename to check

key = string, key in file to return the value of

Description:

Get a property out of any file as log as the file format is "key"="value" where key is the name of the property stored in the file, and "value" i

# = Comment lines

Blank lines are OK

key=value

Example:
Function Name: symlink
Function Syntax: symlink(target, src1, src2, ..., srcN)
Parameter Details:

target = string, the target of the symbolic link

srcX = the symbolic link to create that points to the target

Description:

Unlinks any existing symbolic links before creating the new symbolic links.

Example:
Function Name: set_perm
Function Syntax: set_perm(uid, gid, mode, file1, file2, ..., fileN)
Parameter Details:

uid = user id

gid = group id

mode = permission mode

fileX = file to set permission on

Description: Set permissions of a file or set of files specified.  At least 1 file must be specified (the first four parameters are required)
Example:
Function Name: set_perm_recursive
Function Syntax: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ...dirN)
Parameter Details:

uid = user id

gid = group id

dirmode = permission to set to directories contained within the specified directory

filemode = permission to set to files contained within the specified directory

dirX = directory to set permission on

Description: Set permissions of a directory or set of directories and all files and folders within them.  At  least 1 directory must be specified (The first 5 parameters are required.)
Example:
Function Name: getprop
Function Syntax: getprop(key)
Parameter Details: key = string, the property you want the system to return
Description: This function returns the value of the property specified.  This is used to query platform information from the build.props file.
Example:
Function Name: write_raw_image
Function Syntax: write_raw_image(file, partition)
Parameter Details:

file - string, the source .img file to be read from

partition - string, the destination partition to write the .img file to

Description: This function writes an img file to a partition.
Example:
Function Name: apply_patch
Function Syntax: apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ..., sha1_x, patch1_x)
Parameter Details:

srcfile - string, source file to be patched (file to read in)

tgtfile - string, destination file to write the patched file to

tgtsha1 - string, sha1 hash of the target file as it should hash out after the patches apply properly

sha1_x - string, sha1 hash of the patch data that's to be written to the target file

patch1_x- string, actual patch to apply to the target file

Description: This function is used to apply patches to a file.  I need to research the format of the patch string, and also, if my assumptions on what the parameters mean are correct. need to check source code for the "applypatch" function that is called from here/
Example:
Function Name: apply_patch_check
Function Syntax: apply_patch_check(file, sha1_1, ..., sha1_x)
Parameter Details:

file - string, file to check

sha1_x - hash to check for?

Description: Either checks if a file has been properly patched, or checks if a file can be patched.  Need to check the source code of the "applypatch_check" function that is called from here.
Example:
Function Name: apply_patch_space
Function Syntax: apply_patch_space(bytes)
Parameter Details: bytes = number of bytes to check for
Description: Checks the cache to verify that there is enough space to write the patched files to it and returns something.  Need to test this function to verifyre
Example:
Function Name: read_file
Function Syntax: read_file(filename)
Parameter Details: filename - string, the filename to read the contents of
Description: This function returns the contents of a file.
Example:
Function Name: sha1_check
Function Syntax:

sha1_check(data)

or

sha1_check(data, sha1_hex, ..., sha1_hexN)

Parameter Details:

data - the contents of file to calculate the sha1 hash of - must be in the read_file format

sha1_hexN - A particular sha1_hex string that you want the file data to match

Description: If only data is specified, then the function returns the sha1_hex string of the data.  The optional parameters are used if you want to verify that the file you are checking for is one of a list of hashes.  It reutrns the hash it matches, or returns nothing if it doesn't match any of the mentioned hashses.
Example:
Function Name: ui_print
Function Syntax: ui_print(msg1, ..., msgN)
Parameter Details: msg - String, message to be outputted to the user during the patch process
Description: This function prints/echo's a message to the console while the script is running.  At least 1 parameter needs to be specified, you can specify additional msg parameters and they will be concatenated to the output.
Example:
Function Name: run_program
Function Syntax: run_program(prog, arg1, .., argN)
Parameter Details:

prog - string, program to execute

argN - string, arguments for the program that is being executed

Description: Executes a program with the arguments specified.   Returns a string, I assume it is the buffer of the stdout of the program executed, need to test.
Example:
Functions from: platform/bootable/recovery.git/edify/expr.c
Function Name: ifelse
Function Syntax: ifelse(condition, truecondition, falsecondition)
Parameter Details:

condition - an expression to evaluate

truecondition - Edify script block to execute if true

falsecodnition - Edify script block to execute if false

Description: This is the if-then construct of the Edify scripting language.  The truecondition or falsecondition arguments can be a single edify command or a script block.  Script blocks can be formed by enclosing the parameter with parenthesis, and seperating the commands with semicolons.
Example:

ifelse("true",(ui_print("Line 1");ui_print("Line 2");),ui_print("Won't See This));

since the condition is "true", Edify will evaluate the second parameter (which is underlined).  Notice the open and close parenthesis turns that whole script block into one paremeter.  The third parameter will not be evaluated.

Function Name: abort
Function Syntax: abort()
Parameter Details: no paremeters
Description: Aborts script execution.
Example:
Function Name: assert
Function Syntax: assert(condition)
Parameter Details: condition - boolean
Description: If condition evaluates to false, stops script execution, otherwise continues processing.
Example:
Function Name: concat
Function Syntax:
Parameter Details:
Description:
Example:
Function Name: is_substring
Function Syntax:
Parameter Details:
Description:
Example:
Function Name: stdout
Function Syntax:
Parameter Details:
Description:
Example:
Function Name: sleep
Function Syntax:
Parameter Details:
Description:
Example:
Function Name: less_than_int
Function Syntax:
Parameter Details:
Description:
Example:
Function Name: greater_than_int
Function Syntax:
Parameter Details:
Description:
Example:

 

Last Updated on Thursday, 19 May 2011 21:57.

Add comment


Security code
Refresh