Skip to content

Commit

Permalink
Python packaging data
Browse files Browse the repository at this point in the history
  • Loading branch information
CodeMouse92 committed Dec 28, 2019
1 parent 1b70ada commit 7faec56
Show file tree
Hide file tree
Showing 5 changed files with 165 additions and 6 deletions.
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include README.md LICENSE timecard/resources/*
54 changes: 48 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,56 @@
# Timecard

Track time spent.
Timecard allows you to track how much time you spend on tasks.
It offers a clean, responsive one-window interface that allows you to
quickly configure your time tracking, and then hides away in the system tray
until you need it again.

## Features

* Start, pause, and stop time tracking.
* Add activity notes.
* System tray.
* Start and pause time tracking from application window or system tray.
* Stop timer and save to log with activity notes.
* View, sort, and edit time log entries.
* Customizable time log path.
* Hides to system tray.
* Quit protection helps prevent accidentally closing while tracking time.

## Usage

Using Timecard is simple!

1. Press "Start" to start tracking time.
2. Press "Stop" and "Confirm Stop" to stop your running timer.
3. Enter activity notes for your session in "WHat are you doing?"
4. Press "Save" to save the time log entry.

If you close the window, Timecard will stay running in the system tray.
Click the system tray icon and press "Show/Hide Window" to restore the
window.

To quit, press the Quit button on the lower-right corner of the window,
and then press "Quit" at the prompt. If there is no time running or pending
save, you can also click "Quit" from the system tray icon menu.

## Future Features

* Pomodoro reminders.
* Alarms.
* Pomodoro features.
* Alarms and reminders.

## History

Timecard 1.0 was the first application ever released by developer and author
Jason C. McDonald, built in Visual Basic .NET 2010, and released through
the newly founded MousePaw Games.

This is a resurrection of that project. It offers the same core functionality
as the original, but in an improved interface. Unlike its predecessor,
Timecard 2.0 is portable and completely open source.

## Contributing

Bug reports and pull requests are welcome via
[GitHub](https://github.com/codemouse92/timecard)!

## License

Timecard 2.0 is licensed under the BSD-3-Clause license (see `LICENSE`).
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PySide2 >= 5.14.0
112 changes: 112 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#!/usr/bin/env python3

# Based on https://github.com/navdeep-G/setup.py/blob/master/setup.py

import io
import os
import sys
from shutil import rmtree

from setuptools import find_packages, setup, Command

# Package meta-data
NAME = 'Timecard'
VERSION = '2.0.0'
DESCRIPTION = 'Application for tracking time spent.'
AUTHOR = 'Jason C. McDonald'
EMAIL = '[email protected]'
URL = 'https://github.com/codeouse92/timecard'

REQUIRES_PYTHON = '>=3.8.0'

REQUIRED = ['PySide2 >= 5.14.0']

here = os.path.abspath(os.path.dirname(__file__))

# Import the README and use it as the long-description.
# Note: this will only work if 'README.md' is present in your MANIFEST.in file!
try:
with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
long_description = '\n' + f.read()
except FileNotFoundError:
long_description = DESCRIPTION

# Load the package's __version__.py module as a dictionary
about = {}
if not VERSION:
project_slug = NAME.lower().replace("-", "_").replace(" ", "_")
with open(os.path.join(here, project_slug, '__version__.py')) as f:
exec(f.read(), about)
else:
about['__version__'] = VERSION

class UploadCommand(Command):
"""Support setup.py upload."""

description = 'Build and publish the package.'
user_options = []

@staticmethod
def status(s):
"""Prints things in bold."""
print('\033[1m{0}\033[0m'.format(s))

def initialize_options(self):
pass

def finalize_options(self):
pass

def run(self):
try:
self.status('Removing previous builds…')
rmtree(os.path.join(here, 'dist'))
except OSError:
pass

self.status('Building Source and Wheel (universal) distribution…')
os.system('{0} setup.py sdist bdist_wheel --universal'.format(sys.executable))

self.status('Uploading the package to PyPI via Twine…')
os.system('twine upload dist/*')

self.status('Pushing git tags…')
os.system('git tag v{0}'.format(about['__version__']))
os.system('git push --tags')

sys.exit()


# Where the magic happens:
setup(
name=NAME,
version=about['__version__'],
description=DESCRIPTION,
long_description=long_description,
long_description_content_type='text/markdown',
author=AUTHOR,
author_email=EMAIL,
python_requires=REQUIRES_PYTHON,
url=URL,
packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),
install_requires=REQUIRED,
include_package_data=True,
license='BSD-3-Clause',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: X11 Applications :: Qt',
'Intended Audience :: End Users/Desktop',
'License :: OSI Approved :: BSD License',
'Natural Language :: English',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: Implementation :: CPython',
'Topic :: Office/Business'
],
# $ setup.py publish support.
cmdclass={
'upload': UploadCommand,
},
)
3 changes: 3 additions & 0 deletions timecard/interface/__version__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
VERSION = (2, 0, 0)

__version__ = ".".join(map(str, VERSION))

0 comments on commit 7faec56

Please sign in to comment.