exit 1
end
- var ini = new ConfigTree(ini_path)
+ var ini = new IniFile.from_file(ini_path)
var import_line = ini["package.import"]
if import_line == null then
print_error "The local `package.ini` declares no external dependencies."
do
if package_id.is_package_name then
# Ask a centralized server
- # TODO choose a future safe URL
# TODO customizable server list
# TODO parse ini file in memory
- var url = "https://xymus.net/nitpm/{package_id}.ini"
+ var url = "https://nitlanguage.org/catalog/p/{package_id}.ini"
var ini_path = "/tmp/{package_id}.ini"
if verbose then print "Looking for a package description at '{url}'"
print ini_path.to_path.read_all
end
- var ini = new ConfigTree(ini_path)
+ var ini = new IniFile.from_file(ini_path)
var git_repo = ini["upstream.git"]
if git_repo == null then
print_error "Package description invalid, or it does not declare a Git repository"
end
# Recursive install
- var ini = new ConfigTree(target_dir/"package.ini")
+ var ini = new IniFile.from_file(target_dir/"package.ini")
var import_line = ini["package.import"]
if import_line != null then
install_packages import_line
end
for name in args do
- var target_dir = nitpm_lib_dir / name
+
+ var clean_nitpm_lib_dir = nitpm_lib_dir.simplify_path
+ var target_dir = clean_nitpm_lib_dir / name
+
+ # Check validity of the package to delete
+ target_dir = target_dir.simplify_path
+ var within_dir = target_dir.has_prefix(clean_nitpm_lib_dir + "/") and
+ target_dir.length > clean_nitpm_lib_dir.length + 1
+ var valid_name = name.length > 0 and name.chars.first.is_lower
+ if not valid_name or not within_dir then
+ print_error "Package name '{name}' is invalid"
+ continue
+ end
if not target_dir.file_exists or not target_dir.to_path.is_dir then
print_error "Package not found"
for file in files do
var ini_path = nitpm_lib_dir / file / "package.ini"
if verbose then print "- Reading ini file at {ini_path}"
- var ini = new ConfigTree(ini_path)
+ var ini = new IniFile.from_file(ini_path)
var tags = ini["package.tags"]
name_to_desc[file] = tags
var opts = new OptionContext
# Help option
- var opt_help = new OptionBool("Show this help message", "--help", "-h")
+ var opt_help = new OptionBool("Show help message", "-h", "--help")
# Verbose mode option
- var opt_verbose = new OptionBool("Print more information", "--verbose", "-v")
+ var opt_verbose = new OptionBool("Print more information", "-v", "--verbose")
private fun verbose: Bool do return opt_verbose.value
# All command line actions, mapped to their short `name`