-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from michaellatman/add-npx-commands
Add NPX commands for installing and listing packages
- Loading branch information
Showing
7 changed files
with
165 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,27 @@ | ||
# mcp-install | ||
# mcp-install | ||
|
||
## Installation | ||
|
||
To install a package using `mcp-get`, run the following command: | ||
|
||
``` | ||
npx @michaellatman/mcp-get install {PACKAGE} | ||
``` | ||
|
||
Replace `{PACKAGE}` with the name of the package you want to install. | ||
|
||
## List Packages | ||
|
||
To list all available packages, run the following command: | ||
|
||
``` | ||
npx @michaellatman/mcp-get ls | ||
``` | ||
|
||
or | ||
|
||
``` | ||
npx @michaellatman/mcp-get list | ||
``` | ||
|
||
This will display a list of all available packages with their details. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"name": "@michaellatman/mcp-get", | ||
"version": "1.0.0", | ||
"description": "A NPX command to install and list packages", | ||
"main": "dist/index.js", | ||
"scripts": { | ||
"build": "tsc", | ||
"start": "node dist/index.js" | ||
}, | ||
"bin": { | ||
"mcp-get": "dist/index.js" | ||
}, | ||
"dependencies": { | ||
"typescript": "^4.0.0" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "^14.0.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
[ | ||
{ | ||
"name": "package1", | ||
"description": "Description for package1", | ||
"vendor": "Vendor1", | ||
"sourceUrl": "http://example.com/package1", | ||
"license": "MIT" | ||
}, | ||
{ | ||
"name": "package2", | ||
"description": "Description for package2", | ||
"vendor": "Vendor2", | ||
"sourceUrl": "http://example.com/package2", | ||
"license": "Apache-2.0" | ||
} | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { exec } from 'child_process'; | ||
import { promisify } from 'util'; | ||
import { readFileSync } from 'fs'; | ||
import { join } from 'path'; | ||
|
||
const execAsync = promisify(exec); | ||
|
||
async function getCurrentVersion(): Promise<string> { | ||
const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8')); | ||
return packageJson.version; | ||
} | ||
|
||
async function getLatestVersion(): Promise<string> { | ||
const { stdout } = await execAsync('npm show @michaellatman/mcp-get version'); | ||
return stdout.trim(); | ||
} | ||
|
||
async function updatePackage(): Promise<void> { | ||
const currentVersion = await getCurrentVersion(); | ||
const latestVersion = await getLatestVersion(); | ||
|
||
if (currentVersion !== latestVersion) { | ||
console.log(`Updating @michaellatman/mcp-get from version ${currentVersion} to ${latestVersion}`); | ||
await execAsync('npm install -g @michaellatman/mcp-get'); | ||
console.log('Update complete.'); | ||
} else { | ||
console.log('@michaellatman/mcp-get is already up to date.'); | ||
} | ||
} | ||
|
||
export { updatePackage }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import { install } from './install'; | ||
import { list } from './list'; | ||
|
||
const args = process.argv.slice(2); | ||
const command = args[0]; | ||
|
||
switch (command) { | ||
case 'install': | ||
const packageName = args[1]; | ||
if (!packageName) { | ||
console.error('Please provide a package name.'); | ||
process.exit(1); | ||
} | ||
install(packageName); | ||
break; | ||
case 'ls': | ||
case 'list': | ||
list(); | ||
break; | ||
default: | ||
console.error(`Unknown command: ${command}`); | ||
process.exit(1); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import * as fs from 'fs'; | ||
import * as path from 'path'; | ||
|
||
interface Package { | ||
name: string; | ||
description: string; | ||
vendor: string; | ||
sourceUrl: string; | ||
license: string; | ||
} | ||
|
||
const packageListPath = path.join(__dirname, '../packages/package-list.json'); | ||
|
||
export function install(packageName: string): void { | ||
const packageList: Package[] = JSON.parse(fs.readFileSync(packageListPath, 'utf-8')); | ||
|
||
const pkg = packageList.find(p => p.name === packageName); | ||
if (!pkg) { | ||
console.error(`Package ${packageName} not found.`); | ||
process.exit(1); | ||
} | ||
|
||
console.log(`Installing package: ${pkg.name}`); | ||
console.log(`Description: ${pkg.description}`); | ||
console.log(`Vendor: ${pkg.vendor}`); | ||
console.log(`Source URL: ${pkg.sourceUrl}`); | ||
console.log(`License: ${pkg.license}`); | ||
|
||
// Here you can add the logic to download and install the package from the sourceUrl | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import * as fs from 'fs'; | ||
import * as path from 'path'; | ||
|
||
const packageListPath = path.join(__dirname, '../packages/package-list.json'); | ||
|
||
export function list() { | ||
fs.readFile(packageListPath, 'utf8', (err, data) => { | ||
if (err) { | ||
console.error('Error reading package list:', err); | ||
process.exit(1); | ||
} | ||
|
||
const packages = JSON.parse(data); | ||
console.log('Available packages:'); | ||
packages.forEach((pkg: any) => { | ||
console.log(`- ${pkg.name}: ${pkg.description} (Vendor: ${pkg.vendor}, License: ${pkg.license})`); | ||
}); | ||
}); | ||
} |