def run_cli(): global filter global sorting argparser = ArgumentParser() argparser.add_argument("report", action="store") argparser.add_argument("--version", action="version", version=get_version()) argparser.add_argument("--filename", action="store", nargs=1) for flag in Filter.flags: argparser.add_argument("--%s" % flag.name, nargs=flag.args) argparser.add_argument("--sort", nargs=1) argparser.add_argument("--sortb", nargs=1) argparser.add_argument("patterns", metavar="PATTERN", type=str, nargs="*") args = argparser.parse_args() report_factory = reports.get(args.report) if report_factory is None: raise Exception("no such report " + args.report) if args.patterns: pattern_parser = PatternParser(args.patterns) filter &= pattern_parser.parse_filter() filename = args.filename and args.filename[0] or None if filename is None: filename = os.environ.get("PLEDGER") if filename is None: sys.stderr.write("No ledger specified\n") sys.exit(1) ledger = parser.parse_ledger(filename) for flag in Filter.flags: parameters = getattr(args, flag.name) if parameters: f = flag.filter.parse(parser, *parameters) if f: filter &= f if args.sort: sorting = ExpressionSorting(parser, *args.sort) elif args.sortb: sorting = ~ExpressionSorting(parser, *args.sortb) report = report_factory(ledger, rules, filter, sorting) return template(report, output)
# copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from setuptools import setup, find_packages from pledger.version import get_version setup(name="pledger", version=get_version(), description="Command line accounting tool and library", author="Paolo Capriotti", author_email="*****@*****.**", url="https://github.com/pcapriotti/pledger", packages=find_packages(), test_suite='nose.collector', tests_require=['nose', 'mock'], entry_points={ 'console_scripts': [ 'plg = pledger.cli:run_cli' ] }, license="MIT")