meta: add build system and stub tool source code
This commit is contained in:
14
CMakeLists.txt
Normal file
14
CMakeLists.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
project(ropkg C)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
||||
|
||||
find_package(Bluelib COMPONENTS Core Object Io Term Cmd REQUIRED)
|
||||
|
||||
add_subdirectory(ropkg)
|
||||
add_subdirectory(ropam)
|
||||
add_subdirectory(rovem)
|
||||
181
cmake/FindBluelib.cmake
Normal file
181
cmake/FindBluelib.cmake
Normal file
@@ -0,0 +1,181 @@
|
||||
#[=======================================================================[.rst:
|
||||
FindBluelib
|
||||
------------
|
||||
|
||||
Find the Bluelib library and header directories
|
||||
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` target:
|
||||
|
||||
``Bluelib::Bluelib``
|
||||
The Bluelib library, if found
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``Bluelib_FOUND``
|
||||
true if the Bluelib C headers and libraries were found
|
||||
``Bluelib_INCLUDE_DIR``
|
||||
directories containing the Bluelib C headers.
|
||||
|
||||
``Bluelib_LIBRARY``
|
||||
the C library to link against
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
The user may set the environment variable ``Bluelib_PREFIX`` to the root
|
||||
directory of a Bluelib library installation.
|
||||
#]=======================================================================]
|
||||
|
||||
set (Bluelib_SEARCH_PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/usr/local
|
||||
/usr/local/share
|
||||
/usr
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/csw # Blastwave
|
||||
/opt
|
||||
${Bluelib_PREFIX}
|
||||
$ENV{Bluelib_PREFIX})
|
||||
|
||||
if (Bluelib_STATIC)
|
||||
set(_lib_suffix "-s")
|
||||
endif ()
|
||||
|
||||
set(supported_components Core Object Term Cmd Io Serial)
|
||||
set(components ${Bluelib_FIND_COMPONENTS})
|
||||
string(REPLACE ";" ", " supported_components_string_list "${supported_components}")
|
||||
|
||||
if (NOT components)
|
||||
set(components ${supported_components})
|
||||
endif ()
|
||||
|
||||
set(required_vars)
|
||||
|
||||
foreach (component ${components})
|
||||
if (NOT "${component}" IN_LIST supported_components)
|
||||
message(FATAL_ERROR "'${component}' is not a valid Bluelib module.\nSupported modules: ${supported_components_string_list}")
|
||||
endif ()
|
||||
|
||||
string(TOLOWER ${component} header_name)
|
||||
set(lib_name ${header_name}${_lib_suffix})
|
||||
|
||||
if (NOT Bluelib_${component}_INCLUDE_DIR)
|
||||
find_path(Bluelib_${component}_INCLUDE_DIR
|
||||
NAMES blue/${header_name}.h ${Bluelib_FIND_ARGS}
|
||||
PATH_SUFFIXES include
|
||||
PATHS ${Bluelib_SEARCH_PATHS})
|
||||
endif ()
|
||||
|
||||
if (NOT Bluelib_${component}_LIBRARY)
|
||||
find_library(Bluelib_${component}_LIBRARY
|
||||
NAMES blue-${lib_name} ${Bluelib_FIND_ARGS}
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${Bluelib_SEARCH_PATHS})
|
||||
else ()
|
||||
# on Windows, ensure paths are in canonical format (forward slahes):
|
||||
file(TO_CMAKE_PATH "${Bluelib_${component}_LIBRARY}" Bluelib_${component}_LIBRARY)
|
||||
endif()
|
||||
|
||||
list(APPEND required_vars Bluelib_${component}_INCLUDE_DIR Bluelib_${component}_LIBRARY)
|
||||
endforeach (component)
|
||||
|
||||
unset(Bluelib_FIND_ARGS)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args(Bluelib
|
||||
REQUIRED_VARS ${required_vars})
|
||||
|
||||
if (Bluelib_FOUND)
|
||||
set(created_targets)
|
||||
foreach (component ${components})
|
||||
string(TOLOWER ${component} header_name)
|
||||
set(lib_name ${header_name}${_lib_suffix})
|
||||
|
||||
if(NOT TARGET Bluelib::${component})
|
||||
add_library(Bluelib::${component} UNKNOWN IMPORTED)
|
||||
set_target_properties(Bluelib::${component} PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${Bluelib_${component}_INCLUDE_DIR}")
|
||||
target_compile_definitions(Bluelib::${component} INTERFACE _CRT_SECURE_NO_WARNINGS=1)
|
||||
|
||||
if (Bluelib_STATIC)
|
||||
target_compile_definitions(Bluelib::${component} INTERFACE BLUELIB_STATIC=1)
|
||||
endif ()
|
||||
|
||||
set_target_properties(Bluelib::${component} PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||
IMPORTED_LOCATION "${Bluelib_${component}_LIBRARY}")
|
||||
set(created_targets ${created_targets} ${component})
|
||||
endif ()
|
||||
endforeach (component)
|
||||
|
||||
foreach (component ${created_targets})
|
||||
if ("${component}" STREQUAL "Object")
|
||||
if (NOT TARGET Bluelib::Core)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Object' depends on 'Core', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
target_link_libraries(Bluelib::Object INTERFACE Bluelib::Core)
|
||||
endif ()
|
||||
|
||||
if ("${component}" STREQUAL "Term")
|
||||
if (NOT TARGET Bluelib::Core)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Term' depends on 'Core', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET Bluelib::Object)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Term' depends on 'Object', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
target_link_libraries(Bluelib::Term INTERFACE Bluelib::Core Bluelib::Object)
|
||||
endif ()
|
||||
|
||||
if ("${component}" STREQUAL "Serial")
|
||||
if (NOT TARGET Bluelib::Core)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Serial' depends on 'Core', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET Bluelib::Object)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Serial' depends on 'Object', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
target_link_libraries(Bluelib::Serial INTERFACE Bluelib::Core Bluelib::Object)
|
||||
endif ()
|
||||
|
||||
if ("${component}" STREQUAL "Cmd")
|
||||
if (NOT TARGET Bluelib::Core)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Cmd' depends on 'Core', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET Bluelib::Object)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Cmd' depends on 'Object', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET Bluelib::Term)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Cmd' depends on 'Term', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
target_link_libraries(Bluelib::Cmd INTERFACE Bluelib::Core Bluelib::Object Bluelib::Term)
|
||||
endif ()
|
||||
|
||||
if ("${component}" STREQUAL "Io")
|
||||
if (NOT TARGET Bluelib::Core)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Io' depends on 'Core', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET Bluelib::Object)
|
||||
message(FATAL_ERROR "Bluelib: Module 'Io' depends on 'Object', which was not specified in find_package()")
|
||||
endif ()
|
||||
|
||||
target_link_libraries(Bluelib::Io INTERFACE Bluelib::Core Bluelib::Object)
|
||||
endif ()
|
||||
endforeach (component)
|
||||
endif()
|
||||
4
ropam/CMakeLists.txt
Normal file
4
ropam/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
file(GLOB_RECURSE sources *.c *.h)
|
||||
|
||||
add_executable(ropam ${sources})
|
||||
target_link_libraries(ropam Bluelib::Core Bluelib::Object Bluelib::Io Bluelib::Term Bluelib::Cmd)
|
||||
40
ropam/commands.h
Normal file
40
ropam/commands.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef COMMANDS_H_
|
||||
#define COMMANDS_H_
|
||||
|
||||
enum {
|
||||
CMD_ROOT,
|
||||
CMD_SYNC,
|
||||
CMD_REMOVE,
|
||||
CMD_QUERY,
|
||||
|
||||
CMD_VENDOR,
|
||||
CMD_VENDOR_ADD,
|
||||
CMD_VENDOR_REMOVE,
|
||||
CMD_VENDOR_LIST,
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_SYSROOT = 0x1000,
|
||||
OPT_SYSROOT_PATH,
|
||||
};
|
||||
|
||||
#define SYSROOT_OPTION \
|
||||
B_COMMAND_OPTION(OPT_SYSROOT) \
|
||||
{ \
|
||||
B_OPTION_SHORT_NAME('s'); \
|
||||
B_OPTION_LONG_NAME("sysroot"); \
|
||||
B_OPTION_DESC( \
|
||||
"the system directory to use. if no " \
|
||||
"sysroot is specified, the root directory is used. " \
|
||||
"alternatively, the ROSETTA_SYSROOT environment " \
|
||||
"variable can be used to specify the system root " \
|
||||
"directory"); \
|
||||
\
|
||||
B_OPTION_ARG(OPT_SYSROOT_PATH) \
|
||||
{ \
|
||||
B_ARG_NAME("path"); \
|
||||
B_ARG_NR_VALUES(1); \
|
||||
} \
|
||||
}
|
||||
|
||||
#endif
|
||||
32
ropam/main.c
Normal file
32
ropam/main.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
B_COMMAND(CMD_ROOT, B_COMMAND_INVALID_ID)
|
||||
{
|
||||
B_COMMAND_NAME("ropam");
|
||||
B_COMMAND_DESC(
|
||||
"Rosetta package manager. This tool is used to (un)install, "
|
||||
"upgrade, and otherwise manage packages on a system via a set "
|
||||
"of package vendors.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
SYSROOT_OPTION;
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_COMMAND_PLACEHOLDER();
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_SYSROOT);
|
||||
B_COMMAND_USAGE_COMMAND_PLACEHOLDER();
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
return b_command_dispatch(CMD_ROOT, argc, argv);
|
||||
}
|
||||
22
ropam/query.c
Normal file
22
ropam/query.c
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
static int query(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_QUERY, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("query");
|
||||
B_COMMAND_SHORT_NAME('Q');
|
||||
B_COMMAND_DESC("query information about installed packages.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(query);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
42
ropam/remove.c
Normal file
42
ropam/remove.c
Normal file
@@ -0,0 +1,42 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
ARG_PACKAGE,
|
||||
};
|
||||
|
||||
static int remove(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_REMOVE, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("remove");
|
||||
B_COMMAND_SHORT_NAME('R');
|
||||
B_COMMAND_DESC(
|
||||
"remove a set of Rosetta packages by name. any "
|
||||
"automatically installed dependencies will not be removed "
|
||||
"unless they are explicitly named in the list of packages to "
|
||||
"remove.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(remove);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_ARG(ARG_PACKAGE)
|
||||
{
|
||||
B_ARG_NAME("package-name");
|
||||
B_ARG_DESC("the names of the packages to remove.");
|
||||
B_ARG_NR_VALUES(B_ARG_1_OR_MORE_VALUES);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_ARG(ARG_PACKAGE);
|
||||
}
|
||||
}
|
||||
72
ropam/sync.c
Normal file
72
ropam/sync.c
Normal file
@@ -0,0 +1,72 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
OPT_SYNC_DB,
|
||||
OPT_SYNC_ALL,
|
||||
|
||||
ARG_PACKAGE,
|
||||
};
|
||||
|
||||
static int sync(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_SYNC, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("sync");
|
||||
B_COMMAND_SHORT_NAME('S');
|
||||
B_COMMAND_DESC(
|
||||
"synchronise your machine with the your registered package "
|
||||
"vendor(s). this command can be used to synchronise packages, "
|
||||
"installing them or updating them to the latest available "
|
||||
"version. all installed packages can be synchronised to update "
|
||||
"the whole system, or the package database itself can be "
|
||||
"synchronised to gain access to new and updated packages.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(sync);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_OPTION(OPT_SYNC_DB)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('y');
|
||||
B_OPTION_LONG_NAME("database");
|
||||
B_OPTION_DESC(
|
||||
"synchronise the package database before synchronising "
|
||||
"any packages. this option can be specified without "
|
||||
"any package names to synchronise the package database "
|
||||
"on its own.");
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_SYNC_ALL)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('u');
|
||||
B_OPTION_LONG_NAME("synchronise-all");
|
||||
B_OPTION_DESC(
|
||||
"synchronise all packages currently installed on the "
|
||||
"system, updating them to the latest available "
|
||||
"version.");
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_PACKAGE)
|
||||
{
|
||||
B_ARG_NAME("package-name");
|
||||
B_ARG_DESC(
|
||||
"the names of the packages to synchronise. if a named "
|
||||
"package is not installed, the latest version will be "
|
||||
"installed. otherwise, the already-installed package "
|
||||
"will be updated to the latest version.");
|
||||
B_ARG_NR_VALUES(B_ARG_1_OR_MORE_VALUES);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_ARG(ARG_PACKAGE);
|
||||
}
|
||||
}
|
||||
22
ropam/vendor/add.c
vendored
Normal file
22
ropam/vendor/add.c
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "../commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
static int vendor_add(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_VENDOR_ADD, CMD_VENDOR)
|
||||
{
|
||||
B_COMMAND_NAME("add");
|
||||
B_COMMAND_SHORT_NAME('A');
|
||||
B_COMMAND_DESC("add a new package vendor to the system.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(vendor_add);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
22
ropam/vendor/list.c
vendored
Normal file
22
ropam/vendor/list.c
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "../commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
static int vendor_list(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_VENDOR_LIST, CMD_VENDOR)
|
||||
{
|
||||
B_COMMAND_NAME("list");
|
||||
B_COMMAND_SHORT_NAME('L');
|
||||
B_COMMAND_DESC("list all registered package vendors.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(vendor_list);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
22
ropam/vendor/remove.c
vendored
Normal file
22
ropam/vendor/remove.c
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "../commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
static int vendor_remove(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_VENDOR_REMOVE, CMD_VENDOR)
|
||||
{
|
||||
B_COMMAND_NAME("remove");
|
||||
B_COMMAND_SHORT_NAME('R');
|
||||
B_COMMAND_DESC("remove a package vendor from the system.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(vendor_remove);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
13
ropam/vendor/vendor.c
vendored
Normal file
13
ropam/vendor/vendor.c
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "../commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
B_COMMAND(CMD_VENDOR, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("vendor");
|
||||
B_COMMAND_SHORT_NAME('V');
|
||||
B_COMMAND_DESC("package vendor management commands.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
4
ropkg/CMakeLists.txt
Normal file
4
ropkg/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
file(GLOB sources *.c *.h)
|
||||
|
||||
add_executable(ropkg ${sources})
|
||||
target_link_libraries(ropkg Bluelib::Core Bluelib::Object Bluelib::Io Bluelib::Term Bluelib::Cmd)
|
||||
55
ropkg/build.c
Normal file
55
ropkg/build.c
Normal file
@@ -0,0 +1,55 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
OPT_OUTPATH,
|
||||
OPT_OUTPATH_PATH,
|
||||
|
||||
ARG_RECIPE,
|
||||
};
|
||||
|
||||
static int build(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_BUILD, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("build");
|
||||
B_COMMAND_SHORT_NAME('B');
|
||||
B_COMMAND_DESC("build a Rosetta package from a recipe");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(build);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_OPTION(OPT_OUTPATH)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('o');
|
||||
B_OPTION_LONG_NAME("out");
|
||||
B_OPTION_DESC("the path to save the new package file to");
|
||||
|
||||
B_OPTION_ARG(OPT_OUTPATH_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_RECIPE)
|
||||
{
|
||||
B_ARG_NAME("recipe");
|
||||
B_ARG_DESC("the recipe to build the package from.");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
B_COMMAND_USAGE_ARG(ARG_RECIPE);
|
||||
}
|
||||
}
|
||||
13
ropkg/commands.h
Normal file
13
ropkg/commands.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef COMMANDS_H_
|
||||
#define COMMANDS_H_
|
||||
|
||||
enum {
|
||||
CMD_ROOT,
|
||||
CMD_CREATE,
|
||||
CMD_BUILD,
|
||||
CMD_QUERY,
|
||||
CMD_EXTRACT,
|
||||
CMD_INSTALL,
|
||||
};
|
||||
|
||||
#endif
|
||||
226
ropkg/create.c
Normal file
226
ropkg/create.c
Normal file
@@ -0,0 +1,226 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
OPT_OUTPATH,
|
||||
OPT_OUTPATH_PATH,
|
||||
|
||||
OPT_MANIFEST,
|
||||
OPT_MANIFEST_PATH,
|
||||
|
||||
OPT_PARAMETER,
|
||||
OPT_PARAMETER_NAME,
|
||||
OPT_PARAMETER_VALUE,
|
||||
|
||||
ARG_SOURCE_DIR,
|
||||
};
|
||||
|
||||
static int create(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_CREATE, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("create");
|
||||
B_COMMAND_SHORT_NAME('C');
|
||||
B_COMMAND_DESC("create a Rosetta package from a directory");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(create);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_OPTION(OPT_OUTPATH)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('o');
|
||||
B_OPTION_LONG_NAME("out");
|
||||
B_OPTION_DESC("the path to save the new package file to");
|
||||
|
||||
B_OPTION_ARG(OPT_OUTPATH_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_MANIFEST)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('m');
|
||||
B_OPTION_LONG_NAME("manifest");
|
||||
B_OPTION_DESC(
|
||||
"the path to a manifest file describing the "
|
||||
"package to be created. if no manifest is specified, "
|
||||
"the package binary directory will be searched for a "
|
||||
"manifest");
|
||||
|
||||
B_OPTION_ARG(OPT_MANIFEST_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_PARAMETER)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('p');
|
||||
B_OPTION_LONG_NAME("parameter");
|
||||
B_OPTION_DESC(
|
||||
"a parameter to use when creating the new file. "
|
||||
"if a parameter EXAMPLE is defined, any variable "
|
||||
"reference "
|
||||
"of the form ${EXAMPLE} in the package manifest will "
|
||||
"be "
|
||||
"replaced with the specified parameter value.");
|
||||
|
||||
B_OPTION_ARG(OPT_PARAMETER_NAME)
|
||||
{
|
||||
B_ARG_NAME("name");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_OPTION_ARG(OPT_PARAMETER_VALUE)
|
||||
{
|
||||
B_ARG_NAME("value");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_SOURCE_DIR)
|
||||
{
|
||||
B_ARG_NAME("source-dir");
|
||||
B_ARG_DESC(
|
||||
"the directory to package. the specified directory "
|
||||
"will become the root of the newly created package.");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
B_COMMAND_USAGE_ARG(ARG_SOURCE_DIR);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_MANIFEST);
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
B_COMMAND_USAGE_ARG(ARG_SOURCE_DIR);
|
||||
}
|
||||
}
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
OPT_OUTPATH,
|
||||
OPT_OUTPATH_PATH,
|
||||
|
||||
OPT_MANIFEST,
|
||||
OPT_MANIFEST_PATH,
|
||||
|
||||
OPT_PARAMETER,
|
||||
OPT_PARAMETER_NAME,
|
||||
OPT_PARAMETER_VALUE,
|
||||
|
||||
ARG_SOURCE_DIR,
|
||||
};
|
||||
|
||||
static int create(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_CREATE, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("create");
|
||||
B_COMMAND_SHORT_NAME('C');
|
||||
B_COMMAND_DESC("create a Rosetta package from a directory");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(create);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_OPTION(OPT_OUTPATH)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('o');
|
||||
B_OPTION_LONG_NAME("out");
|
||||
B_OPTION_DESC("the path to save the new package file to");
|
||||
|
||||
B_OPTION_ARG(OPT_OUTPATH_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_MANIFEST)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('m');
|
||||
B_OPTION_LONG_NAME("manifest");
|
||||
B_OPTION_DESC(
|
||||
"the path to a manifest file describing the "
|
||||
"package to be created. if no manifest is specified, "
|
||||
"the package binary directory will be searched for a "
|
||||
"manifest");
|
||||
|
||||
B_OPTION_ARG(OPT_MANIFEST_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_PARAMETER)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('p');
|
||||
B_OPTION_LONG_NAME("parameter");
|
||||
B_OPTION_DESC(
|
||||
"a parameter to use when creating the new file. "
|
||||
"if a parameter EXAMPLE is defined, any variable "
|
||||
"reference "
|
||||
"of the form ${EXAMPLE} in the package manifest will "
|
||||
"be "
|
||||
"replaced with the specified parameter value.");
|
||||
|
||||
B_OPTION_ARG(OPT_PARAMETER_NAME)
|
||||
{
|
||||
B_ARG_NAME("name");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_OPTION_ARG(OPT_PARAMETER_VALUE)
|
||||
{
|
||||
B_ARG_NAME("value");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_SOURCE_DIR)
|
||||
{
|
||||
B_ARG_NAME("source-dir");
|
||||
B_ARG_DESC(
|
||||
"the directory to package. the specified directory "
|
||||
"will become the root of the newly created package.");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
B_COMMAND_USAGE_ARG(ARG_SOURCE_DIR);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_MANIFEST);
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
B_COMMAND_USAGE_ARG(ARG_SOURCE_DIR);
|
||||
}
|
||||
}
|
||||
55
ropkg/extract.c
Normal file
55
ropkg/extract.c
Normal file
@@ -0,0 +1,55 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
OPT_OUTPATH,
|
||||
OPT_OUTPATH_PATH,
|
||||
|
||||
ARG_PACKAGE,
|
||||
};
|
||||
|
||||
static int extract(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_EXTRACT, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("extract");
|
||||
B_COMMAND_SHORT_NAME('X');
|
||||
B_COMMAND_DESC("extract the contents of a Rosetta package");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(extract);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_OPTION(OPT_OUTPATH)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('o');
|
||||
B_OPTION_LONG_NAME("out");
|
||||
B_OPTION_DESC("the path to extract the package contents to");
|
||||
|
||||
B_OPTION_ARG(OPT_OUTPATH_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_PACKAGE)
|
||||
{
|
||||
B_ARG_NAME("package");
|
||||
B_ARG_DESC("the package to extract.");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
B_COMMAND_USAGE_ARG(ARG_PACKAGE);
|
||||
}
|
||||
}
|
||||
59
ropkg/install.c
Normal file
59
ropkg/install.c
Normal file
@@ -0,0 +1,59 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
OPT_SYSROOT,
|
||||
OPT_SYSROOT_PATH,
|
||||
|
||||
ARG_PACKAGE,
|
||||
};
|
||||
|
||||
static int install(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_INSTALL, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("install");
|
||||
B_COMMAND_SHORT_NAME('I');
|
||||
B_COMMAND_DESC("install a Rosetta package.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(install);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_OPTION(OPT_SYSROOT)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('s');
|
||||
B_OPTION_LONG_NAME("sysroot");
|
||||
B_OPTION_DESC(
|
||||
"the system directory to install the package to. if no "
|
||||
"sysroot is specified, the root directory is used. "
|
||||
"alternatively, the ROSETTA_SYSROOT environment "
|
||||
"variable can be used to specify the system root "
|
||||
"directory");
|
||||
|
||||
B_OPTION_ARG(OPT_SYSROOT_PATH)
|
||||
{
|
||||
B_ARG_NAME("path");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_PACKAGE)
|
||||
{
|
||||
B_ARG_NAME("package-path");
|
||||
B_ARG_DESC("the path to the package to install.");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_ARG(ARG_PACKAGE);
|
||||
}
|
||||
}
|
||||
19
ropkg/main.c
Normal file
19
ropkg/main.c
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
B_COMMAND(CMD_ROOT, B_COMMAND_INVALID_ID)
|
||||
{
|
||||
B_COMMAND_NAME("ropkg");
|
||||
B_COMMAND_DESC(
|
||||
"Rosetta package manipulation tool. This tool is used to "
|
||||
"create, build, and otherwise manipulate individual Rosetta "
|
||||
"package files.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
return b_command_dispatch(CMD_ROOT, argc, argv);
|
||||
}
|
||||
38
ropkg/query.c
Normal file
38
ropkg/query.c
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
enum {
|
||||
ARG_PACKAGE,
|
||||
};
|
||||
|
||||
static int query(
|
||||
const b_command *self,
|
||||
const b_arglist *opt,
|
||||
const b_array *args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_QUERY, CMD_ROOT)
|
||||
{
|
||||
B_COMMAND_NAME("query");
|
||||
B_COMMAND_SHORT_NAME('Q');
|
||||
B_COMMAND_DESC("query information about a Rosetta package");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(query);
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_ARG(ARG_PACKAGE)
|
||||
{
|
||||
B_ARG_NAME("package");
|
||||
B_ARG_DESC("the package to query.");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_ARG(ARG_PACKAGE);
|
||||
}
|
||||
}
|
||||
4
rovem/CMakeLists.txt
Normal file
4
rovem/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
file(GLOB sources *.c *.h)
|
||||
|
||||
add_executable(rovem ${sources})
|
||||
target_link_libraries(rovem Bluelib::Core Bluelib::Object Bluelib::Io Bluelib::Term Bluelib::Cmd)
|
||||
0
rovem/add-package.c
Normal file
0
rovem/add-package.c
Normal file
12
rovem/commands.h
Normal file
12
rovem/commands.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef COMMANDS_H_
|
||||
#define COMMANDS_H_
|
||||
|
||||
enum {
|
||||
CMD_ROOT,
|
||||
CMD_CREATE,
|
||||
CMD_QUERY,
|
||||
CMD_ADD_PACKAGE,
|
||||
CMD_REMOVE_PACKAGE,
|
||||
};
|
||||
|
||||
#endif
|
||||
0
rovem/create.c
Normal file
0
rovem/create.c
Normal file
19
rovem/main.c
Normal file
19
rovem/main.c
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
|
||||
B_COMMAND(CMD_ROOT, B_COMMAND_INVALID_ID)
|
||||
{
|
||||
B_COMMAND_NAME("rovem");
|
||||
B_COMMAND_DESC(
|
||||
"Rosetta package vendor management tool. This tool is used to "
|
||||
"create and manage a Rosetta package vendor, from which "
|
||||
"packages can be retrieved and installed by clients.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
return b_command_dispatch(CMD_ROOT, argc, argv);
|
||||
}
|
||||
0
rovem/query.c
Normal file
0
rovem/query.c
Normal file
0
rovem/remove-package.c
Normal file
0
rovem/remove-package.c
Normal file
Reference in New Issue
Block a user