{"id":"metatablecat/nekotool","name":"nekotool","scope":"metatablecat","platform":"roblox","description":"Streamlined service bootstrapper for any realm","version":"0.1.2","latest":"0.1.2","versions":["0.1.0-rc1","0.1.0","0.1.1","0.1.2-a","0.1.2"],"license":"Apache-2.0","licenseRating":"safe","licenseCaveats":["Modified files must carry a notice of changes. If the package ships a NOTICE file, its attributions must be preserved.","The package archive does not include its license text; the license is declared in its manifest metadata."],"licenseVerified":false,"dependencies":{},"integrity":"baf15df2fa7f9c0e1a91528d747e0b92554f3a3246d54dfd8df6499fdae053aa","likes":0,"downloads":0,"install":"forest install metatablecat/nekotool","url":"https://forest.dev/p/roblox/metatablecat/nekotool","files":"https://api.forest.dev/ai/package/roblox/metatablecat/nekotool/files","readme":"# Nekotool\r\n\r\nService bootstrapper for any realm!\r\n\r\nNekotool provides a bootstrapper for games that gives you asynchronous services\r\nthat work together to provide a streamlined development experience!\r\n\r\n# Installation\r\n\r\nNekotool expects itself to be in ReplicatedStorage.\r\nYou need to do some setup before you're able to fully utilise this library.\r\n\r\nIt expects there to be a Config module in a few places depending on where you're\r\nloading this from:\r\n\r\n* If you're using this from a plugin, you just need to provide the `Nekotool.config`\r\n\tat your project root\r\n* If you're using this in a game, you need to provide the config file in two locations\r\n\t* For the server, this'll be ServerStorage\r\n\t* For the client, this'll be ReplicatedStorage\r\n\r\n> Game support is not fully functional yet as the loader doesn't have RunContext\r\n> tags set, this will be fixed within the first release\r\n\r\nA reference module is this, which was used for Dropper (not open sourcing this)\r\n\r\n```lua\r\nreturn {\r\n\tName = \"Dropper\",\r\n\tSourceFolder = script.Parent.Src,\r\n\t-- EntryPoint = -- point this to a module if you want that to load as your entry point\r\n\tCustomServices = { script.Parent.MCGPluginServices },\r\n\t\r\n\tServices = {\r\n\t\tMCGPluginServices = {\r\n\t\t\tToolbarService = {\r\n\t\t\t\tEnabled = true,\r\n\t\t\t\tUseTranslatorService = true,\r\n\t\t\t},\r\n\r\n\t\t\tTranslatorService = {\r\n\t\t\t\tEnabled = true,\r\n\t\t\t\tTranslations = script.Parent.Src.AppTranslations\r\n\t\t\t},\r\n\r\n\t\t\tForms = {\r\n\t\t\t\tEnabled = true,\r\n\t\t\t\tFormItems = {\r\n\t\t\t\t\tscript.Parent.Src.Forms.DropperMainView\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\r\n\t\t\tStylingService = {\r\n\t\t\t\tEnabled = true,\r\n\t\t\t\tEnableBaseStyleSheet = true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n```\r\n\r\nThis module is strictly validated.\r\n\r\nThis library is available on Wally if you'd prefer to install it that way.\r\n\r\n> Do not use the `0.1.0` release for game projects, the runtime will not work\r\n\r\n# Usage\r\n\r\nNekotool defines an entry point module, which is generally structured like this:\r\n\r\n```lua\r\nlocal ReplicatedStorage = game:GetService(\"ReplicatedStorage\")\r\nlocal Nekotool = require(ReplicatedStorage.Packages.Nekotool)\r\n\r\nreturn Nekotool.extend(function(program)\r\n  program.Init(function()\r\n\t  print(\"Hello Nekotool!\")\r\n\tend)\r\nend)\r\n```","readmeBorrowedFrom":{"version":"0.1.1","source":"wally"},"readmeTruncated":false}