Coder Social home page Coder Social logo

nic's People

Contributors

christophera8 avatar crkatri avatar dhowett avatar duislingr avatar kabiroberai avatar kirb avatar l1ghtmann avatar rpetrich avatar sbingner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

nic's Issues

Perl 5.24> can no longer run nicify.pl

Perl 5.24 or greater can't run nicify.pl as it uses { my $_ = ... } which appears to be deprecated.
Error log:
Can't use global $_ in "my" at theos/bin/nicify.pl line 76, near "my $_ " Can't use global $_ in "my" at /theos/bin/nicify.pl line 77, near "my $_ " Can't use global $_ in "my" at /theos/bin/nicify.pl line 88, near "my $_ "
Current solution is to downgrade to perl 5.22

Add a gitignore when creating projects

Reduce the possibility of newcomers unknowingly committing build artefacts by writing a gitignore while creating a new (non-child) project.

.theos/
packages/

Template improvements

  • Move built-in templates to vendor/templates
  • Support the vendor dir in NIC
  • Set a default TARGET and export it (definitely set the platform, but should we be setting a reasonable initial deploy version?)
  • Use INSTALL_TARGET_PROCESSES instead of after-stage:: install.exec "killall Blah" in tweak.mk

Allow modules to provide templates

It would be quite handy for modules to be able to offer templates to users. This could be done by adding $THEOS/mod/*/templates to the list of template directories which nic uses. Amongst other things, this change would allow modules like Theos Jailed to be cloned directly into $THEOS/mod, making such modules relatively simpler to install.

NIC Improvements

  • require target <target>
  • fragments
    • require instance
  • makefile parsing (for require target, aggregation, and instancing)
  • better error messages

Provide a static description of template requirements.

The current mechanism uses a control file for static info and a control.pl for requesting more information to complete the template. This format works for the command line but it would be complex to implement if we wanted to allow graphical interfaces to interact with NIC to generate projects from these templating system.

In this issue I'd like to propose a significant architectural change that would allow integration with both command line and graphical interfaces alike while slightly expanding the versatility of the NIC templating system.

Example of current architecture (NIC v2):

NIC/control

name "iphone/tweak"
prompt FILTER "MobileSubstrate Bundle filter" "com.apple.springboard"
constrain file "control" to package
constrain "theos" to link_theos

NIC/control.pl

my $default_kill = "SpringBoard";

NIC->variable("KILL_PROCS") = "";

my $kill_apps = NIC->prompt("KILL_APPS", "List of applications to terminate upon installation (space-separated, '-' for none)", {default => $default_kill});
if($kill_apps ne "-") {
	NIC->variable("KILL_PROCS") = "INSTALL_TARGET_PROCESSES = ".$kill_apps."\n";
}

Instead I'd like to propose a YAML file

NIC/control.yml

---
name: tweak
platforms:
  - iphone
constraints:
  control: package
  theos: link_theos
variables:
  - FILTER:
      prompt: "MobileSubstrate Bundle filter"
      default: com.apple.springboard
  - KILL_PROCS:
      prompt: "List of applications to terminate upon installation (space-separated, '-' for none)"
      default: SpringBoard
      cancel: -
      format: "INSTALL_TARGET_PROCESSES = {}"

Under this model, the name from the current model is split into platforms and name, allowing simple filtering. In cases where a template, like the tool one, supports multiple platforms, the user can choose which one to generate for.

Documenting NIC should come first so we can identify the internal/builtin variables and constraints and how they work, plus functionality like ignored variables.

This is by no means the final draft and I'm open to discussions.

NIC: Strip or replace illegal characters in package name

What are the steps to reproduce this issue?

  1. Run NIC
  2. Enter a project name with invalid characters, such as bl_ah

What happens?

dpkg-deb: error: package name has characters that aren't lowercase alphanums or '-+.'

What were you expecting to happen?

Illegal characters are replaced or stripped.

layout/ is not used in submodules

What are the steps to reproduce this issue?

  1. Create a tweak using the default template (iphone/tweak)
  2. Inside the tweak create a Daemon using the default template (iphone/xpc_service)
  3. Create the package to install on device (make package)

What happens?

Now if you unzip the .deb file created, you can see that the .plist file of the Daemon is missing in /Library/LaunchDaemons.
Every resources you add to the Daemon inside the layout folder were not included in the .deb.

What were you expecting to happen?

Find all resources inside the .deb

Any logs, error output, etc?

NO

Any other comments?

NO

What versions of software are you using?

Operating System:
OSX 10.11.6
Xcode 7.3.1

SDK Version:
9.2

Can’t chown files as root:wheel

What are the steps to reproduce this issue?

  1. Create a new project using the NIC "iPhone XPC service" template.
  2. Compile
  3. Notice that the launch daemon file is not chown'd properly. The "after-XXX-stage::" step is not executed.

What happens?

File isn't chown'd.

What were you expecting to happen?

File set to root:wheel.

What versions of software are you using?

Operating System: 10.11

Toolchain Version: Latest on git.

SDK Version: 9.3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.