Plugin manager, misc fixes
* Fixed an error when trying to create nonexisting resource type * Updated the init-command to create plugins and scipts directories * Added a basic installer function
This commit is contained in:
78
src/install
Normal file
78
src/install
Normal file
@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
function askConfirm(string $prompt, bool $default) {
|
||||
|
||||
$pstr = sprintf("%s [%s]? ", $prompt, $default?"Y/n":"y/N");
|
||||
$read = readline($pstr);
|
||||
switch (strtolower($read)) {
|
||||
case 'yes':
|
||||
case 'y':
|
||||
return true;
|
||||
case 'no':
|
||||
case 'n':
|
||||
return false;
|
||||
default:
|
||||
return $default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function askString(string $prompt, ?string $default=null) {
|
||||
|
||||
$pstr = sprintf("%s [%s]? ", $prompt, $default);
|
||||
$read = readline($pstr);
|
||||
if (empty($read)) return $default;
|
||||
return $read;
|
||||
|
||||
}
|
||||
|
||||
$destination = askString("Installation directory", getenv("HOME")."/opt/spark");
|
||||
$binaries = askString("Path for executables", getenv("HOME")."/bin");
|
||||
if (!is_dir($destination)) {
|
||||
$doMakeDir = askConfirm("Create directory", true);
|
||||
} else {
|
||||
$doMakeDir = false;
|
||||
}
|
||||
$doAliases = askConfirm("Install default aliases", true);
|
||||
$doPlugins = askConfirm("Install plugins globally", true);
|
||||
|
||||
if (!askConfirm("Continue with the installation", false)) {
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if ($doMakeDir) {
|
||||
printf("Creating directories...\n");
|
||||
mkdir($destination, 0777, true);
|
||||
mkdir($destination."/plugins", 0777, true);
|
||||
}
|
||||
|
||||
printf("Installing Spark...\n");
|
||||
passthru("cp -R spark.phar ".escapeshellarg($destination."/spark.phar"));
|
||||
@symlink($destination."/spark.phar", $binaries."/spark");
|
||||
|
||||
printf("Installing plugins...\n");
|
||||
passthru("cp -R plugins/* ".escapeshellarg($destination."/plugins/"));
|
||||
|
||||
if ($doPlugins) {
|
||||
$file = sprintf("export SPARK_PLUGINS=\"%s/plugins\"\n", $destination);
|
||||
file_put_contents(getenv("HOME")."/.profile_spark", $file);
|
||||
|
||||
$file = file_get_contents(getenv("HOME")."/.profile");
|
||||
$file .= "\nsource ~/.profile_spark\n";
|
||||
file_put_contents(getenv("HOME")."/.profile.new", $file);
|
||||
rename(getenv("HOME")."/.profile", getenv("HOME")."/.profile.bak");
|
||||
rename(getenv("HOME")."/.profile.new", getenv("HOME")."/.profile");
|
||||
printf("Updated \e[3m.profile\e[0m.\n");
|
||||
}
|
||||
if ($doAliases) {
|
||||
$file = file_get_contents(getenv("HOME")."/.bash_aliases") . "\n";
|
||||
$file .= "alias sparksh=\"spark repl\"\n";
|
||||
$file .= "alias sparker=\"spark run\"\n";
|
||||
$file .= "alias sparkplug=\"spark plugins\"\n";
|
||||
file_put_contents(getenv("HOME")."/.bash_aliases.new", $file);
|
||||
rename(getenv("HOME")."/.bash_aliases", getenv("HOME")."/.bash_aliases.bak");
|
||||
rename(getenv("HOME")."/.bash_aliases.new", getenv("HOME")."/.bash_aliases");
|
||||
printf("Updated \e[3m.bash_aliases\e[0m.\n");
|
||||
}
|
||||
|
||||
printf("Installation complete!\nPlease restart your shell, or \e[3msource ~/.bash_aliases\e[0m and try typing \e[3mspark\e[0m.\n");
|
Reference in New Issue
Block a user