Skip to content

Commit 843e17e

Browse files
aminyasadick254
authored andcommitted
detect symbolic link packages
* detect symbolic link packages
1 parent 57842fb commit 843e17e

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "package-symlinked",
3+
"version": "0.1.0"
4+
}

spec/package-manager-spec.js

+22
Original file line numberDiff line numberDiff line change
@@ -1890,4 +1890,26 @@ describe('PackageManager', () => {
18901890
});
18911891
});
18921892
});
1893+
1894+
describe('::getAvailablePackageNames', () => {
1895+
it('detects a symlinked package', () => {
1896+
const packageSymLinkedSource = path.join(
1897+
__dirname,
1898+
'fixtures',
1899+
'packages',
1900+
'folder',
1901+
'package-symlinked'
1902+
);
1903+
const destination = path.join(
1904+
atom.packages.getPackageDirPaths()[0],
1905+
'package-symlinked'
1906+
);
1907+
if (!fs.isDirectorySync(destination)) {
1908+
fs.symlinkSync(packageSymLinkedSource, destination, 'junction');
1909+
}
1910+
const availablePackages = atom.packages.getAvailablePackageNames();
1911+
expect(availablePackages.includes('package-symlinked')).toBe(true);
1912+
fs.removeSync(destination);
1913+
});
1914+
});
18931915
});

src/package-manager.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -419,9 +419,16 @@ module.exports = class PackageManager {
419419

420420
for (const packageDirPath of this.packageDirPaths) {
421421
if (fs.isDirectorySync(packageDirPath)) {
422+
// checks for directories.
423+
// dirent is faster, but for checking symbolic link we need stat.
422424
const packageNames = fs
423425
.readdirSync(packageDirPath, { withFileTypes: true })
424-
.filter(dirent => dirent.isDirectory())
426+
.filter(
427+
dirent =>
428+
dirent.isDirectory() ||
429+
(dirent.isSymbolicLink() &&
430+
fs.isDirectorySync(path.join(packageDirPath, dirent.name)))
431+
)
425432
.map(dirent => dirent.name);
426433

427434
for (const packageName of packageNames) {

0 commit comments

Comments
 (0)