[RPM] Roblox Package Manager

[I discontinued this project long ago, just forgot to post about it. It will no longer be updated.]

Roblox Package Manager

Roblox Package Manager [RPM] is a package system that allows you to easily download and publish packages to and from an immense workshop of open-source packages!

DISCLAIMER:
I am NOT responsible for any malicious code that you may insert into your game! I try my best to moderate the packages, but I am only one person so it takes time for me to delete malicious packages!

Links

Roblox plugin: [RPM] Roblox Package Manager - Roblox
Github Page: Roblox Package Manager | Roblox-RPM (madonox.github.io)

Creating a package

In order to create a package, you must first install the DemoPackage. This can be done by opening the plugin, going to Install Package, and entering in DemoPackage.
Once you’ve installed the package, you may begin editing it as you like!

package.rpm file:
The package.rpm file is basically your package’s config file. While the file is Work In Progress, you can change properties in there such as package name.
NOTE: package name is what your package will be called when published!

return {
	["packageName"] = "DemoPackage";
	["dependencies"] = {};
}

Upcoming features:

  • Ability to edit pre-existing packages.
  • Better data upload methods.
  • Bug fixes.
  • Optimizations.
  • Possible malicious code filter.
  • And much more!

NOTICE: This plugin is brand new! Please expect their to be some bugs!

Latest update:

  • Support for individual servers!
  • Ability to create Server, Module, and Local scripts! Please note: local scripts are still buggy, there’s a chance the plugin will make them into server scripts instead.

PSA: All accounts created before 10/9/2021 were deleted. This is because I have created a new account manager, which will help greatly improve the issues seen in the past.

It is highly advised to check for updates often, as there will most likely be major bug fixes coming soon, as well as automatically downloading certain upload files, such as the package uploader.

11 Likes

Interesting, I might use this, thanks for the resource, though is there a list of current packages on this?

Yes, the list is visible within the plugin. The list automatically updates, but if you want the raw URL it’s https://RPMServiceProvider.madonox.repl.co/packageList
(And yeah, I’m using Repl.It and uptime robot cause I don’t feel like setting this up on heroku :man_shrugging:)

1 Like

Good >:C

repl.it is the best.

Also, when packages are uploaded, are they first moderated or published instantly?
(and how do you upload packages?)

And just a note, repl databases have incredibly low data limits… If I remember correctly, it’s around 50mb. How will you get around this once this expands and gets more packages? Personally, this limit has never been an issue for me.

If you’re not storing sensitive information, I recommend using a JSON file or so to avoid the 50mb limit
https://docs.replit.com/hosting/database-faq:

The limits are currently: 50 MB per database (sum of keys and values) 5,000 keys per database. 1000 bytes per key.

Looking through your code, on line 29:

app.get('/',function(req,res){
  res.send("Roblox Package Manager\nDatabase storage page.");
});

the \n does absolutely nothing. Recommend replacing it with <br/> instead.

Just a side note, don’t console.log any sensitive info because it’s public (https://rpmserviceprovider.madonox.repl.co/__logs)

I also recommend changing this to using cookies instead of what you’ve done here for extra security, but it’s your choice.

app.get(adminTerminalCode+'/deleteEntry/:key',function(req,res){
  db.get(req.params.key).then(value=>{
    if (value != null) {
      db.delete(req.params.key).then(() => {
      res.send("Request handled, key deleted: "+req.params.key);
     });
    } else {
      res.send("Key not found, did not delete anything.")
    };
  });
});

The UI is also not polished
image
image

Other than that, it seems good!

Also, if you need help with this project, I can help! Just notify me.
I’mma start making a super cool package now :slight_smile: (can you make it show who made the package while uploading? like “creator”: “blaster_202”

People won’t know who made a package otherwise!

1 Like

Packages are uploaded instantly, but I am trying my best to implement a moderation system. Additionally, I cannot fully rely on package creators as someone could upload a package under another user’s name and put inappropriate content inside of it. While I don’t have a sort of account system, that’s one way of working around it so stay tuned for updates!

EDIT: If you want you could just put your username inside of the package name.

1 Like

Alright. I was actually wondering if we could modify package.rpm

Also, will it still work if I remove the Modules folder?

1 Like

You can modify package.rpm, and I am gonna request you keep the module folder as the current encoding system is quite sensitive.

1 Like

Got it! Can I add more folders to the project though?

Also, how can I update my package after publishing it?
Will it just post a new copy?

1 Like

I should really mention this is in a very early release, new folders will not yet be detected as the encoder is quite buggy. I plan to update this soon, additionally, you can’t currently modify packages as there is no way to validate the package owner.

1 Like

time to reformat my package :frowning:

1 Like

Want me to help you script this stuff? It’ll be a fun project!

1 Like

I just published my package but when I try to install it I get this:
RobloxPackageManager.Modules.PackageInstaller:7: attempt to call a nil value

I only have a Modules folder with 2 scripts in it (core and admincommands)
and then in the main folder I have Init, Main, package.rpm and a disabled Example script…

Any idea why this is happening?
(also when I looked at the source to see where the issue was, there was no PackageInstaller??? Only PackageList)

Just updated the plugin… Nice the icon is big now (issue is still occuring)

1 Like

When you looked into the Source and saw only PackageList, that is due to the automatic update feature I just rolled out. The plugin will now automatically use the latest version of the following modules: encode, PackageInstaller, Publish.
I will look into the error shortly, so stay tuned!

1 Like

The issue was found, and I am working quite hard to fix it. Currently, the system is proceeding before the full script is “downloaded” from the server.

When trying to publish, I get this:

Source is not a valid member of Folder "ServerScriptService.RPMPackages.Libful.Modules"
(tried to upload an image but it was stuck at 100% uploading)

1 Like

Is there a folder within the Modules folder, because that will be causing an issue.

1 Like

image
No, only two scripts.

1 Like

What advantage does this have over other standard tools, like npm and Rojo?

1 Like

This is made simply as a package manager for Roblox, it allows you to download Lua packages directly into your Roblox game. Additionally, it really isn’t anything like Rojo, as Rojo offers something different from this.

1 Like

Additionally, would you mind telling me what line it errored at?

1 Like