Giter Site home page Giter Site logo

margarita's Introduction

Margarita

Margarita is a web interface to reposado the Apple Software Update replication and catalog management tool. While the reposado command line administration tools work great for folks who are comfortable in that environment something a little more accesible might be desired.

Margarita attempts to be an easy to use and quick interface to list or delist update products in branch catalogs per the usual reposado catalog management concepts.

Screenshot

Requirements

Margarita is based on reposado and Flask. Flask is a Python web framework. These need to be installed for Margarita to work correctly.

reposado

See the reposado project for how to install and configure it. It needs to be setup and configured with at least Apple's software update catalogs initially synced.

Note: Reposado may be installed either via setup.py/setuptools or simply run from the code files (either by downloading and extracting the files or by cloning the repository, etc.). Running from the code files is the documented way to run reposado. It is important to know in which way reposado is installed as Margarita needs to reference the location of the reposado library files which are located wherever reposado is installed. See below on installation for details on setup. Thanks to timsutton on issue #1 for clarifying this.

Flask

easy_install flask

Or

pip install flask

If you prefer to install into a Python virtualenv that works as well.

JSON (for Python installations older than 2.6)

Note also that Margarita uses the simplejson/json Python modules for it's Ajax calls. If running an older version of Python (say, version 2.5 on a stock Mac OS X 10.5 computer), then one will also have to install simplejson:

easy_install simplejson

Or

pip install simplejson

Installation

  1. Get Margarita source into a directory. Clone the repository or download and extract the files.
  2. Change directory into this location.
  3. If reposado is running from code per the documented installation instructions (and not installed into site-packages via easy_install/setup.py) then one needs to create a symlink to the reposadolib directory in order for Margarita to find the reposado common libraries.
  4. Create a symlink to the reposado configuration file. This is needed because the reposado libraries reference the config file from the executing script's directory. In Margarita's case this is Margarita's source directory.

Create symlinks:

cd /path/to/margarita-install

# may be optional depending on reposado installation
ln -s /path/to/reposado-git-clone/code/reposadolib .

ln -s /path/to/reposado-git-clone/code/preferences.plist .

Usage

Once the requirements and installation are taken care of one may simply launch the margarita.py script:

python margarita.py

This will launch a Flask web server hosting the project. Visit the web page at the listened address, by default the host's IP address on port 8089. To change those defaults:

python margarita.py -p 5000 -b 192.168.1.2 -d

Which would listen on port 5000, bind to IP 192.168.1.2 (by default it listens on all interfaces and IP addresses), and enable debug mode.

Note: Margarita must have permission to the reposado repository in order to effect any changes. This may mean you need to run margarita as a different user:

sudo -u _www python margarita.py

Automatic Startup

launchd

Margarita can be started automatically as part of launchd. Included is a launchd.plist file (originally supplied by stazeii in issue #2 - thanks!). It may need to be modified to fit your environment, installation locations, user specifications, etc.

  1. Copy plist file to /Library/LaunchDaemons/
  2. Modify the plist to specify installation directory (namely the second item of the ProgramArguments key) and any other locations or modifications.
  3. Start up the plist file sudo launchctl load -w /Library/LaunchDaemons/com.github.jessepeterson.margarita.plist

Linux sysv startup

Other web servers

In the documentation above Margarita runs in the "development" web server built into Flask. This may not be ideal in some situations and there are some alternatives for running in a more "production"-ready webservers. Joe Wollard has an excellent article describing how to setup Margarita using mod_wsgi on Linux using WSGI:

Setting up on Linux

Helpful guides written by others:

margarita's People

Contributors

brandonweeks avatar gregneagle avatar jessepeterson avatar magervalp avatar mkuron avatar mscottblake avatar neilmartin83 avatar poundbangbash avatar sheagcraig avatar

Watchers

 avatar  avatar

Forkers

hejamu

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.