Additional improvements to the debian build + a setup command built into ncc

This commit is contained in:
Netkas 2023-10-06 05:18:24 -04:00
parent 5b57f12365
commit b102089d80
No known key found for this signature in database
GPG key ID: 5DAF58535614062B
6 changed files with 156 additions and 4 deletions

View file

@ -90,8 +90,6 @@ debian_prepare: autoload
mkdir -p $(DEBIAN_BUILD_PATH)/DEBIAN mkdir -p $(DEBIAN_BUILD_PATH)/DEBIAN
mkdir -p $(DEBIAN_BUILD_PATH)/usr/share/ncc mkdir -p $(DEBIAN_BUILD_PATH)/usr/share/ncc
cp -rf $(SRC_PATH)/ncc/* $(DEBIAN_BUILD_PATH)/usr/share/ncc cp -rf $(SRC_PATH)/ncc/* $(DEBIAN_BUILD_PATH)/usr/share/ncc
cp -rf $(INSTALLER_SRC_PATH)/ncc.sh $(DEBIAN_BUILD_PATH)/usr/share/ncc/ncc.sh
chmod +x $(DEBIAN_BUILD_PATH)/usr/share/ncc/ncc.sh
cp -rf $(CONFIG_PATH)/ncc.yaml $(DEBIAN_BUILD_PATH)/usr/share/ncc/default_config.yaml cp -rf $(CONFIG_PATH)/ncc.yaml $(DEBIAN_BUILD_PATH)/usr/share/ncc/default_config.yaml
cp -rf $(CONFIG_PATH)/ncc.yaml $(DEBIAN_BUILD_PATH)/usr/share/ncc/CLI/template_config.yaml cp -rf $(CONFIG_PATH)/ncc.yaml $(DEBIAN_BUILD_PATH)/usr/share/ncc/CLI/template_config.yaml
cp -rf $(CONFIG_PATH)/default_repositories.json $(DEBIAN_BUILD_PATH)/usr/share/ncc/default_repositories.json cp -rf $(CONFIG_PATH)/default_repositories.json $(DEBIAN_BUILD_PATH)/usr/share/ncc/default_repositories.json
@ -106,6 +104,8 @@ debian_prepare: autoload
cp -rf $(DEBIAN_SRC_PATH)/control $(DEBIAN_BUILD_PATH)/DEBIAN/control cp -rf $(DEBIAN_SRC_PATH)/control $(DEBIAN_BUILD_PATH)/DEBIAN/control
cp -rf $(DEBIAN_SRC_PATH)/postinst $(DEBIAN_BUILD_PATH)/DEBIAN/postinst cp -rf $(DEBIAN_SRC_PATH)/postinst $(DEBIAN_BUILD_PATH)/DEBIAN/postinst
chmod +x $(DEBIAN_BUILD_PATH)/DEBIAN/postinst chmod +x $(DEBIAN_BUILD_PATH)/DEBIAN/postinst
cp -rf $(DEBIAN_SRC_PATH)/postrm $(DEBIAN_BUILD_PATH)/DEBIAN/postrm
chmod +x $(DEBIAN_BUILD_PATH)/DEBIAN/postrm
cp -rf $(DEBIAN_SRC_PATH)/copyright $(DEBIAN_BUILD_PATH)/DEBIAN/copyright cp -rf $(DEBIAN_SRC_PATH)/copyright $(DEBIAN_BUILD_PATH)/DEBIAN/copyright

View file

@ -11,7 +11,7 @@ Vcs-Git: https://git.n64.cc/nosial/ncc.git
Vcs-Browser: https://git.n64.cc/nosial/ncc Vcs-Browser: https://git.n64.cc/nosial/ncc
Name: Nosial Code Compiler Name: Nosial Code Compiler
Architecture: all Architecture: all
Depends: php (>= 8.0), php-mbstring, php-common, php-ctype, php-curl, zlib1g, php-zip Depends: shared-mime-info, php (>= 8.0), php-mbstring, php-common, php-ctype, php-curl, zlib1g, php-zip
Description: Nosial Code Compiler is a multi-purpose compiler, package manager, and toolkit written in PHP. Description: Nosial Code Compiler is a multi-purpose compiler, package manager, and toolkit written in PHP.
NCC (Nosial Code Compiler) is a versatile tool designed for various tasks related to PHP development. NCC (Nosial Code Compiler) is a versatile tool designed for various tasks related to PHP development.
It allows you to compile PHP code, manage packages, and perform various tasks in a PHP-centric environment. It allows you to compile PHP code, manage packages, and perform various tasks in a PHP-centric environment.

View file

@ -1,2 +1,33 @@
#!/bin/bash #!/bin/bash
update-mime-database /usr/share/mime set -e
# Update MIME database
if ! update-mime-database /usr/share/mime; then
echo "Error: Failed to update MIME database"
exit 1
fi
# Ensure PHP is installed
PHP_BIN=$(command -v php)
if [ -z "$PHP_BIN" ]; then
echo "Error: PHP binary not found"
exit 1
fi
# Create symlink for ncc-cli
ENTRY_POINT="/usr/bin/ncc"
if ! cat <<EOF > "$ENTRY_POINT"
#!/bin/bash
$PHP_BIN /usr/share/ncc/ncc --ncc-cli "\$@"
EOF
then
echo "Error: Failed to create entry point script at $ENTRY_POINT"
exit 1
fi
chmod +x "$ENTRY_POINT"
# Initialize ncc
if ! ncc setup --default-repositories=/usr/share/ncc/default_repositories.json; then
echo "Error: Failed to setup ncc"
exit 1
fi

21
src/debian/postrm Normal file
View file

@ -0,0 +1,21 @@
#!/bin/bash
set -e
case "$1" in
remove|purge)
# Remove the entry point script
ENTRY_POINT="/usr/bin/ncc"
if [ -f "$ENTRY_POINT" ]; then
rm -f "$ENTRY_POINT"
echo "Removed $ENTRY_POINT"
else
echo "$ENTRY_POINT not found. Skipping removal."
fi
;;
*)
esac
# End of the script
exit 0

View file

@ -0,0 +1,96 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\CLI\Commands;
use Exception;
use ncc\Objects\CliHelpSection;
use ncc\Utilities\Console;
use ncc\Utilities\Functions;
class SetupCommand
{
/**
* Sets up the NCC environment (usually used during installation)
*
* @param array $args
* @return int
*/
public static function start(array $args): int
{
if(isset($args['help']))
{
return self::help();
}
$default_repositories = [];
if(isset($args['default-repositories']))
{
try
{
$default_repositories = Functions::loadJsonFile($args['default-repositories'], Functions::FORCE_ARRAY);
}
catch(Exception $e)
{
Console::outException(sprintf('Failed to load the default repositories from the given path: %s', $e->getMessage()), $e);
return 1;
}
}
try
{
Functions::initializeFiles($default_repositories);
}
catch(Exception $e)
{
Console::outException(sprintf('Failed to initialize the files: %s', $e->getMessage()), $e);
return 1;
}
return 0;
}
/**
* Displays the help menu for the setup command
*
* @return int
*/
private static function help(): int
{
$options = [
new CliHelpSection(['help'], 'Displays this help menu about the command'),
new CliHelpSection(['--default-repositories=path'], 'Optional. The path to the default repositories file. If not specified, no default repositories will be loaded')
];
$options_padding = Functions::detectParametersPadding($options) + 4;
Console::out('Usage: ncc setup [options]');
Console::out('Options:' . PHP_EOL);
foreach($options as $option)
{
Console::out(' ' . $option->toString($options_padding));
}
return 0;
}
}

View file

@ -29,6 +29,7 @@
use ncc\CLI\Commands\BuildCommand; use ncc\CLI\Commands\BuildCommand;
use ncc\CLI\Commands\ExecCommand; use ncc\CLI\Commands\ExecCommand;
use ncc\CLI\Commands\PackageInspectorCommand; use ncc\CLI\Commands\PackageInspectorCommand;
use ncc\CLI\Commands\SetupCommand;
use ncc\CLI\Management\ConfigMenu; use ncc\CLI\Management\ConfigMenu;
use ncc\CLI\Management\CredentialMenu; use ncc\CLI\Management\CredentialMenu;
use ncc\CLI\Management\PackageManagerMenu; use ncc\CLI\Management\PackageManagerMenu;
@ -148,6 +149,9 @@
Console::out('Unknown command ' . strtolower(self::$args['ncc-cli'])); Console::out('Unknown command ' . strtolower(self::$args['ncc-cli']));
break; break;
case 'setup':
return SetupCommand::start(self::$args);
case 'project': case 'project':
return ProjectMenu::start(self::$args); return ProjectMenu::start(self::$args);