New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

8pack

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

8pack

8pack ====================

  • 0.2.0
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

8pack

Utility that injects modular Lua source into a PICO-8 project.

Installation

npm install 8pack -g

Examples

Create sample.lua.p8 from sample.lua using newest PICO-8 template

8pack tests/sample.lua

Inject sample.lua source into foo.p8. Will overwrite foo.p8 if already exists.

8pack tests/sample.lua foo.p8  

Watch /tests/sample.lua for changes and overwrite to /tests/sample.lua.p8

8pack /tests/sample.lua -w  

Write /tests/sample.lua source to /tests/foo.p8 using PICO-8 0.1.10c template

8pack tests/sample.lua /tests/foo.p8 --template 0.1.10c

Modules

Lua modules can be imported via require('./libs/lib') and will be injected to the top of the p8 file as global variables. Each module must return a table, variable or a function. Use node.js style path prefixes to access parent directories: require('../lib')

main.lua:

local liba = require('./liba');

function _init()
    state = {
        hi = "hello world",
        i = 0,
        someFunct = function()
            return 1
        end,
        someOtherFunct = function()
            return 0
        end
    }
end

function _update60()
    state.i = state.i + rnd(liba.iterator);
end

function _draw()
    cls();
    print(liba.foo() .. ' ' .. state.i, 0, 116, 7);
end

./liba.lua module:

local lib = {
    foo = function()
        return 'hello world'
    end,
}
lib.iterator = 1

return lib;

Each injection is instantiated as a new function in pico8 code thus no code can be shared between modules. As a workaround 8pack creates a globals table as the topmost variable inside the project which can be accessed from every module.

./helpers.lua module:

local helpers = {
    setLevel = function(level)
        globals.level = level
    end,
}

return lib;

./game.lua module:

return {
   nextLevel = function() 
     globals.level =  globals.level+1
     return globals.level
   end
} 

JetBrains Watcher Arguments

Install 8pack globally and add 8pack bin as watcher with following arguments for on-the-fly injection

$ProjectFileDir$/projectroot.lua $ProjectFileDir$/project.p8

e.g. for Lua watcher in PhpStorm 2017.3 on Windows 10 (I'm using the official Lua plugin) Screenshot

ToDos

  • Circular dependancy checks
  • Module order checks
  • Prevent pedundant imports
  • Honor token limits
  • Compress code

FAQs

Package last updated on 17 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc