57 lines
1.3 KiB
Plaintext
57 lines
1.3 KiB
Plaintext
// Shared test/bench infrastructure
|
|
var fd = use('fd')
|
|
var pkg = use('package')
|
|
|
|
// Check if current directory is a valid cell package
|
|
function is_valid_package(dir) {
|
|
if (!dir) dir = '.'
|
|
return fd.is_file(dir + '/cell.toml')
|
|
}
|
|
|
|
// Get current package name from cell.toml or null
|
|
function get_current_package_name() {
|
|
if (!is_valid_package('.')) return null
|
|
var pkg_name = 'local'
|
|
var do_load = function() {
|
|
var config = pkg.load_config(null)
|
|
if (config.package) pkg_name = config.package
|
|
} disruption {}
|
|
do_load()
|
|
return pkg_name
|
|
}
|
|
|
|
// Get the directory for a package
|
|
function get_pkg_dir(package_name) {
|
|
if (!package_name) {
|
|
return fd.realpath('.')
|
|
}
|
|
if (starts_with(package_name, '/')) {
|
|
return package_name
|
|
}
|
|
var shop = use('internal/shop')
|
|
return shop.get_package_dir(package_name)
|
|
}
|
|
|
|
// Ensure directory exists
|
|
function ensure_dir(path) {
|
|
if (fd.is_dir(path)) return true
|
|
|
|
var parts = array(path, '/')
|
|
var current = starts_with(path, '/') ? '/' : ''
|
|
for (var i = 0; i < length(parts); i++) {
|
|
if (parts[i] == '') continue
|
|
current += parts[i] + '/'
|
|
if (!fd.is_dir(current)) {
|
|
fd.mkdir(current)
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
return {
|
|
is_valid_package: is_valid_package,
|
|
get_current_package_name: get_current_package_name,
|
|
get_pkg_dir: get_pkg_dir,
|
|
ensure_dir: ensure_dir
|
|
}
|