osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Sharing code between different projects?


On Monday, August 13, 2012 at 7:53:32 PM UTC+3, andrea crotti wrote:
> I am in the situation where I am working on different projects that
> might potentially share a lot of code.
> 
> I started to work on project A, then switched completely to project B
> and in the transiction I copied over a lot of code with the
> corresponding tests, and I started to modify it.
> 
> Now it's time to work again on project A, but I don't want to copy
> things over again.
> 
> I would like to design a simple and nice way to share between projects,
> where the things I want to share are simple but useful things as for
> example:
> 
> class TempDirectory:
>     """Create a temporary directory and cd to it on enter, cd back to
>     the original position and remove it on exit
>     """
>     def __init__(self):
>         self.oldcwd = getcwd()
>         self.temp_dir = mkdtemp()
> 
>     def __enter__(self):
>         logger.debug("create and move to temp directory %s" % self.temp_dir)
>         return self.temp_dir
> 
>     def __exit__(self, type, value, traceback):
>         # I first have to move out
>         chdir(self.oldcwd)
>         logger.debug("removing the temporary directory and go back to
> the original position %s" % self.temp_dir)
>         rmtree(self.temp_dir)
> 
> 
> The problem is that there are functions/classes from many domains, so it
> would not make much sense to create a real project, and the only name I
> could give might be "utils or utilities"..
> 
> In plus the moment the code is shared I must take care of versioning and
> how to link different pieces together (we use perforce by the way).
> 
> If then someone else except me will want to use these functions then of
> course I'll have to be extra careful, designing really good API's and so
> on, so I'm wondering where I should set the trade-off between ability to
> share and burden to maintain..
> 
> Anyone has suggestions/real world experiences about this?

I would try bit:
https://github.com/teambit/bit

Hope it helps.